一主两从
192.168.31.200 k8s-master
192.168.31.201 k8s-node1
192.168.31.202 k8s-node2
主节点
2核 4g 20g
从节点
2核 4g 20g
永久关闭selinux
sed -i 's/enforcing/disabled/g' /etc/selinux/config
更改后需重启系统
reboot
systemctl stop firewalld && systemctl disable firewalld
永久关闭swap分区
echo vm.swappiness=0 >> /etc/sysctl.conf && sysctl -p
vim /etc/fstab
注释掉带有swap分区这行
swappiness参数的含义
swappiness=0
修改完毕后需要重启系统
reboot
命令
hostnamectl set-hostname [hostname]
echo "192.168.31.200 k8s-master" >> /etc/hosts && echo "192.168.31.201 k8s-node1" >> /etc/hosts && echo "192.168.31.202 k8s-node2" >> /etc/hosts
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
使配置生效
sysctl --system
cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ntpdate asia.pool.ntp.org
提示是否覆盖选择是
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
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
安装最新版docker engine-community
如果提示接受 GPG 密钥,请选是。
yum install docker-ce docker-ce-cli containerd.io
如果要安装特定版本,可以从存储库中列出可用版本,指定安装
yum list docker-ce --showduplicates | sort -r
指定版本安装方式
该软件包名称是软件包名称(docker-ce)加上版本字符串(第二列),从第一个冒号(:)一直到第一个连字符,并用连字符(-)分隔。例如:docker-ce-20.10.9-3.el7。
yum install docker-ce-20.10.9-3.el7 docker-ce-cli-20.10.9-3.el7 containerd.io
systemctl start docker && systemctl enable docker
vim /etc/docker/daemon.json
内容如下
{
“debug”: true,
“registry-mirrors”: [“https://docker.mirrors.ustc.edu.cn”,“https://registry.cn-hangzhou.aliyuncs.com”],
“exec-opts”: [“native.cgroupdriver=systemd”],
“storage-driver”: “overlay2”
}
启动参数说明,官方文档
https://docs.docker.com/engine/reference/commandline/dockerd/#options
更改后需重启docker
systemctl daemon-reload && systemctl restart docker
yum install -y kubeadm-2.20.2 kubelet-2.20.2 kubectl-2.20.2
kubeadm init \
--apiserver-advertise-address=192.168.31.200 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.20.2 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16
执行完毕后,导入配置
如果是root用户
export KUBECONFIG=/etc/kubernetes/admin.conf
如果是普通用户
mkdir -p $HOME/.kube && sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config && sudo chown $(id -u):$(id -g) $HOME/.kube/config
在master节点init完毕之后会有一行join命令,复制到各个节点去加入即可
kubeadm join 192.168.31.200:6443 --token xtkoy4.s8s8ulu8cve05qvl \
--discovery-token-ca-cert-hash sha256:9f7217cac33ed25549daa998f0bdc3702a63a4d9f7677f3293dd3372c094a43f
https://docs.projectcalico.org/v3.18/manifests/calico.yaml
需要先在浏览器下载,再通过rz上传到虚拟机中
kubectl apply -f calico.yaml
至此k8s集群部署完毕,使用kubectl get nodes可以看到k8s节点状态都是就绪状态