kubeadm安裝Kubernetes13.1集羣-三

環境:node

  master: 192.168.3.100
  node01: 192.168.3.101
  node02: 192.168.3.102linux

  關閉全部主機防火牆,selinux;
  配置主機互信;git

master:
  一、設置docker和kubernetes的repo文件(阿里):
    cd /etc/yum.repos.d/github

    wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repodocker

    vim kubernetes.repo
    [kubernetes]
    name=Kubernetes Repo
    baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
    gpgcheck=1
    gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
    enabled=1

    yum repolist #驗證repovim

    scp docker-ce.repo kubernetes.repo node01:/etc/yum.repos.d/
    scp docker-ce.repo kubernetes.repo node02:/etc/yum.repos.d/centos

  二、安裝docker、kubelet、kubeadm、kubectlapi

    [root@master ~]# yum install epel-release -y
    [root@master ~]# cd
    [root@master ~]# wget https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
    [root@master ~]# rpm --import yum-key.gpg
    [root@master ~]# wget https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
    [root@master ~]# rpm --import rpm-package-key.gpg

    [root@master ~]# yum install docker-ce kubelet kubeadm kubectlbash

  三、啓動 網絡

    (1)
      [root@master ~]# echo "1" >/proc/sys/net/bridge/bridge-nf-call-ip6tables
      [root@master ~]# echo "1" >/proc/sys/net/bridge/bridge-nf-call-iptables

      建立/etc/sysctl.d/k8s.conf文件,添加以下內容:
        net.bridge.bridge-nf-call-ip6tables = 1
        net.bridge.bridge-nf-call-iptables = 1
        net.ipv4.ip_forward = 1


      執行命令使修改生效:
        modprobe br_netfilter
        sysctl -p /etc/sysctl.d/k8s.conf

        [root@master ~]# systemctl daemon-reload
        [root@master ~]# systemctl restart docker

    (2)
      IPvs:(我沒有使用ipvs, 因此沒有作這一步)
      kube-proxy開啓ipvs的前置條件:
      在全部的Kubelet存在的節點執行如下腳本:
      cat > /etc/sysconfig/modules/ipvs.modules <<EOF
      #!/bin/bash
      modprobe -- ip_vs
      modprobe -- ip_vs_rr
      modprobe -- ip_vs_wrr
      modprobe -- ip_vs_sh
      modprobe -- nf_conntrack_ipv4
      EOF
      chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4

      上面腳本建立了的/etc/sysconfig/modules/ipvs.modules文件,保證在節點重啓後能自動加載所需模塊。
      使用lsmod | grep -e ip_vs -e nf_conntrack_ipv4命令查看是否已經正確加載所需的內核模塊。
      接下來還須要確保各個節點上已經安裝了ipset軟件包: yum install ipset

       爲了便於查看ipvs的代理規則,最好安裝一下管理工具ipvsadm :  yum install ipvsadm。
      若是以上前提條件若是不知足,則即便kube-proxy的配置開啓了ipvs模式,也會退回到iptables模式。

      在kubelet的配置文件/etc/sysconfig/kubelet,設置使用ipvs:
      KUBE_PROXY_MODE=ipvs

    (3)準備鏡像  

      [root@master ~]# rpm -ql kubelet
      /etc/kubernetes/manifests
      /etc/sysconfig/kubelet
      /etc/systemd/system/kubelet.service
      /usr/bin/kubelet

      [root@master ~]# systemctl enable kubelet   #kubelet先設置開機啓動,可是先不啓動
      [root@master ~]# systemctl enable docker

      [root@master ~]# kubeadm init --help


      [root@master ~]# kubeadm version   #查看kubeadm的版本
      [root@master ~]# kubeadm config images list    #查看kubeadm須要的image版本,而後下載對應的鏡像
      

      因爲國內不能訪問Google,因此只能下載國內站點上的鏡像,而後從新打標:

      docker pull mirrorgooglecontainers/kube-apiserver:v1.13.1
      docker pull mirrorgooglecontainers/kube-controller-manager:v1.13.1
      docker pull mirrorgooglecontainers/kube-scheduler:v1.13.1
      docker pull mirrorgooglecontainers/kube-proxy:v1.13.1
      docker pull mirrorgooglecontainers/pause:3.1
      docker pull mirrorgooglecontainers/etcd:3.2.24
      docker pull coredns/coredns:1.2.6
      docker pull registry.cn-shenzhen.aliyuncs.com/cp_m/flannel:v0.10.0-amd64

      爲了應對網絡不順暢通的問題,咱們國內網絡環境只能提早手動下載相關鏡像並從新打 tag :
      docker tag mirrorgooglecontainers/kube-apiserver:v1.13.1 k8s.gcr.io/kube-apiserver:v1.13.1
      docker tag mirrorgooglecontainers/kube-controller-manager:v1.13.1 k8s.gcr.io/kube-controller-manager:v1.13.1
      docker tag mirrorgooglecontainers/kube-scheduler:v1.13.1 k8s.gcr.io/kube-scheduler:v1.13.1
      docker tag mirrorgooglecontainers/kube-proxy:v1.13.1 k8s.gcr.io/kube-proxy:v1.13.1
      docker tag mirrorgooglecontainers/pause:3.1 k8s.gcr.io/pause:3.1
      docker tag mirrorgooglecontainers/etcd:3.2.24 k8s.gcr.io/etcd:3.2.24
      docker tag coredns/coredns:1.2.6 k8s.gcr.io/coredns:1.2.6
      docker tag registry.cn-shenzhen.aliyuncs.com/cp_m/flannel:v0.10.0-amd64 quay.io/coreos/flannel:v0.10.0-amd64

      docker rmi mirrorgooglecontainers/kube-apiserver:v1.13.1
      docker rmi mirrorgooglecontainers/kube-controller-manager:v1.13.1
      docker rmi mirrorgooglecontainers/kube-scheduler:v1.13.1
      docker rmi mirrorgooglecontainers/kube-proxy:v1.13.1
      docker rmi mirrorgooglecontainers/pause:3.1
      docker rmi mirrorgooglecontainers/etcd:3.2.24
      docker rmi coredns/coredns:1.2.6
      docker rmi registry.cn-shenzhen.aliyuncs.com/cp_m/flannel:v0.10.0-amd64   

    (4)
      [root@master ~]# vim /etc/sysconfig/kubelet    #設置忽略Swap啓動的狀態錯誤
      KUBELET_EXTRA_ARGS="--fail-swap-on=false"

      初始化集羣:
      [root@master ~]# kubeadm init --kubernetes-version=v1.13.1 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --ignore-preflight-errors=Swap

      要開始使用集羣,須要以常規用戶身份運行如下命令:
      mkdir -p $HOME/.kube
      sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
      sudo chown $(id -u):$(id -g) $HOME/.kube/config     #root用戶的話,這條命令就不用執行了

      能夠經過在每一個節點上運行如下命令加入集羣,可是如今不用添加:

