kubeadm 一主二从安装文档
环境准备
-
vmbox(开源免费)
-
三台centos虚拟机 (推荐2g2c)
-
两张网卡(一张使用nat模式, 一张HostOnly模式 – 更换网络固定ip地址使用)
修改网卡配置
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static #初始为dhcp,修改为static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=enp0s3
UUID=199cbe78-4384-456c-bc43-a77b869940db
DEVICE=enp0s3
ONBOOT=yes #初始为no,修改成yes
IPADDR=192.168.56.101 #为hostOnly同一网段即可
虚拟机初始化
开始在每台机器上执行下面的命令
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
关闭 selinux
永久关闭
sed -i 's/enforcing/disabled/' /etc/selinux/config
临时关闭
setenforce 0
关闭 swap
临时
swapoff -a
永久关闭
sed -ri 's/.*swap.*/#&/' /etc/fstab
根据规划设置主机名【master 节点上操作】
hostnamectl set-hostname k8smaster
根据规划设置主机名【node1 节点操作】
hostnamectl set-hostname k8snode1
根据规划设置主机名【node2 节点操作】
hostnamectl set-hostname k8snode2
在 master 添加 hosts
cat >> /etc/hosts << EOF
192.168.56.101 k8smaster
192.168.56.102 k8snode1
192.168.56.103 k8snode2
EOF
将桥接的 IPv4 流量传递到 iptables 的链
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
生效
sysctl --system
时间同步
yum install ntpdate -y
ntpdate time.windows.com
安装docker以及kubernetes
首先配置一下 Docker 的阿里 yum 源
cat >/etc/yum.repos.d/docker.repo<<EOF
[docker-ce-edge]
name=Docker CE Edge - x86_64
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/edge
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
EOF
然后 yum 方式安装 docker
yum 安装
yum -y install docker-ce
查看 docker 版本
docker --version
启动 docker
systemctl enable docker
systemctl start docker
配置 docker 的镜像源
cat >> /etc/docker/daemon.json << EOF
{
"registry-mirrors": ["https://17wukhty.mirror.aliyuncs.com"]
}
EOF
然后重启 docker
systemctl daemon-reload
systemctl restart docker
然后我们还需要配置一下 yum 的 k8s 软件源
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
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
安装 kubeadm,kubelet 和 kubectl
由于版本更新频繁,这里指定版本号部署:
安装 kubelet、kubeadm、kubectl,同时指定版本
yum install -y kubelet-1.20.0 kubeadm-1.20.0 kubectl-1.20.0
设置开机启动
systemctl enable kubelet
master 主机
kubeadm init --apiserver-advertise-address=192.168.56.101 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.20.0 --service-cidr=10.96.0.0/12 --pod-network-cidr=172.16.0.0/16
注意: calico默认pod cidr为192.168.0.0/16, flannel默认pod cidr为10.244.0.0/16.
虚拟机cidr和pod cidr不要重复. (发生冲突修改cli之后还需要修改calico.yaml)
#重新打印join命令
kubeadm token create --print-join-command
其他
cni选择calicao
install calicao
kubectl create -f https://projectcalico.docs.tigera.io/v3.18/manifests/calico.yaml
watch kubectl get pods -n calico-system
如果有flannel,则先需要卸载
卸载
第一步,在master节点删除flannel
kubectl delete -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
第二步,在node节点清理flannel网络留下的文件
ifconfig cni0 down
ip link delete cni0
ifconfig flannel.1 down
ip link delete flannel.1
rm -rf /var/lib/cni/
rm -f /etc/cni/net.d/*
注:执行完上面的操作,重启kubelet
双网卡带来的问题
IP_AUTODETECTION_METHOD=interface=eth.* #为网卡名称,这里更改为hostOnly网卡名称
Q.E.D.