美文网首页K8K8s
kubeadm方式部署k8s集群

kubeadm方式部署k8s集群

作者: Habit_1027 | 来源:发表于2021-05-14 15:56 被阅读0次

    一、系统设置:(所有节点)

        需要配置hosts,方便集群中识别
        vim /etc/hosts
        
        关闭防火墙:
        $ systemctl stop firewalld
        $ systemctl disable firewalld
        
        关闭selinux:
        $ sed -i 's/enforcing/disabled/' /etc/selinux/config 
        $ setenforce 0
        
        关闭swap:
        $ swapoff -a  $ 临时
        $ vim /etc/fstab  $ 永久
        注释此行
        #/dev/mapper/centos-swap swap                    swap    defaults        0 0
        添加主机名与IP对应关系(记得设置主机名):
        $ cat /etc/hosts
        192.168.31.63 k8s-master
        192.168.31.65 k8s-node1
        192.168.31.66 k8s-node2
        
        hostnamectl set-hostname hostname
        
        将桥接的IPv4流量传递到iptables的链:
    $ cat > /etc/sysctl.d/k8s.conf << EOF
    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1
    EOF
     $ sysctl --system
    

    二、安装docker(所有节点)

        $ wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
        $ yum -y install docker-ce-18.06.1.ce-3.el7
        $ systemctl enable docker && systemctl start docker
        $ docker --version
        Docker version 18.06.1-ce, build e68fc7a
    

    三、配置阿里源(所有节点)

     $ 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=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
    

    四、安装kubeadm,kubelet和kubectl (所有节点)

        由于版本更新频繁,这里指定版本号部署
        yum install -y kubelet-1.19.4 kubeadm-1.19.4 kubectl-1.19.4
        systemctl start kubelet && systemctl enable kubelet
        
        注意:systemctl status kubelet 会显示报错,是证书问题,等后面master初始化会解决
    

    五、部署master(在master上执行)

    kubeadm init \
      --apiserver-advertise-address=192.168.31.63 \
      --image-repository registry.aliyuncs.com/google_containers \
      --kubernetes-version v1.19.4 \
      --service-cidr=10.1.0.0/16 \
      --pod-network-cidr=10.244.0.0/16
        
        #--apiserver-advertise-address=  192.168.31.63 \  master的IP
        #--kubernetes-version v1.19.4 \  kubelet版本号
        
        
        由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址。
        
        使用kubectl工具:
        
        mkdir -p $HOME/.kube
        sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
        sudo chown $(id -u):$(id -g) $HOME/.kube/config
        $ kubectl get nodes
    

    六、安装POD网络插件(master上执行)

        cd ~ && mkdir flannel && cd flannel
        curl -O https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml 
    #这个下载不下来的话自己下好传到主机中
        
        修改配置文件kube-flannel.yml:
        此处的ip配置要与上面kubeadm的pod-network一致,如果一致,不用改
          net-conf.json: |
            {
              "Network": "10.244.0.0/16",
              "Backend": {
                "Type": "vxlan"
              }
            }
            
            修改配置文件kube-flannel.yml:
        此处的ip配置要与上面kubeadm的pod-network一致,本来就一致,不用改
          net-conf.json: |
            {
              "Network": "10.244.0.0/16",
              "Backend": {
                "Type": "vxlan"
              }
            }
            
        启动:
        # kubectl apply -f ~/flannel/kube-flannel.yml  #启动完成之后需要等待一会 
        
        [root@k8s-master ~]# kubectl get pods --namespace kube-system
        NAME                                 READY   STATUS    RESTARTS   AGE
        coredns-6d56c8448f-q49qh             1/1     Running   1          20h
        coredns-6d56c8448f-rlkcd             1/1     Running   1          20h
        etcd-k8s-master                      1/1     Running   1          20h
        kube-apiserver-k8s-master            1/1     Running   1          20h
        kube-controller-manager-k8s-master   1/1     Running   1          20h
        kube-flannel-ds-dhq8k                1/1     Running   2          15h
        kube-flannel-ds-t7b65                1/1     Running   1          15h
        kube-flannel-ds-xj52t                1/1     Running   3          4h36m
        kube-proxy-4brpc                     1/1     Running   1          20h
        kube-proxy-4f9wx                     1/1     Running   3          4h36m
        kube-proxy-v2pps                     1/1     Running   2          16h
        kube-scheduler-k8s-master            1/1     Running   1          20h
        
        
        查看:
        # kubectl get pods --namespace kube-system
        # kubectl get service
        # kubectl get svc --namespace kube-system
    

    七、配置node节点加入集群(所有node节点)

    如果报错开启ip转发:
    # sysctl -w net.ipv4.ip_forward=1
    
    
    在所有node节点操作,此命令为初始化master成功后返回的结果
    kubeadm join 192.168.31.63:6443 --token 6ef0x0.nwh9dny9wku2xzfm \
        --discovery-token-ca-cert-hash sha256:f76d30477714743401de40e6856ae51e75f33768f8392bb8e53926927d78065c
        
    ###执行自己的初始化master成功时候的返回结果
    

    八、在master上查看节点情况

    在master上查看节点情况

        [root@k8s-master ~]# kubectl get nodes
        NAME         STATUS   ROLES    AGE    VERSION
        k8s-master   Ready    master   20h    v1.19.4
        k8s-node1    Ready    <none>   16h    v1.19.4
        k8s-node2    Ready    <none>   5h3m   v1.19.4
        
        
        1.各字段含义:
        Name: Pod的名称
        Namespace: Pod的Namespace。
        Image(s): Pod使用的镜像
        Node: Pod所在的Node。
        Start Time: Pod的起始时间
        Labels: Pod的Label。
        Status: Pod的状态。
        Reason: Pod处于当前状态的原因。
        Message: Pod处于当前状态的信息。
        IP: Pod的PodIP
        Replication Controllers: Pod对应的Replication Controller。
        ===============================
        2.Containers:Pod中容器的信息
        Container ID: 容器的ID
        Image: 容器的镜像
        Image ID:镜像的ID
        State: 容器的状态
        Ready: 容器的准备状况(true表示准备就绪)。
        Restart Count: 容器的重启次数统计
        Environment Variables: 容器的环境变量
        Conditions: Pod的条件,包含Pod准备状况(true表示准备就绪)
        Volumes: Pod的数据卷
        Events: 与Pod相关的事件列表
        =====
        生命周期:指的是status通过# kubectl get pod
        生命周期包括:running、Pending、completed、
    

    相关文章

      网友评论

        本文标题:kubeadm方式部署k8s集群

        本文链接:https://www.haomeiwen.com/subject/ndmqjltx.html