sha256:3a5c7da23306cf1e869fec140e4d187056edf146affe5c6ee8007cc2de6b349b  #初始化集羣會生成

  

  四、kubectl命令
    [root@master ~]# kubectl get cs    #檢查各組件健康情況
    [root@master ~]# kubectl get nodes    #查看節點
    [root@master ~]# kubectl get ns   #查看全部名稱空間
    [root@master ~]# kubectl describe node node01    #查看一個節點的詳細信息
    [root@master ~]# kubectl cluster-info    #查看集羣信息


  五、部署flannel
    [root@master ~]# kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
    [root@master ~]# kubectl get pods -n kube-system   #查看當前節點全部pod狀態,-n:指定namespace

 

 

node01:       

  一、
    [root@master ~]# scp rpm-package-key.gpg node01:/root/

  二、
    [root@node01 ~]# yum install docker-ce kubelet kubeadm
    [root@master ~]# scp /usr/lib/systemd/system/docker.service node01:/usr/lib/systemd/system/docker.service
    [root@master ~]# scp /etc/sysconfig/kubelet node01:/etc/sysconfig/
    [root@node01 ~]# systemctl daemon-reload
    [root@node01 ~]# systemctl start docker
    [root@node01 ~]# systemctl enable docker
    [root@node01 ~]# systemctl enable kubelet
    [root@node01 ~]# echo "1" >/proc/sys/net/bridge/bridge-nf-call-ip6tables
    [root@node01 ~]# echo "1" >/proc/sys/net/bridge/bridge-nf-call-iptables

  三、
    [root@master ~]# scp myimages.gz node01:/root/    #將master的鏡像打包copy到node01
    [root@node01 ~]# docker load -i myimages.gz
    [root@node01 ~]# docker tag fdb321fd30a0 k8s.gcr.io/kube-proxy:v1.13.1
    [root@node01 ~]# docker tag 40a63db91ef8 k8s.gcr.io/kube-apiserver:v1.13.1
    [root@node01 ~]# docker tag ab81d7360408 k8s.gcr.io/kube-scheduler:v1.13.1
    [root@node01 ~]# docker tag 26e6f1db2a52 k8s.gcr.io/kube-controller-manager:v1.13.1
    [root@node01 ~]# docker tag f59dcacceff4 k8s.gcr.io/coredns:1.2.6
    [root@node01 ~]# docker tag 3cab8e1b9802 k8s.gcr.io/etcd:3.2.24
    [root@node01 ~]# docker tag f0fad859c909 quay.io/coreos/flannel:v0.10.0-amd64
    [root@node01 ~]# docker tag da86e6ba6ca1 k8s.gcr.io/pause:3.1

    [root@node01 ~]# kubeadm join 192.168.3.100:6443 --token nscdt6.1f73g6w9t80tddx0 --discovery-token-ca-cert-hash
    sha256:3a5c7da23306cf1e869fec140e4d187056edf146affe5c6ee8007cc2de6b349b --ignore-preflight-errors=Swap

 

