kubeadm安装单master集群

Posted 运维老司机

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了kubeadm安装单master集群相关的知识,希望对你有一定的参考价值。

集群规划

Master192.168.17.51
node1192.168.17.52
node2192.168.17.53
系统版本7.3(原文用的7.8,7.8可以更省事)
内存2GB(原文4GB我电脑配置低用的2GB)
CPU2个

安装所需文件

提取码:1021

环境初始化

  1. 修改主机名
master
hostnamectl set-hostname master && bash

node1
hostnamectl set-hostname node1 && bash

node2
hostnamectl set-hostname node2 && bash
  1. 配置hosts文件 三台机器操作
cat >> /etc/hosts << EOF
192.168.17.51 master
192.168.17.52 node1
192.168.17.53 node2
EOF
  1. 修改内核参数
modprobe br_netfilter  #向内核中加载模块

cat > /etc/sysctl.d/k8s.conf <<EOF
> net.bridge.bridge-nf-call-ip6tables = 1
> net.bridge.bridge-nf-call-iptables = 1
> net.ipv4.ip_forward = 1
> vm.swappiness=0
> EOF

sysctl -p /etc/sysctl.d/k8s.conf  
  1. 配置ipvs
cat > /etc/sysconfig/modules/ipvs.modules << EOF
#!/bin/bash
ipvs_modules="ip_vs ip_vs_lc ip_vs_wlc ip_vs_rr ip_vs_wrr ip_vs_lblc ip_vs_lblcr ip_vs_dh ip_vs_sh ip_vs_nq ip_vs_sed ip_vs_ftp nf_conntrack"
for kernel_module in $ipvs_modules; do
/sbin/modinfo -F filename $kernel_module > /dev/null 2>&1
if [ 0 -eq 0 ]; then
/sbin/modprobe $kernel_module
fi
done
EOF

chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep ip_vs


注:这一块master和node节点是不一样的,没影响。

  1. 安装基础软件包
yum install -y yum-utils device-mapper-persistent-data lvm2 wget net-tools nfs-utils lrzsz gcc gcc-c++ make cmake libxml2-devel openssl-devel curl curl-devel unzip sudo ntp libaio-devel wget vim ncurses-devel autoconf automake zlib-devel python-devel epel-release openssh-server socat ipvsadm conntrack ntpdate telnet ipvsadm
  1. 配置阿里云
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
EOF
  1. 时间同步、关闭防火墙、selinux以及交换分区
systemctl stop firewalld ; systemctl disable firewalld
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
swapoff -a

#一开始关闭失败 是因为虚拟机内一开始用的1GB  后来调成2GB就好了  
crontab -e
* */1 * * * /usr/sbin/ntpdate cn.pool.ntp.org

  1. 安装docker
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install -y docker-ce
mkdir -p /etc/docker
cat > /etc/docker/daemon.json << EOF

"registry-mirrors": ["https://registry.docker-cn.com"],
"exec-opts": ["native.cgroupdriver=systemd"]

EOF
systemctl start docker
systemctl enable docker
  1. 安装K8S软件包
yum install -y kubelet-1.20.6 kubeadm-1.20.6 kubectl-1.20.6
systemctl enable kubelet && systemctl start kubelet
systemctl status kubelet -l

上面可以看到 kubelet 状态不是 running 状态,这个是正常的,不用管,等 k8s 组件起来这个kubelet 就正常了(下阶段操作完成之后)

Kubeadm更新

三台机器操作

  1. 把初始化 k8s 集群需要的离线镜像包上传到master、node1、node2上

docker load -i k8simage-1-20-6.tar.gz  #从k8simage-1-20-6.tar.gz中加载镜像

Master操作

  1. 使用 kubeadm 初始化 k8s 集群
kubeadm init --kubernetes-version=1.20.6 --apiserver-advertise-address=192.168.17.51 --image-repository registry.aliyuncs.com/google_containers --pod-network-cidr=10.244.0.0/16 --ignore-preflight-errors=SystemVerification

初始化报错

解决方法,修复这个问题,你需要通过 centos 更新 systemd:

yum -y upgrade systemd
kubeadm  reset  #清空初始化信息
kubeadm init --kubernetes-version=1.20.6 --apiserver-advertise-address=192.168.17.51 --image-repository registry.aliyuncs.com/google_containers --pod-network-cidr=10.244.0.0/16 --ignore-preflight-errors=SystemVerification#重新注册

显示如下,说明安装完成:

注:下面红框的内容要复制出来 第四步会用到

  1. 配置Kubectl的配置文件config
    相当于对 kubectl 进行授权,这样 kubectl 命令可以使用这个证书对 k8s 集群进行管理
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
kubectl get nodes


此时集群状态还是 NotReady 状态,因为没有安装网络插件。

  1. node加入集群(下面命令就是第二步需要复制的内容)

node1上操作

yum -y upgrade systemd # centos 更新 systemd

kubeadm join 192.168.17.51:6443 --token pk2y5b.pko35qu81s1suqvz \\
    --discovery-token-ca-cert-hash sha256:fb1dcd02aae4cda2ac0f2efeee3a6801d555705458f5d4c09160db27362ee5ba

node2上操作

yum -y upgrade systemd # centos 更新 systemd
kubeadm join 192.168.17.51:6443 --token pk2y5b.pko35qu81s1suqvz \\
    --discovery-token-ca-cert-hash sha256:fb1dcd02aae4cda2ac0f2efeee3a6801d555705458f5d4c09160db27362ee5ba

显示如下,说明安装完成:



master上操作

  1. 添加角色
kubectl get nodes


可以看到node1、node2 的 ROLES 角色为空,就表示这个节点是工作节点。

可以把node1、node2 的 ROLES 变成 work,按照如下方法:

kubectl label node node1 node-role.kubernetes.io/worker=worker
kubectl label node node2 node-role.kubernetes.io/worker=worker

  1. 安装网络插件

上传calico.yaml到master1(百度网盘下载的内容之一)

kubectl apply -f calico.yaml

kubectl get nodes

以上是关于kubeadm安装单master集群的主要内容,如果未能解决你的问题,请参考以下文章

kubeadm安装单master集群

kubeadm搭建高可用K8s集群

kubeadm部署单master Kuberntes集群

K8s单master群集部署--kubeamd方式+harbor仓库

K8s单master群集部署--kubeamd方式+harbor仓库

K8s单master群集部署--kubeamd方式+harbor仓库