K8S安裝指南

安裝K8S集羣node

  • 基礎環境

 

三節點             k8smaster        192.168.6.128                  centos7            做爲k8s的master節點linux

                          k8snode1                  192.168.6.129                  centos7            做爲k8s的node節點git

                          k8snode2                  192.168.6.130                  centos7            做爲k8s的node節點github

三節點均新建用戶nicole    主目錄爲/users/nicoledocker

三節點均能訪問互聯網shell

 

配置全部節點的/etc/hosts,使全部節點能夠經過機器名ping通json

配置全部節點的時間同步centos

配置全部節點的firewalld不啓動,方法以下:分別在三個節點上以root用戶執行如下三條命令:api

                  systemctl stop firewalld                  (中止運行中的防火牆)服務器

                  systemctl disable firewalld             ( 設置防火牆開機禁用)

                  systemctl status  firewalld            (查看防火牆當前的狀態,確認其已經關閉)

 

  • master節點上安裝kubelet 、kubeadm、docker、kubectl

 

一、配置yum安裝kubelet、kubeadm、docker、kubectl的yum鏡像源

        

         kubelet、kubeadm、kubectl的倉庫地址:

                  https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/

        

         kubelet、kubeadm、kubectl的兩個gpg校驗密鑰文件地址

                  https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

                  https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg

 

         超戶下執行

cd  /etc/yum.repos.d/

         vi  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

 

         cd ~/   切換到超戶的home目錄

         wget                 https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

         wget                 https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg

         rpm --import rpm-package-key.gpg      導入密鑰

         rpm –import yum-key.gpg                       導入密鑰

        

         yum repolist             確認剛剛配置的兩個倉庫是否能正常工做

 

 

         docker的yum安裝文件地址

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

 

         cd /etc/yum.repos.d/                                        切換路徑

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

下載docker的yum源文件

 

二、安裝kubeadm、kubelet、kubectl、docker

        

超戶下執行

         yum  install  docker-ce  kubeadm  kubelet  kubectl

 

三、配置docker開機自啓動

         systemctl       start  docker                   啓動docker

         systemctl        status       docker              查看docker狀態

         systemctl       enable     docker              配置docker開機自啓動

 

四、配置docker中的代理服務器(若是有代理服務器能夠翻出去,就應該配置)

         vi /usr/lib/systemd/system/docker.service

 

         在ExecStart=/usr/bin/dockerd      這一行上面添加:

         Environment=」HTTPS_PROXY=http://www.ik8s.io:10080」  若是沒有代理,則本行註釋掉

         Environment=」NO_PROXY=127.0.0.0/8,192.168.6.0/24」

 

         從新加載配置

                  systemctl daemon-reload

 

         重啓docker服務

                  sysemctl docker

 

         確認配置生效

                  docker info

 

五、配置docker國內鏡像倉庫( 我選用的是阿里雲)

         vi /etc/docker/daemon.json

        

         {

                    "registry-mirrors": ["https://********.mirror.aliyuncs.com"]

}

         其中*****因我的的帳戶不一樣而不一樣

 

         從新加載配置

                  systemctl daemon-reload

 

         重啓docker服務

                  sysemctl docker

 

         確認配置生效

                  docker info

        

  • master節點上運行kubeadm init前準備

 

  1. 確認/proc/sys/net/bridge/bridge-nf-call-iptables和bridge-nf-call-ip6tables中內容均爲1

 

  1. 測試kubelet

查看kubelet的依賴

         rpm  –ql  kubelet

 

vi  /etc/sysconfig/kubelet ,設置

         KUBELET_EXTRA_ARGS=」—fail-swap-on=false」

即當swap監測fail的時候,不作處理

 

         systemctl  start   kubelet  啓動kubelet

(此處只是測試一下,因初始化配置沒有完成,必定會啓動失敗)

        

systemctl  status  kubelet   檢查kubelet運行狀態

                tail   /var/log/message             查看出錯日誌

                  systemctl   stop  kubelet    中止kubelet

                  systemctl   enable  kubelet   雖然kubelet啓動會失敗,但要設置開機自啓動

 

  • master節點上運行kubeadm init

 

  1. 運行kubeadm init

 

