注: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

k8s--单节点部署_k8s

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

k8s--单节点部署_k8s_02

##查看可安装docker版本
yum list docker-ce --showduplicates | sort -r

k8s--单节点部署_k8s_03

##安装docker-20.10.12
yum -y install docker-ce-20.10.12-3.el7

k8s--单节点部署_k8s_04

###启动docker,开启开机自启动
systemctl start docker
systemctl enable docker

##查看docker版本

docker  -v

k8s--单节点部署_k8s_05

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

k8s--单节点部署_k8s_06

###安装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

k8s--单节点部署_k8s_07

##拉取对应版本镜像,如上V1.20.5
kubeadm config images pull --kubernetes-version v1.20.5 --image-repository registry.aliyuncs.com/google_containers

拉取镜像耗时可能较长:

k8s--单节点部署_k8s_08

---刚拉取的镜像和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--单节点部署_k8s_09

上述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

上述下载可能会报认证问题:

k8s--单节点部署_k8s_10

可以web访问上述连接地址,手动复制文件到服务器上(注意文件名保持不变)

k8s--单节点部署_k8s_11

---修改calico.yaml文件

下述要和初始化的时候kubeadm init中pod-network-cidr保持一致

k8s--单节点部署_k8s_12

k8s--单节点部署_k8s_13

--新增自动检测此主机的IPv4地址的方法配置

k8s--单节点部署_k8s_14

##应用
 kubectl apply -f calico.yaml

k8s--单节点部署_k8s_15

上述CNI插件安装完后,查看k8s--master节点状态还是NotReady

重启docker(重启docker,同时会重启docker镜像,k8s重启,刷新状态)

systemctl restart docker

再次查看k8s --master节点状态Ready