CentOS 7.9 环境下搭建k8s集群

今天 8128阅读 0评论

文章目录

    • 一、硬件准备(虚拟主机)
    • 二、环境准备
      • 1、所有机器关闭防火墙
      • 2、所有机器关闭selinux
      • 3、所有机器关闭swap
      • 4、所有机器上添加主机名与ip的对应关系
      • 5、在所有主机上将桥接的ipv4流量传递到iptables的链
      • 三、为所有节点安装docker
      • 四、集群部署
        • 1、为所有节点修改仓库,安装kubeadm、kubelet、kubectl
        • 2、修改docker的配置(所有节点)
        • 3、部署master节点(主节点k8s-master)
          • (1)、遇到报错:
          • (2)、解决办法:
          • 4、按照指示执行:
          • 5、查看kubelet.service状态
          • 6、查看节点状态为notready
          • 7、安装网络插件
          • 8、添加node节点

            一、硬件准备(虚拟主机)

            角色主机名ip地址
            masterk8s-master192.168.112.10
            nodek8s-node1192.168.112.20
            nodek8s-node2192.168.112.30

            CentOS Linux release 7.9.2009 (Core)

            至少2核CPU、3GB以上内存

            使用命令hostnamectl set-hostname临时修改主机名

            二、环境准备

            1、所有机器关闭防火墙

             systemctl stop firewalld	#关闭
             systemctl disable firewalld		#开机不自启
             systemctl status firewalld		#查看状态
            

            CentOS 7.9 环境下搭建k8s集群 第1张

            2、所有机器关闭selinux

             sed -i 's/enforcing/disabled/' /etc/selinux/config 
             setenforce 0
            

            CentOS 7.9 环境下搭建k8s集群 第2张

            3、所有机器关闭swap

             swapoff -a # 临时关闭
             sed -ri 's/.*swap.*/#&/' /etc/fstab  #永久关闭
            

            CentOS 7.9 环境下搭建k8s集群 第3张

            4、所有机器上添加主机名与ip的对应关系

             vim /etc/hosts
             
             127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
             ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
             192.168.112.10 k8s-master
             192.168.112.20 k8s-node1
             192.168.112.30 k8s-node2
            

            CentOS 7.9 环境下搭建k8s集群 第4张

            5、在所有主机上将桥接的ipv4流量传递到iptables的链

              cat > /etc/sysctl.d/k8s.conf 
               "exec-opts": ["native.cgroupdriver=systemd"]
             }
            > EOF
            [root@k8s-master ~]# systemctl daemon-reload
            [root@k8s-master ~]# systemctl restart docker.service
            [root@k8s-master ~]# systemctl restart kubelet.service
            [root@k8s-master ~]# systemctl status kubelet.service
            

            这里从节点的kubelet.service状态报code=exited, status=1/FAILURE是正常的

            3、部署master节点(主节点k8s-master)

            kubeadm init \
            --apiserver-advertise-address=192.168.112.10 \
            --image-repository registry.aliyuncs.com/google_containers \
            --kubernetes-version v1.22.2 \
            --control-plane-endpoint k8s-master \
            --service-cidr=172.16.0.0/16 \
            --pod-network-cidr=10.244.0.0/16
            

            记得保存好这段命令是用于将一个工作节点(worker node)加入到已存在的 Kubernetes 集群中的过程。

            CentOS 7.9 环境下搭建k8s集群 第5张

            (1)、遇到报错:
            Here is one example how you may list all Kubernetes containers running in docker:
                            - 'docker ps -a | grep kube | grep -v pause'
                            Once you have found the failing container, you can inspect its logs with:
                            - 'docker logs CONTAINERID'
            error execution phase wait-control-plane: couldn't initialize a Kubernetes cluster
            To see the stack trace of this error execute with --v=5 or higher
            
            (2)、解决办法:
            rm -rf /etc/containerd/config.toml
            systemctl restart containerd
            

            4、按照指示执行:

            [root@k8s-master ~]# mkdir -p $HOME/.kube
            [root@k8s-master ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
            [root@k8s-master ~]# sudo chown $(id -u):$(id -g) $HOME/.kube/config
            [root@k8s-master ~]# export KUBECONFIG=/etc/kubernetes/admin.conf
            

            5、查看kubelet.service状态

            systemctl status kubelet.service
            

            CentOS 7.9 环境下搭建k8s集群 第6张

            6、查看节点状态为notready

            [root@k8s-master ~]# kubectl get nodes
            NAME         STATUS     ROLES    AGE   VERSION
            k8s-master   NotReady      67s   v1.22.2
            

            CentOS 7.9 环境下搭建k8s集群 第7张

            7、安装网络插件

            官方文档:https://github.com/flannel-io/flannel

            # 最好手动提前拉取所需镜像
            [root@k8s-master ~]# docker pull quay.io/coreos/flannel:v0.14.0
            [root@k8s-master ~]# wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
            [root@k8s-master ~]# kubectl apply -f kube-flannel.yml 
            

            8、添加node节点

            # 为node拉取网络插件镜像
            [root@k8s-node1 ~]# docker pull quay.io/coreos/flannel:v0.14.0
            [root@k8s-node2 ~]# docker pull quay.io/coreos/flannel:v0.14.0
            [root@k8s-node1 ~]# kubeadm join k8s-master:6443 --token byfq2h.myv4dj0yqmmjz6qx \
            >         --discovery-token-ca-cert-hash sha256:f6b364e22cd4e61897a9a58583ae072c5a3724ac14f44319b5f72021614eaadf
            [root@k8s-node2 ~]# kubeadm join k8s-master:6443 --token byfq2h.myv4dj0yqmmjz6qx \
            >         --discovery-token-ca-cert-hash sha256:f6b364e22cd4e61897a9a58583ae072c5a3724ac14f44319b5f72021614eaadf
            

            CentOS 7.9 环境下搭建k8s集群 第8张

            至此一个简单的k8s集群安装完成


免责声明
1、本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明。
2、本网站转载文章仅为传播更多信息之目的,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所
提供信息的准确性及可靠性,但不保证信息的正确性和完整性,且不对因信息的不正确或遗漏导致的任何
损失或损害承担责任。
3、任何透过本网站网页而链接及得到的资讯、产品及服务,本网站概不负责,亦不负任何法律责任。
4、本网站所刊发、转载的文章,其版权均归原作者所有,如其他媒体、网站或个人从本网下载使用,请在
转载有关文章时务必尊重该文章的著作权,保留本网注明的“稿件来源”,并白负版权等法律责任。

手机扫描二维码访问

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
评论列表 (暂无评论,8128人围观)

还没有评论,来说两句吧...

目录[+]