这是我做了很多遍,参考很多文章得到的,大部分是转载"小黄鸡 1992"这个博主的,也非常感谢这位博主,我把我整理的和这位博主整理的结合了起来,为了便于大家参考和学习,我已经把每一步都整理出来了,步骤和提示都很清晰。
后续文档有什么问题那个地方写错了,大家都可以提出来。
转载:@小黄鸡 1992 https://blog.csdn.net/qq_20143059/article/details/120073813
swapoff -a //关闭swap setenforce 0 //临时关闭selinux
每台机器的ip和uuid不能一样
cat /sys/class/dmi/id/product_uuid //每台机器的uuid不能相同 ifconfig -a //ip不能相同2.开放端口
协议 方向 端口范围 作用 使用者 TCP 入站 6443 Kubernetes API服务器 所有组件 TCP 入站 2379-2380 etcd 服务器客户端API Kube-apiserver,etcd TCP 入站 10250 Kubelet APT Kubelet自身,控制平面组件 TCP 入站 10251 Kube-scheduler Kube-scheduler自身 TCP 入站 10252 Kube-controller-manager Kube-controller-manager自身 TCP 入站 8080 kubelet Kubelet自身 TCP 入站 30000-32767 Node Port服务器 所有组件
3.允许iptables检查桥接流量端口号一定要安排明白!!!!否者会出现类似dial tcp 10.96.0.1:443: connect: no route to
host错误,如果测试环境一直弄不好,可以关闭防火墙。ps:及其不建议。
cat < cat < sudo sysctl --system 初始化二、安装 1.安装kubeadm、kubelet、kubectl添加镜像 cat <2. 安装插件 yum -y install socat conntrack-tools3. 部署docker在服务器上准备在线镜像源,然后添加docker的镜像源,如果之前安装过需要先卸载。
#安装依赖包 [root@docker ~]# yum install -y yum-utils device-mapper-persistent-data lvm2 #添加华为云的docker镜像地址 [root@docker ~]# yum-config-manager --add-repo https://repo.huaweicloud.com/docker-ce/linux/centos/docker-ce.repo 更新缓存,只处理新添加的yum源缓存 [root@docker ~]# yum makecache fast #安装docker,默认安装最新版本 [root@docker ~]# yum -y install docker-ce #查看安装docker版本 [root@docker ~]# docker --version(或者使用docker version) Docker version 20.10.7, build f0df350 [root@docker ~]# systemctl start docker4. 修改docker组件为systemdsudo mkdir /etc/docker cat <5. k8s拉取镜像 先查看要拉取的镜像
kubeadm config images list k8s.gcr.io/kube-apiserver:v1.22.2 k8s.gcr.io/kube-controller-manager:v1.22.2 k8s.gcr.io/kube-scheduler:v1.22.2 k8s.gcr.io/kube-proxy:v1.22.2 k8s.gcr.io/pause:3.5 k8s.gcr.io/etcd:3.5.0-0 k8s.gcr.io/coredns/coredns:v1.8.4写成脚本,版本根据自己的要求来写
vim k8s.sh #!/bin/bash images=( kube-apiserver:v1.22.2 kube-controller-manager:v1.22.2 kube-scheduler:v1.22.2 kube-proxy:v1.22.2 pause:3.5 etcd:3.5.0-0 coredns:v1.8.4 ) for imageName in ${images[@]} ; do docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/${imageName} docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/${imageName} k8s.gcr.io/${imageName} docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/${imageName} done docker tag k8s.gcr.io/coredns:v1.8.4 k8s.gcr.io/coredns/coredns:v1.8.4 docker rmi k8s.gcr.io/coredns:v1.8.4 给脚本加权限 chmod -R 777 k8s.sh 执行脚本,默默的等待拉取 ./k8s.sh 完了看镜像是否拉取成功 docker images6. 安装启动1. 修改主机映射(根据自己的ip设置)
vi /etc/hosts2. 初始化服务(根据自己的ip和网段和版本来设置)
kubeadm init --apiserver-advertise-address=192.168.2.80 --pod-network-cidr=192.168.0.0/16 --kubernetes-version=v1.22.2 |tee kubeadmin-init.log出现一下字样就是初始化成功
3. 注意
要使非 root 用户可以运行 kubectl,请运行以下命令, 它们也是 kubeadm init 输出的一部分:
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config或者,如果你是root 用户,则可以运行:
export KUBECONFIG=/etc/kubernetes/admin.conf如果想重新初始化,可执行kubeadm reset
直接给它放到环境变量中,以免关闭服务器后重新启动出现访问不到8080端口这个问题。
vim /etc/profile #放到最后面 export KUBECONFIG=/etc/kubernetes/admin.conf7. 安装flannelkubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/documentation/kube-flannel.yml8. 验证如果出现Connecting to raw.githubusercontent.com refused,可以执行vi /etc/hosts
在后面添加199.232.96.133 raw.githubusercontent.com
kubectl get nodes9. 异常处理如果出现ready则代表安装完成,master节点已经注册到了k8s。
如果出现NotReady,可以执行以下语句判断服务器状态。
kubectl get nodes -o yaml以下绿色部分没有问题,红色部分异常message:docker: network plugin is not ready: cni
config uninitialized。如果出现以上问题 查看日志。
journalctl -f -u kubelet.service如果出现以下日志。
“Error validating CNI config list” configList="{n “name”:
“cbr0”,n “cniVersion”: “0.3.1”,n “plugins”: [n {n
“type”: “flannel”,n “delegate”: {n
“hairpinMode”: true,n “isDefaultGateway”: truen }n
},n {n “type”: “portmap”,n “capabilities”: {n
“portMappings”: truen }n }n ]n}n" err="[failed to find
plugin “flannel” in path [/opt/cni/bin] failed to find plugin
“portmap” in path [/opt/cni/bin]]"执行以下命令即可
cat <10.重启后k8s异常处理/etc/yum.repos.d/kubernetes.repo [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 EOF yum clean all yum install kubernetes-cni -y 重启后查看nodes节点,或者其他
[root@kubernetes ~]# kubectl get nodes解决:写到环境里
bash vim /etc/profile 加到最后面 export KUBECONFIG=/etc/kubernetes/admin.conf 重启虚拟机:init 6/reboot再次查看::
[root@kubernetes ~]# kubectl get nodes又有了新的报错:
解决:关闭交换分区,等待一会(在自启容器中)[root@kubernetes ~]# swapoff -a [root@kubernetes ~]# kubectl get nodes NAME STATUS ROLES AGE VERSION kubernetes Ready control-plane,master 19m v1.22.2