node02 :
  一、
    [root@master ~]# scp rpm-package-key.gpg node02:/root/
    [root@node02 ~]# yum install docker-ce kubelet kubeadm
    [root@master ~]# scp /usr/lib/systemd/system/docker.service node02:/usr/lib/systemd/system/docker.service
    [root@master ~]# scp /etc/sysconfig/kubelet node02:/etc/sysconfig/
    [root@node02 ~]# systemctl daemon-reload
    [root@node02 ~]# systemctl start docker
    [root@node02 ~]# systemctl enable docker
    [root@node02 ~]# systemctl enable kubelet
    [root@node02 ~]# echo "1" >/proc/sys/net/bridge/bridge-nf-call-ip6tables
    [root@node02 ~]# echo "1" >/proc/sys/net/bridge/bridge-nf-call-iptables

  二、
    [root@master ~]# scp myimages.gz node02:/root/    #將master的鏡像copy到node02
    [root@node02 ~]# docker load -i myimages.gz

    [root@node02 ~]# docker tag fdb321fd30a0 k8s.gcr.io/kube-proxy:v1.13.1
    [root@node02 ~]# docker tag 40a63db91ef8 k8s.gcr.io/kube-apiserver:v1.13.1
    [root@node02 ~]# docker tag ab81d7360408 k8s.gcr.io/kube-scheduler:v1.13.1
    [root@node02 ~]# docker tag 26e6f1db2a52 k8s.gcr.io/kube-controller-manager:v1.13.1
    [root@node02 ~]# docker tag f59dcacceff4 k8s.gcr.io/coredns:1.2.6
    [root@node02 ~]# docker tag 3cab8e1b9802 k8s.gcr.io/etcd:3.2.24
    [root@node02 ~]# docker tag f0fad859c909 quay.io/coreos/flannel:v0.10.0-amd64
    [root@node02 ~]# docker tag da86e6ba6ca1 k8s.gcr.io/pause:3.1

    [root@node02 ~]# kubeadm join 192.168.3.100:6443 --token nscdt6.1f73g6w9t80tddx0 --discovery-token-ca-cert-hash
    sha256:3a5c7da23306cf1e869fec140e4d187056edf146affe5c6ee8007cc2de6b349b --ignore-preflight-errors=Swap

 

最後:檢查集羣情況

    [root@master ~]# kubectl get cs    #檢查各組件健康情況    [root@master ~]# kubectl get nodes    #查看節點    [root@master ~]# kubectl get ns   #查看全部名稱空間    [root@master ~]# kubectl describe node node01    #查看一個節點的詳細信息    [root@master ~]# kubectl cluster-info    #查看集羣信息

相關文章
相關標籤/搜索