站長資訊網
        最全最豐富的資訊網站

        云主機搭建Kubernetes 1.10集群

        一、基礎環境

        云主機

        云主機搭建Kubernetes 1.10集群

        下載軟件包

        將所有軟件下載至/data目錄,下載地址見文后鏈接。

        master到node做免密認證
        ssh-keygen
        ssh-copy-id root@192.168.1.237
        ssh-copy-id root@192.168.1.100
        ssh-copy-id root@192.168.1.188

        設定主機名與host文件
        # 分別設定node與master的主機名
        hostnamectl set-hostname master
        exec bash

        # 同步所有主機的hosts文件
        vim /etc/hosts
        192.168.1.78 master localhost
        192.168.1.237 node1
        192.168.1.100 node2
        192.168.1.188 node3

        解決DNS解析localhost

        此云主機的DNS解析localhost會解析到一個鬼地址,這是個大坑。kubeadm初始化是會用到localhost。如果你的主機能解析到自己的IP,那么這步可以跳過。如果不能則需要自己搭建一個DNS,將localhost解析到自己。
        # 1.檢測
        [root@node2 ~]# nslookup localhost
        Server:    118.118.118.9
        Address:    118.118.118.9#53

        Non-authoritative answer:
        Name:  localhost.openstacklocal
        Address: 183.136.168.91

        # 2.搭建DNS
        yum -y install dnsmasq
        cp /etc/resolv.conf{,.bak}
        rm -rf /etc/resolv.conf
        echo -e “nameserver 127.0.0.1nnameserver $(hostname -i)” >> /etc/resolv.conf
        chmod 444 /etc/resolv.conf
        chattr +i /etc/resolv.conf
        echo -e “server=8.8.8.8nserver=8.8.4.4” > /etc/dnsmasq.conf
        echo -e “$(hostname -i)tlocalhost.$(hostname -d)” >> /etc/hosts
        service dnsmasq restart

        # 3.再次檢測
        [root@master ~]# nslookup localhost
        Server:    127.0.0.1
        Address:    127.0.0.1#53

        Name:  localhost
        Address: 192.168.1.78

        # 4.添加域名解析
        vim /etc/dnsmasq.conf
        address=/www.baidu.com/123.123.123.123

        同步系統時間
        ntpdate 0.CentOS.pool.ntp.org

        關閉防火墻
        iptables -F
        systemctl stop firewalld
        systemctl disable firewalld

        關閉SELinux & 關閉swap
        swapoff -a
        sed -i ‘s/.*swap.*/#&/’ /etc/fstab
        setenforce 0

        確認時區
        timedatectl set-timezone Asia/Shanghai
        systemctl restart chronyd.service

        修改系統參數
        cat <<EOF >  /etc/sysctl.d/k8s.conf
        net.bridge.bridge-nf-call-ip6tables = 1
        net.bridge.bridge-nf-call-iptables = 1
        EOF
        sysctl –system

        安裝docker
        tar -xvf docker-packages.tar
        cd docker-packages
        yum -y install local *.rpm
        systemctl start docker && systemctl enable docker

        配置鏡像加速器
        vim /etc/docker/daemon.json
        {
          “registry-mirrors”: [“https://lw9sjwma.mirror.aliyuncs.com”]
        }

        systemctl daemon-reload
        systemctl restart docker

        配置k8s的yum源
        vim /etc/yum.repos.d/k8s.repo
        [k8s]
        name=k8s
        baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
        gpgcheck=0

        獲取kube軟件包
        cd kube-packages-1.10.1                # 軟件包在網盤中下載   
        tar -xvf kube-packages-1.10.1.tar
        cd kube-packages-1.10.1
        yum -y install local *.rpm
        systemctl start kubelet && systemctl enable kubelet

        統一k8s與docker的驅動
        # 1.查看docker驅動
         docker info | Cgroup Driver
        Cgroup Driver: cgroupfs

        # 修改k8s配置文件與docker保持一致
        sed -i “s/cgroup-driver=systemd/cgroup-driver=cgroupfs/g” /etc/systemd/system/kubelet.service.d/10-kubeadm.conf

        導入基礎鏡像
        cd /data
        docker load -i k8s-images-1.10.tar.gz

        二、初始化master節點
        # 初始化master 指定的版本要與kubeadm版本一致
        # kubeadm只給定了最少選項,集群名稱等等都沒有指定,kubeadm init
        [root@master ~]# kubeadm init –kubernetes-version=v1.10.1 –pod-network-cidr=10.244.0.0/16

        # 初始化完成后得到如下信息

        Your Kubernetes master has initialized successfully!

        To start using your cluster, you need to run the following as a regular user:

          mkdir -p $HOME/.kube
          sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
          sudo chown $(id -u):$(id -g) $HOME/.kube/config

        You should now deploy a pod network to the cluster.
        Run “kubectl apply -f [podnetwork].yaml” with one of the options listed at:
          https://kubernetes.io/docs/concepts/cluster-administration/addons/

        You can now join any number of machines by running the following on each node
        as root:

          kubeadm join 192.168.1.78:6443 –token qabol0.c2gq0uyfxvpqr8bu –discovery-token-ca-cert-hash sha256:2237ec7b8efd5a8f68adcb04900a0b17b9df2a78675a7d62b4aef644a7f62c05
        # kubeadm join 是node節點加入集群的命令,注意token的有效期

        如果以后要通過其他普通用戶運行k8s,那么切換用戶后執行,否則root下直接執行
        mkdir -p $HOME/.kube
        sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
        sudo chown $(id -u):$(id -g) $HOME/.kube/config

        基本命令
        # 查看pods
        kubectl get pods

        # 查看系統pods
        [root@master ~]# kubectl get pods -n kube-system
        NAME                            READY    STATUS    RESTARTS  AGE
        etcd-master                      0/1      Pending    0          1s
        kube-apiserver-master            0/1      Pending    0          1s
        kube-controller-manager-master  0/1      Pending    0          1s
        kube-dns-86f4d74b45-d42zm        0/3      Pending    0          8h
        kube-proxy-884h6                1/1      NodeLost  0          8h
        kube-scheduler-master            0/1      Pending    0          1s

        # 查看集群各組件狀態信息
        [root@master ~]# kubectl get componentstatuses
        NAME                STATUS    MESSAGE              ERROR
        scheduler            Healthy  ok                 
        controller-manager  Healthy  ok                 
        etcd-0              Healthy  {“health”: “true”} 
        You have new mail in /var/spool/mail/root

        三、node加入集群
        # 確保node節點cgroup驅動保持一致
        sed -i “s/cgroup-driver=systemd/cgroup-driver=cgroupfs/g” /etc/systemd/system/kubelet.service.d/10-kubeadm.conf

        # 命令來自集群初始化之后額顯示中
        kubeadm join 192.168.1.78:6443 –token v0866r.u7kvg5js1ah2u1bi –discovery-token-ca-cert-hash sha256:7b36794f4fa5121f6a5e309d0e312ded72997a88236a93ec7da3520e5aaccf0e

        # master節點查看nodes信息
        [root@master data]# kubectl get nodes
        NAME      STATUS    ROLES    AGE      VERSION
        master    NotReady      master    57m      v1.10.1
        node1    NotReady      <none>    27m      v1.10.1
        node2    NotReady      <none>    11s      v1.10.1
        node3    NotReady  <none>    4s        v1.10.1
        You have new mail in /var/spool/mail/root

        四、部署網絡

        部署

        flannel官網
        flannel下載時不用科學上網,flannel的yml文件會自動去quay.io網站中下載鏡像。
        # 1.1使用軟件包中的flannel,并指pod映射到哪個主機的網卡上面。
        vim kube-flannel.yml
        command: [ “/opt/bin/flanneld”, “–ip-masq”, “–kube-subnet-mgr”,”-iface=eth0″ ]
        # 以下要按順序創建,先創建rbac,之前沒有穿件rbac導致pod正常創建,但是pin不同
        kubectl apply -f kube-flannel-rbac.yml
        kubectl apply -f kube-flannel.yml
        # 后,節點的狀態會變為ready
        [root@master1 kubernetes1.10]# kubectl get node
        NAME      STATUS    ROLES    AGE      VERSION
        master    Ready      master    57m      v1.10.1
        node1    Ready      <none>    27m      v1.10.1
        node2    Ready      <none>    11s      v1.10.1
        node3    Ready  <none>    4s        v1.10.1

        # 2.從官網下載最新的flannel,k8s1.7+ 直接執行以下命令即可
        kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

        flannel配置文件修改
        kube-flannel.yml中指定使用的網段
        “Network”: “10.244.0.0/16”

        默認使用16位掩碼,則在各node中都分配一個10.244.0.0/8的網絡

        五、部署dashboard
        kubectl apply -f kubernetes-dashboard-http.yam
        kubectl apply -f admin-role.yaml
        kubectl apply -f kubernetes-dashboard-admin.rbac.yaml

        命令行常用命令
        # 查看pod信息,默認顯示default名稱空間下的pod
        [root@master ~]# kubectl get pods
        No resources found.

        # 指定名稱空間寫pod
        [root@master ~]# kubectl get pods -n kube-system
        NAME                                    READY    STATUS    RESTARTS  AGE
        etcd-master                            1/1      Running  0          3h
        kube-apiserver-master                  1/1      Running  0          3h
        kube-controller-manager-master          1/1      Running  0          3h
        kube-dns-86f4d74b45-bzbvc              3/3      Running  0          3h
        kube-flannel-ds-5ghhj                  1/1      Running  0          2h
        kube-flannel-ds-ht4xd                  1/1      Running  0          3h
        kube-flannel-ds-kbm5g                  1/1      Running  0          3h
        kube-flannel-ds-mlj4r                  1/1      Running  0          2h
        kube-proxy-9xxnd                        1/1      Running  0          3h
        kube-proxy-n9w5x                        1/1      Running  0          3h
        kube-proxy-nkn8c                        1/1      Running  0          2h
        kube-proxy-shd6l                        1/1      Running  0          2h
        kube-scheduler-master                  1/1      Running  0          3h
        kubernetes-dashboard-5c469b58b8-rjfx6  1/1      Running  0          1h

        # 顯示更詳細的pod信息,此時各pod中都運行了一個kube-proxy和flannel容器
        -o wide 顯示更詳細的信息,報錯node節點iP、主機名
        [root@master ~]# kubectl get pods -n kube-system -o wide
        NAME                                    READY    STATUS    RESTARTS  AGE      IP              NODE
        etcd-master                            1/1      Running  0          3h        192.168.1.78    master
        kube-apiserver-master                  1/1      Running  0          3h        192.168.1.78    master
        kube-controller-manager-master          1/1      Running  0          3h        192.168.1.78    master
        kube-dns-86f4d74b45-bzbvc              3/3      Running  0          3h        10.244.0.2      master
        kube-flannel-ds-5ghhj                  1/1      Running  0          2h        192.168.1.188  node3
        kube-flannel-ds-ht4xd                  1/1      Running  0          3h        192.168.1.78    master
        kube-flannel-ds-kbm5g                  1/1      Running  0          3h        192.168.1.237  node1
        kube-flannel-ds-mlj4r                  1/1      Running  0          2h        192.168.1.100  node2
        kube-proxy-9xxnd                        1/1      Running  0          3h        192.168.1.237  node1
        kube-proxy-n9w5x                        1/1      Running  0          3h        192.168.1.78    master
        kube-proxy-nkn8c                        1/1      Running  0          2h        192.168.1.100  node2
        kube-proxy-shd6l                        1/1      Running  0          2h        192.168.1.188  node3
        kube-scheduler-master                  1/1      Running  0          3h        192.168.1.78    master
        kubernetes-dashboard-5c469b58b8-rjfx6  1/1      Running  0          1h        10.244.0.3      master

        六、kubeadm清空配置
        # 清空kubectl
        kubeadm reset

        # 清空網絡信息
        ip link del cni0
        ip link del flannel.1

        七、踩過的那些坑
        •確保master與node的DNS解析localhost能解析到自己的IP
        •node加入master確保token不過期
        •node確保kubelet正常啟動并運行
        •flannel網絡要先創建kube-flannel-rbac.ymal再創建 kube-flannel.yml

        八、token過期的解決辦法
        # 1.查看已經存在的token
        kubeadm token list

        # 2.創建token
        kubeadm token create

        # 3.查看ca證書的sha256編碼
        openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed ‘s/^.* //’

        # 4.node使用新的token加入集群
        kubeadm join –token acb123 –discovery-token-ca-cert-hash sha256:efg456  172.16.6.79:6443 –skip-preflight-checks
            # abc123    新創建的Token
            # efg456    證書的sha256編碼
            # IP+Port  Master的IP+Port

        ——————————————分割線——————————————

        本文用到的相關資料可從以下信息得到下載:

        點擊這個http://www.linuxidc.com/Linux/2013-12/93755.htm 鏈接關注 Linux公社官方微信,關注后回復數字155392。即可得到網友的分享密碼。

        如果取消關注Linux公社公眾號,即使再次關注,也將無法提供本服務!

        鏈接:https://pan.baidu.com/s/1AEVFswevLLwcf6kKjwd4kg 密碼:獲得見上面的方法,地址失效請在下面留言。

        ——————————————分割線——————————————

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 国产精品美女久久久久AV福利| 久久久久久无码国产精品中文字幕| 成人国产精品日本在线观看| 少妇人妻偷人精品无码视频新浪| 四虎国产精品成人免费久久| 无码精品A∨在线观看| 国产精品理论片在线观看| 51视频国产精品一区二区| 最新在线精品国自av| 女人高潮内射99精品| 国产精品视频全国免费观看| 国产亚洲美女精品久久久久狼| 久久精品水蜜桃av综合天堂| 亚洲精品一级无码鲁丝片 | 久久国产热这里只有精品| 久久精品免费观看| 国产精品99久久免费观看| 久久精品aⅴ无码中文字字幕重口| 亚欧无码精品无码有性视频| 久久久这里有精品中文字幕| 国产A级毛片久久久精品毛片| 久久精品这里热有精品| 国产精品天天影视久久综合网| 国产精品v片在线观看不卡| 精品国产一区二区三区不卡| 精品一区二区三区东京热| 久久国产精品一国产精品金尊| 人妻少妇精品无码专区二区| 无码日韩人妻精品久久蜜桃| 无码国内精品人妻少妇| 久久99精品久久久久子伦| 精品一区二区三区自拍图片区 | 亚洲av无码乱码国产精品fc2| 亚洲国产主播精品极品网红 | 午夜成人精品福利网站在线观看 | 国产精品v欧美精品v日韩| 亚洲处破女AV日韩精品| 精品国产午夜福利在线观看| 精品无人区麻豆乱码1区2区| 久久精品国产亚洲综合色| 日韩精品国产自在久久现线拍|