注:k8s和docker有对应适配版本,此次安装---docker-20.10.12、kubelet-1.20.5-0、kubeadm-1.20.5-0、kubectl-1.20.5-0
1、安装前环境准备
##关闭防火墙
systemctl stop firewalld
##关闭防火墙开机自启动
systemctl disable firewalld
##关闭selinux
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
##临时关闭selinux,服务器重启失效
setenforce 0
##验证selinux是否关闭,如下图
getenforce
2、安装docker20.10.12-3.el7
###卸载旧docker
yum remove docker docker-client docker-client-latest atest-logrotate docker-logrotate docker-selinux
##安装docker依赖包
yum -y install yum-utils device-mapper-persistent-data lvm2
##下载镜像源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
##刷新yum源
yum makecache fast
##查看可安装docker版本
yum list docker-ce --showduplicates | sort -r
##安装docker-20.10.12
yum -y install docker-ce-20.10.12-3.el7
###启动docker,开启开机自启动
systemctl start docker
systemctl enable docker
##查看docker版本
docker -v
3、安装kubernetes
---设置kubernetes.repo文件
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
# 设置1会报错
repo_gpgcheck=0
# 设置1会校验报错
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
---安装kubelet-1.20.5-0、kubeadm-1.20.5-0、kubectl-1.20.5-0
##查看可安装k8s版本
yum list kubelet --showduplicates | sort -r
###安装kubelet-1.20.5-0、kubeadm-1.20.5-0、kubectl-1.20.5-0
yum -y install kubelet-1.20.5-0 kubeadm-1.20.5-0 kubectl-1.20.5-0
---查看镜像并下载
##查看所需镜像版本
kubeadm config images list
##拉取对应版本镜像,如上V1.20.5
kubeadm config images pull --kubernetes-version v1.20.5 --image-repository registry.aliyuncs.com/google_containers
拉取镜像耗时可能较长:
---刚拉取的镜像和kubeadm config images list查到的镜像名有些不同,需要打tag(不然后续节点Ready会有问题)
[root@node1 ~]# docker tag registry.aliyuncs.com/google_containers/kube-proxy:v1.20.5 k8s.gcr.io/kube-proxy:v1.20.5
[root@node1 ~]# docker tag registry.aliyuncs.com/google_containers/kube-apiserver:v1.20.5 k8s.gcr.io/kube-apiserver:v1.20.5
[root@node1 ~]# docker tag registry.aliyuncs.com/google_containers/kube-controller-manager:v1.20.5 k8s.gcr.io/kube-controller-manager:v1.20.5
[root@node1 ~]# docker tag registry.aliyuncs.com/google_containers/kube-scheduler:v1.20.5 k8s.gcr.io/kube-scheduler:v1.20.5
[root@node1 ~]# docker tag registry.aliyuncs.com/google_containers/etcd:3.4.13-0 k8s.gcr.io/etcd:3.4.13-0
[root@node1 ~]# docker tag registry.aliyuncs.com/google_containers/coredns:1.7.0 k8s.gcr.io/coredns:1.7.0
[root@node1 ~]# docker tag registry.aliyuncs.com/google_containers/pause:3.2 k8s.gcr.io/pause:3.2
---k8s初始化
##kubeadm init
kubeadm init --apiserver-advertise-address=192.168.170.11 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version=v1.20.5 --service-cidr=172.96.0.0/12 --pod-network-cidr=10.244.0.0/16
上述k8s初始化成功,安装成功,会返回kubeadm join命令,其他node节点运行该命令加入集群
-----配置k8s环境变量
##文件赋权
chmod 666 /etc/kubernetes/admin.conf
##k8s环境变量配置
cat > /etc/profile.d/k8s.sh <<EOF
#/bin/bash
export KUBECONFIG=/etc/kubernetes/admin.conf
EOF
##配置环境变量生效
source /etc/profile.d/k8s.sh
-----安装CNI网络插件
###下载calico插件的yaml
wget https://docs.projectcalico.org/manifests/calico.yaml
上述下载可能会报认证问题:
可以web访问上述连接地址,手动复制文件到服务器上(注意文件名保持不变)
---修改calico.yaml文件
下述要和初始化的时候kubeadm init中pod-network-cidr保持一致
--新增自动检测此主机的IPv4地址的方法配置
##应用
kubectl apply -f calico.yaml
上述CNI插件安装完后,查看k8s--master节点状态还是NotReady
重启docker(重启docker,同时会重启docker镜像,k8s重启,刷新状态)
systemctl restart docker
再次查看k8s --master节点状态Ready