先使用kubeadm init –help 瞭解一下kubeadm init的使用方法

 

使用kubeadm init 初始化kubernetes

 

kubeadm  init  --kubernetes-version=v1.11.1 --pod-network-cidr=10.244.0.0/16 –server-cidr=10.96.0.0/12 –apiserver-advertise-address=192.168.6.128 –ignore-preflight-errors=Swap

 

執行完這個命令以後,通常都會報錯。緣由在於:該命令將致使docker去谷歌官網的鏡像倉庫pull數個必須的鏡像到本地,但對於中國大陸用戶來講,這個網站是不可達的,若是前面的代理服務網站被正確設置,而且代理可用的話,是能夠經過代理將鏡像拉取到本地的。但通常而言,很難找到合適的代理服務。所以,須要手動經過鏡像倉庫將鏡像拉取到本地

 

  1. 肯定須要拉取的鏡像名稱和版本號

執行 kubeadm  config images list ,能夠獲得須要拉取的鏡像名稱和版本號。可能以下所示:

                         

k8s.gcr.io/kube-apiserver:v1.13.3

k8s.gcr.io/kube-controller-manager:v1.13.3

k8s.gcr.io/kube-scheduler:v1.13.3

k8s.gcr.io/kube-proxy:v1.13.3

k8s.gcr.io/pause:3.1

k8s.gcr.io/etcd:3.2.24

k8s.gcr.io/coredns:1.2.6

 

  1. 拉取對應的鏡像

 

將k8s.gcr.io改爲mirrorgooglecontainers,鍵入以下命令逐一拉取鏡像:

 

docker  pull  mirrorgooglecontainers/kube-apiserver:v1.13.3

docker  pull  mirrorgooglecontainers/kube-controller-manager:v1.13.3

docker  pull mirrorgooglecontainers/k8s.gcr.io/kube-scheduler:v1.13.3

docker  pull  mirrorgooglecontainers/kube-proxy:v1.13.3

docker  pull  mirrorgooglecontainers/pause:3.1

docker  pull  mirrorgooglecontainers/etcd:3.2.24

 

這些命令本質上是從google的鏡像倉庫中將對應的鏡像拉取到本地,但拉取到本地後,鏡像的tag和須要的tag是不同的,所以還須要將tag逐一改爲k8s.gcr.io,命令以下:

docker tag mirrorgooglecontainers/kube-apiserver:v1.13.3 k8s.gcr.io/kube-apiserver:v1.13.3

docker tag mirrorgooglecontainers/ kube-controller-manager:v1.13.3 k8s.gcr.io/kube-controller-manager:v1.13.3

docker tag mirrorgooglecontainers/k8s.gcr.io/kube-scheduler:v1.13.3 k8s.gcr.io/kube-scheduler:v1.13.3

docker tag mirrorgooglecontainers/kube-proxy:v1.13.3 k8s.gcr.io/kube-proxy:v1.13.3

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 pull coredns/coredns:1.2.6

docker tag coredns/coredns:1.2.6 k8s.gcr.io/coredns:1.2.6

docker rmi coredns/coredns:1.2.6

 

能夠將上述命令寫成shell腳本,一次性執行完成;

 

 

當完成了拉取以後,再次執行

         kubeadm  init  --kubernetes-version=v1.11.1 --pod-network-cidr=10.244.0.0/16 –server-cidr=10.96.0.0/12 –apiserver-advertise-address=192.168.6.128 –ignore-preflight-errors=Swap

         命令執行完成以後就會提示成功地完成了master的初始化

 

  • master節點上安裝Pod網絡(flannel)

 

  1. 使能kubectl命令

master節點上安裝Pod網絡須要使用kubectl命令,kubectl命令在安裝完成以後須要一些配置才能使用。

首先要明白,kubectl命令只能在普通用戶下使用,超戶下沒法使用。

所以須要切換到普通用戶下,這裏切換到nicole用戶下

su – nicole

mkdir –p $HOME/.kube

