参考:
https://www.cnblogs.com/shoufu/p/13047723.html
https://www.cnblogs.com/wml3030/p/15510747.html
https://blog.csdn.net/jiandanfeng2/article/details/120272683























































































































































































































































































































































































































































































































kubeadm 选择了一种方案:































































































































































































































































把 kubelet 直接部署在宿主机上,然后使用容器部署其他的 kubernetes组件
所以,我们使用 kubeadm 安装集群的第一步 就是在所有的机器上手动安装 kubeadm、kubelet 和 kubectl 这三个二进制文件。































































































































































































































































































































































































































































































































安装docker:
curl -sSL https://get.daocloud.io/docker | sh































































































































































































































































设置docker随机启动:systemctl enable docker & systemctl start docker;
打开或新增 /etc/docker/daemon.json, 增加配置: "exec-opts": ["native.cgroupdriver=systemd"]
如果不配置这个会导致后面安装的kubelet服务启动不了,可以通过journalctl -xeu kubelet能看到error信息。































































































































































































































































设置国内docker镜像源:
sudo vi /etc/docker/daemon.json































































































































































































































































将该文件内容替换为网易源。修改后的/etc/docker/daemon.json文件为:































































































































{































































"registry-mirrors": ["http://hub-mirror.c.163.com"]































}















启用 bridge-nf-call-iptables
echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables修改hostname和域名映射,修改hostname需要重启系统。































































































































# 查看当前的hostname
hostname 或hostnamectl
# 修改hostname
hostnamectl set-hostname k8s-master  # master节点的主机名
hostnamectl set-hostname k8s-node1   # node1节点的主机名
# 在两台机器上打开/etc/hosts加入
127.0.0.1 k8s-master kube-apiserver
127.0.0.1 k8s-node1


































































































































开始安装kubernetes


kubernetes版本为1.22.0


配置国内阿里yum源:



[root@ecs-24086574 ~]#  vi /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes Repository
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg































































































































































































































































更新yum软件源缓存































































































































































































































































yum makecache fast































































安装kubelet、kubeadm和kubectl































































































































































































































yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes































































































































启动kubelet服务































































kubeadm将使用kubelet服务以容器的方式部署和启动Kubernetes的主要服务,所以需要先启动kubelet服务。































systemctl enable kubelet & systemctl start kubelet















此时kubelet的状态,还是启动失败,通过journalctl -xeu kubelet能看到error信息,处理方法:
重置未初始化成功的kubeadm配置































































































































echo y|kubeadm reset修改docker,只需在/etc/docker/daemon.json中,添加"exec-opts": ["native.cgroupdriver=systemd"]即可,本文最初的docker配置可供参考。































































修改kubelet:































































































cat > /var/lib/kubelet/config.yaml <重启docker 与 kubelet:































































































































systemctl daemon-reload







systemctl restart docker
systemctl restart kubelet检查 docker info|grep "Cgroup Driver" 是否输出 Cgroup Driver: systemd























































获取配置,拉取相关镜像































拉取默认的配置















kubeadm config print init-defaults > init-config.yaml
1
打开该文件查看,发现配置的镜像仓库如下:































































imageRepository: k8s.gcr.io
1
该镜像仓库如果连不上,可以用国内的镜像代替:imageRepository: registry.aliyuncs.com/google_containers































































打开init-config.yaml,然后进行相应的修改,可以指定kubernetesVersion版本,pod的选址访问等。































kubernetes镜像拉取:















kubeadm config images pull --config=init-config.yaml







运行kubeadm init安装master节点



#kubeadm init --config=init-config.yaml  #采用此方式还需要改advertiseAddress等信息否则会出现以下安装失败,etcd网络问题,故采用以下方式
kubeadm init --apiserver-advertise-address 192.168.0.17 --apiserver-bind-port=6443 --pod-network-cidr=10.244.0.0/16  --service-cidr=10.96.0.0/12 --kubernetes-version=1.22.0 --image-repository registry.aliyuncs.com/google_containers















kubeadm init安装失败后需要重新执行,此时要先执行kubeadm reset命令。







当加入node节点时,需要查看token,可以执行以下指令:



















kubeadm token list















当token过期时,可以创建新的永久token:
[root@k8s-master ~]# kubeadm token create --ttl 0
lo9x0p.jo6ewqccndbf09c5
# 获取ca证书sha256编码hash值
[root@k8s-master ~]# openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
输出:26b6abc3d12b8d290cb3225b3e36b3cd9d450ab452f420c7dbcff88ff7de7fec
# node 节点加入
kubeadm join 36.13.44.35:6443 --token lo9x0p.jo6ewqccndbf09c5 --discovery-token-ca-cert-hash sha256:26b6abc3d12b8d290cb3225b3e36b3cd9d450ab452f420c7dbcff88ff7de7fec







安装node节点











node节点所在的机器也要按照前置环境的步骤走一遍
安装像master那样增加kubernetes的yum源
由于网络问题,也要按照master中的手动来取coredns的方式走一遍
安装kubelet和kubeadm:







yum install kubelet kubeadm --disableexcludes=kubernetes



运行以下命令,并设置开机启动:

systemctl enable docker && systemctl start docker
systemctl enable kubelet && systemctl start kubelet







执行join命令:



# 该命令来自master安装成功后的最后两行信息
kubeadm join 36.13.44.23:6443 --token o5wmao.2q8y1acgxusalh5r --discovery-token-ca-cert-hash sha256:fedb6ae0011242f442e1b4e85fd722311585d633a3b46de22c1482180064d4ae
此时,在master节点上执行kubectl get nodes能看到该node节点表示成功,此时状态还是NOT Ready。