K8K8s

kubeadm方式部署k8s集群

2021-05-14  本文已影响0人  Habit_1027

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

    需要配置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、
上一篇下一篇

猜你喜欢

热点阅读