sudo cp –i /etc/kubernetes/admin.conf $HOME/.kube/config

sudo chown nicole:nicole $HOME/.kube/config

         注意:使用上述命令須要nicole用戶有sudo的權限

 

  1. 執行命令安裝flannel網絡

kubectl apply –f https://raw.githubusercontent.com/coreos/flannel/master/documentation/kube-flannel.yml

         很不幸,此次的命名執行完成以後,也不會成功地安裝flannel網絡,緣由也是鏡像沒法拉取到本地。

 

  1. 肯定須要拉取的鏡像名稱和版本號

首先查看節點運行狀態:kubectl get nodes      ,能夠發現master節點的status不是READY狀態;

接下來查看pod運行狀態:kubectl get pod --all-namespaces,能夠看到集羣中有許多的pod的狀態不是RUNNING狀態,而是Pending、ContainerCreating、ImagePullBackOff之類的沒有就緒的狀態,但經過這個命令咱們能夠查看到那些未就緒的pod的名字;

接下來查看某一特定pod的具體狀況:kubectl describe pod <pod name> --namespace=kube-system,能夠看到某一特定pod的運行狀態,命令的輸出中就能夠看到是某一特定的鏡像拉取失敗,從這裏就能夠看到鏡像名了,例如鏡像名爲quay.io/coreos/flannel:v0.11.0-amd64的鏡像拉取失敗

 

  1. 手動拉取鏡像

將quay.io/coreos/flannel:v0.11.0-amd64改成quay-mirror.qiniu.com /coreos/flannel:v0.11.0-amd64,使用命令:

docker pull quay-mirror.qiniu.com /coreos/flannel:v0.11.0-amd64 便可以拉取鏡像

拉取完成以後,將quay-mirror.qiniu.com /coreos/flannel:v0.11.0-amd64改成quay.io/coreos/flannel:v0.11.0-amd64,使用命令:

docker tag docker pull quay-mirror.qiniu.com /coreos/flannel:v0.11.0-amd64 quay.io/coreos/flannel:v0.11.0-amd64

 

按照三、4的方式,逐一將因拉取鏡像失敗而狀態異常的pod的依賴鏡像拉取到本地,以後從新執行

kubectl apply –f https://raw.githubusercontent.com/coreos/flannel/master/documentation/kube-flannel.yml

此時,全部的pod將運行正常

 

另:將quay.io/coreos/flannel:v0.11.0-amd64也可改成registry.aliyuncs.com /coreos/flannel:v0.11.0-amd64

 

 

  • node節點上安裝kubelet、kubeadm、docker、kubectl
  1. 配置yum安裝kubelet、kubeadm、docker、kubectl的yum鏡像源

 

在root用戶下將master節點上的kubernetes.repo、docker-ce.repo文件複製到各node節點的/etc/yum.repos.d/目錄中

 

在root用戶下將master節點上的rpm-package-key.gpg、yum-key.gpg文件複製到各node節點的root主目錄中

rpm --import rpm-package-key.gpg      導入密鑰

                  rpm –import yum-key.gpg                       導入密鑰

 

                  執行yum安裝

yum  install  docker-ce  kubeadm  kubelet  kubectl(kubectl能夠不裝)

 

  1. 其餘配置同master同樣,主要是鏡像的拉取須要注意

 

  • node節點上運行kubeadm join

在node一、node2上執行kubeadm join命令將,將兩個節點註冊到cluster中。命令以下:

         kubeadm join --token *********  192.168.6.128:6443

         其中*****來自前面master節點作kubeadm init時命令輸出的提示,若是沒有記錄下來,能夠經過kubeadm token list查看

 

  • 確認kubernetes集羣運行正常

在master節點上運行kubectl get nodes查看節點的狀態,全部的節點狀態應該都是READY。

若是不是READY,就要繼續查看pod的狀態,再根據未就緒的pod的名字查看對應的pod的具體運行信息,一般是依賴的鏡像沒有下載,此時仍然須要根據前面的方式手動下在對應的鏡像。

相關文章
相關標籤/搜索