centos7安裝kubernetes1.9集羣

 節點規劃

本次選用一個master節點,三個node節點來安裝k8s集羣。  node

節點 IP
M0 10.xx.xx.xx
N0 10.xx.xx.xx
N1 10.xx.xx.xx
N2 10.xx.xx.xx

集羣啓動前的準備(請用root用戶執行)

節點準備工做(在每臺機器上執行)

包括修改主機名,關閉防火牆等操做。  
k8s集羣會識別主機名字,確保每一個主機名設爲不一樣值。  
關閉防火牆是爲了不沒必要要的網絡問題。  linux

# ${hostname}變量請替換成規劃的主機名,好比M0, N0, N1

sudo hostnamectl set-hostname ${hostname}
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i -re '/^\s*SELINUX=/s/^/#/' -e '$i\\SELINUX=disabled'  /etc/selinux/config
  • 而後創建ssh的相互鏈接,方便後面傳文件什麼的。可使用ssh-copy-id命令,也能夠本身添加認證。這個網上教程不少,本身搜一下  

安裝docker(在每臺機器上執行)

yum install docker -y
systemctl enable docker && systemctl start docker

安裝kubeadm, kubelet, kubectl(每臺機器上執行)

  • kubeadm: 快速建立k8s集羣的工具
  • kubelet: k8s的基礎組件,負責對pod和container的建立和管理,與k8s集羣master創建聯繫
  • kubectl: k8s的客戶端工具,用來像集羣發送命名
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF

yum install -y kubelet kubeadm kubectl

官網文檔上寫一些用戶在RHEL/Centos7系統上安裝時,因爲iptables被繞過致使路由錯誤,須要在
sysctl的config文件中將net.bridge.bridge-nf-call-iptables設置爲1.docker

cat <<EOF >  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system

啓動kubelet:api

systemctl enable kubelet && systemctl start kubelet

至此,準備工做就作好了。目前每隔幾秒kubelet就會重啓,直到收到kubeadm的命令。  
因此用systemctl status kubelet看到kubelet沒有啓動是正常現象,能夠多執行幾回查看,就會發現kubelet處於不斷中止和重啓的狀態.安全


使用kubeadm工具建立kubernetes集羣

kubeadm是k8s官方提供的工具,能夠簡單的建立一個安全可擴展的k8s集羣。
在執行下面的操做以前,請確保前面的準備工做已經作完。特別是kubelet已經安裝和啓動,kubeadm已經安裝完成網絡

啓動集羣

  1. 啓動master
    在master節點執行如下操做,並導出KUBECONFIG配置文件到環境變量:
    記錄下kubeadm init的輸出信息,後面將會用到app

    # --pod-network-cidr=192.168.0.0/1參數是爲了後面啓動networ的Calico   pod作準備
    
    kubeadm init --pod-network-cidr=192.168.0.0/16
    export KUBECONFIG=/etc/kubernetes/admin.conf
  2. 安裝啓動一個network的pod,這裏選用Calico.
    在啓動任何pod以前,必須先啓動一個network的pod, 用於pod之間的通訊 ssh

    kubectl apply -f https://docs.projectcalico.org/v2.6/getting-
    started/kubernetes/installation/hosted/kubeadm/1.6/calico.yaml
  3. 添加node節點到master(在每臺node上執行如下命令)
    當執行玩kubeadm init後會輸出如下信息,直接複製執行就能夠了  ide

    kubeadm join --token <token> <master-ip>:<master-port> --discovery-token-ca-cert-
    hash sha256:<hash>

    至此爲止k8s集羣就建好了,能夠在master節點輸出kubectl get nodes查看工具

  4. 在非master節點管理集羣(可選)  
    若是不執行這個操做,只能在master節點來管理集羣。
    把master節點的admin.conf配置文件複製到nodes節點當中去,就能在node節點來管理集羣了。

    scp /etc/kubernetes/admin.conf root@10.5.30.82:/etc/kubernetes/
    export KUBECONFIG=/etc/kubernetes/admin.conf
  5. 將API服務代理到localhost(可選)
    這個很好理解,執行 kubectl --kubeconfig proxy命令,也是要使用admin.conf的權限,直接復
    制官方文檔:
    if you want to connect to the API Server from outside the cluster you can use
    kubectl proxy:

    scp root@<master ip>:/etc/kubernetes/admin.conf .
    kubectl --kubeconfig ./admin.conf proxy

    You can now access the API Server locally at http://localhost:8001/api/v1

刪除集羣

在咱們安裝k8s集羣時,可能會出現問題,須要從新安裝。  
在咱們從新執行安裝步驟以前,必需要先銷燬咱們創建好的k8s集羣,在master節點下執行如下命令。  

# 先移除集羣的node節點
kubectl drain <node name> --delete-local-data --force --ignore-daemonsets
kubectl delete node <node name>

# 而後重置kubeadm狀態
kubeadm reset

我徹底按照官方文檔安裝執行,沒有遇到問題. 若是你在安裝過程當中遇到問題,請參考下面官方的故障排除文檔和安裝文檔。   
故障排除:Troubleshooting Kubeadm
安裝文檔:Using kubeadm to create a cluster

相關文章
相關標籤/搜索