Breeze部署kubernetes1.13.2高可用集羣

本文裝載至:https://blog.csdn.net/networken/article/details/86550735前端

breeze簡介

項目地址:https://github.com/wise2c-devops/breeze
本次使用睿雲智合開源 Breeze工具部署 Kubernetes 高可用集羣。
Breeze項目旨在提供一個可信的、安全的、穩定的Kubernetes集羣部署工具,它能夠幫助您經過圖形化操做界面快捷地在生產環境部署一個或多個Kubernetes集羣,而不須要連入互聯網環境。node

功能簡介linux

  • 運行簡單:
    Breeze將部署Kubernetes集羣所需的所有資源文件打包在一個docker鏡像內,這包括Kubernetes的組件鏡像、docker、etcd、harbor、kubernetes集羣部署的ansible
    playbook腳本文件等。同時,Breeze部署主機自身也做爲一個yum倉庫服務器角色存在,所以,您只需準備一臺安裝了docker和docker-compose命令的主機便可輕鬆的使Breeze運行起來並進行Kubernetes集羣的部署。
  • 簡化Kubernetes集羣部署流程:
    僅需幾條簡單命令,就能使Breeze程序運行起來,接下來的Kubernetes集羣部署工做全都經過圖形化操做界面完成。
  • 支持離線部署:
    在僅有的4個鏡像(playbook, yum-repo, pagoda, deploy-ui)被加載在Breeze部署主機以後,全部操做都不須要互聯網的訪問。Breeze自身做爲yum倉庫對被部署機提供yum源服務並使用kubeadm進行Kubernetes的部署工做,同時Breeze還會部署一個Harbor服務器用於內網的鏡像下載服務。
  • 支持多個集羣批量部署:
    Breeze支持批量部署多個Kubernetes集羣。
  • 支持高可用架構:
    使用Breeze部署的Kubernetes集羣,默認提供3個master節點和3個etcd節點,結合haproxy+keepalived架構服務,全部工做節點都使用虛擬浮動IP地址和主節點服務器通訊。

Breeze 軟件架構簡圖:nginx


在這裏插入圖片描述
組件git

  • breeze: 用於部署docker, harbor, haproxy+keepalived, etcd,
    kubernetes等組件的Ansible playbook。
  • yum-repo: 用於安裝docker, docker-compose, kubelet, kubectl, kubeadm,
    kubernetes-cni等的yum倉庫源。
  • deploy-ui: 圖形界面組件。
  • pagoda: 提供操做Ansible playbook的API。
  • kubeadm-version: 獲取Kubernetes組件版本清單,採用命令"kubeadm config"

部署要求github

  • 部署機: docker 1.13.1+ and docker-compose 1.12.0+ .
  • Kubernetes集羣節點: 兼容CentOS 7.4/7.5/7.6
    版本,Minimal安裝模式是推薦的方式,爲了確保部署的順利進行,應儘量保證系統的乾淨。
  • 部署指南:https://github.com/wise2c-devops/breeze/blob/master/BreezeManual-CN.md
    本安裝方式經過了Kubernetes Conformance一致性認證,所以可用於生產環境。
  • github項目中選擇相應的Release Tag並下載其中的docker-compose.yml文件。(Tags列出的版本號a.b.c.d其中前三位a.b.c對應於Kubernetes的發行版本號,第四位只是Breeze自身部署功能所作的修訂,不涉及對Kubernetes的任何修改)

問題反饋溝通docker

部署環境準備

在本次實驗環境中準備了6臺服務器,使用Vmware Workstation進行部署,配置與角色以下(若是須要增長 Minion/Worker 節點請自行準備便可):shell

主機名 IP 地址 角色 OS 組件
deploy 192.168.92.10 Breeze Deploy CentOS 7.6 x64 docker / docker-compose / Breeze
master01 192.168.92.11 K8S Master Node CentOS 7.6 x64 K8S Master / etcd / HAProxy / Keepalived
master02 192.168.92.12 K8S Master Node CentOS 7.6 x64 K8S Master / etcd / HAProxy / Keepalived
master03 192.168.92.13 K8S Master Node CentOS 7.6 x64 K8S Master / etcd / HAProxy / Keepalived
worker01 192.168.92.21 K8S Worker Node CentOS 7.6 x64 K8S Worker / Prometheus
harbor 192.168.92.20 Harbor CentOS 7.6 x64 Harbor 1.7.0
  192.168.92.30 VIP   HA 虛 IP 地址在 3 臺 K8S Master 浮動

硬件資源規劃:api

主機名 CPU 內存 磁盤 網卡
deploy 1C 2G 系統盤50G x1,(可選數據盤300G x1) x1
master01 2C 4G 系統盤50G x1,(可選數據盤300G x1) x1
master02 2C 4G 系統盤50G x1,(可選數據盤300G x1) x1
master03 2C 4G 系統盤50G x1,(可選數據盤300G x1) x1
worker01 2C 4G 系統盤50G x1,(可選數據盤300G x1) x1
harbor 1C 2G 系統盤50G x1,(可選數據盤300G x1) x1

注意master和worker節點至少配置2顆CPU、4G內存,不然可能致使資源不足部署失敗。部署前可對全部虛擬機創建快照,方便回滾。
這裏僅作測試不配置數據盤(對於集羣master和worker節點,磁盤規劃建議系統盤/dev/sda和數據盤/dev/sdb組成vg卷組,從卷組劃分兩個lv邏輯卷分別掛載至/var/lib/docker/目錄下和/data目錄下。)瀏覽器

全部節點設置防火牆
關閉selinux並放開firewalld,請勿禁用firewalld服務,保證firewalld服務正常運行狀態便可。

setenforce 0
sed  --follow-symlinks  -i  "s/SELINUX=enforcing/SELINUX=disabled/g"  /etc/selinux/config 
firewall-cmd  --set-default-zone=trusted
firewall-cmd  --complete-reload
 
  • 1
  • 2
  • 3
  • 4

全部節點配置時間同步

使用chrony同步時間,指定deploy節點爲內網NTP服務器,與網絡NTP服務器同步時間,其餘節點與deploy節點同步時間。

配置deploy節點(NTP服務端):

#安裝chrony:
yum install -y chrony
cp /etc/chrony.conf /etc/chrony.conf.bak
#註釋默認ntp服務器
sed -i 's/^server/#&/' /etc/chrony.conf
#指定上游公共 ntp 服務器,並容許其餘節點同步時間
cat >> /etc/chrony.conf << EOF
server 0.asia.pool.ntp.org iburst
server 1.asia.pool.ntp.org iburst
server 2.asia.pool.ntp.org iburst
server 3.asia.pool.ntp.org iburst
allow all
EOF
#配置時區
timedatectl set-timezone Asia/Shanghai
#開啓時間同步功能
timedatectl set-ntp true
#重啓chronyd服務並設爲開機啓動:
systemctl enable chronyd && systemctl restart chronyd
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

配置全部其餘節點(NTP客戶端):

#安裝chrony:
yum install -y chrony
cp /etc/chrony.conf /etc/chrony.conf.bak
#註釋默認服務器
sed -i 's/^server/#&/' /etc/chrony.conf
#指定內網 deploy節點爲上游NTP服務器
echo server 192.168.92.10 iburst >> /etc/chrony.conf
#配置時區
timedatectl set-timezone Asia/Shanghai
#開啓時間同步功能
timedatectl set-ntp true
#重啓服務並設爲開機啓動:
systemctl enable chronyd && systemctl restart chronyd
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

注意修改ntp服務器ip地址,執行chronyc sources命令,查看存在以*開頭的行,說明已經與服務器時間同步,執行timedatectl查看時間是否同步。

部署節點環境準備(deploy/192.168.92.10)

如下全部操做在部署節點執行
安裝 docker-compose

$ sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
 
  • 1
  • 2

安裝 docker

$ curl -sSL https://raw.githubusercontent.com/willzhang/shell/master/install_docker.sh | sh
 
  • 1

在部署機上作好對集羣內其它全部服務器的ssh免密登陸:

#生成密鑰
$ ssh-keygen

#針對目標服務器作 ssh 免密登陸,依次執行: $ ssh-copy-id 192.168.92.11 $ ssh-copy-id 192.168.92.12 $ ssh-copy-id 192.168.92.13 $ ssh-copy-id 192.168.92.20 $ ssh-copy-id 192.168.92.21

 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

下載用於部署某個Kubernetes版本的docker-compose文件並使部署程序運行起來,例如這次實驗針對剛剛發佈的 K8S v1.13.2。

$ curl -L https://raw.githubusercontent.com/wise2c-devops/breeze/v1.13.2/docker-compose.yml -o docker-compose.yml
$ docker-compose up -d
 
  • 1
  • 2

查看拉取的鏡像

[root@deploy ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
wise2c/playbook     v1.13.2             6c57dc3440b1        3 days ago          1.17GB
wise2c/yum-repo     v1.13.2             d08304a41136        5 days ago          745MB
wise2c/pagoda       v1.1                d4f2b4cabdec        13 days ago         483MB
wise2c/deploy-ui    v1.3                2f159b37bf13        2 weeks ago         40.1MB
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

(可選)因爲鏡像較大,能夠將全部4個鏡像打包爲tar文件,備份到其餘地方,從新部署可使用docker load從新載入鏡像:

#打包全部鏡像
$ docker save -o breeze.tar $(docker images | grep -v TAG | awk '{print $1":"$2}')
#從新載入鏡像
$ docker load -i breeze.tar
 
  • 1
  • 2
  • 3
  • 4

查看運行的容器
若是一切正常(注意deploy-playbook這個容器是個卷容器,它是退出狀態這是正常現象),部署機的88端口將可以被正常訪問。

[root@deploy ~]# docker ps -a
CONTAINER ID        IMAGE                     COMMAND                  CREATED             STATUS                     PORTS                                        NAMES
0221f2177505        wise2c/deploy-ui:v1.3     "/root/entrypoint.sh"    8 minutes ago       Up 8 minutes                                                            deploy-ui
cd24a52cd499        wise2c/pagoda:v1.1        "sh -c '/root/pagoda…"   8 minutes ago       Up 8 minutes               0.0.0.0:88->80/tcp, 0.0.0.0:8088->8080/tcp   deploy-main
a0dcf2bc42e6        wise2c/playbook:v1.13.2   "sh"                     8 minutes ago       Exited (0) 8 minutes ago                                                deploy-playbook
b1f92f68fffa        wise2c/yum-repo:v1.13.2   "nginx -g 'daemon of…"   8 minutes ago       Up 8 minutes               80/tcp, 0.0.0.0:2009->2009/tcp               deploy-yumrepo
[root@deploy ~]#
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

訪問部署工具

添加集羣

打開瀏覽器,訪問部署程序的圖形界面(部署機 IP 及端口 88),添加主機列表、添加服務角色並將加入的主機進行角色分配,而後開始部署:http://192.168.92.10:88
在這裏插入圖片描述
點擊 + 號添加一個集羣:
在這裏插入圖片描述
在這裏插入圖片描述

添加主機

點擊「添加主機」,輸入主機名、主機IP、描述信息(主機用途),點擊肯定。重複該步驟直至將集羣所需的所有節點服務器加入(k8s master服務器、k8s worker node服務器、harbor服務器等等):
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

添加組件

點擊「下一步」再點擊「添加組件」按鈕,對每一個組件進行設置和分配服務器(docker角色、harbor角色、loadbalance角色、etcd角色、kubernetes角色、prometheus角色):
在這裏插入圖片描述
若是但願Breeze部署程序使用界面裏輸入的主機名代替當前服務器的主機名,則勾選format host name選項框:
在這裏插入圖片描述
鏡像倉庫設置這裏的harbor entry point是指用戶端訪問鏡像倉庫的URL,能夠直接寫IP地址或寫對應的域名:
在這裏插入圖片描述
接下來是設置高可用組件(haproxy+keepalived):
vip for k8s master是指三個k8s master服務器的高可用虛擬浮動IP地址;網卡請填寫實際操做系統下的網卡名,注意請保證3個節點網卡名一致;router id和virtual router id請確保不一樣k8s集羣使用不一樣的值。
在這裏插入圖片描述
Etcd能夠選擇部署於K8S Master節點也能夠選擇獨立的三臺主機:
在這裏插入圖片描述
kubernetes entry point是指高可用的一個設定值,若是生產環境有硬件或軟件負載均衡指向這裏的k8s master全部節點,那麼就能夠在這裏填寫負載均衡的統一入口地址。
相對於昂貴的F5專業硬件設備,咱們也可使用HAProxy和Keepalived的組合輕鬆完成這個設置,Breeze自帶這個組合模塊的部署。
例以下圖的 192.168.92.30:6444 就是k8s集羣高可用的統一入口,k8s的worker node會使用這個地址訪問API Server。請注意若是使用的是Breeze自帶的高可用組件haproxy+keepalived,則請填寫實際的虛IP與默認端口6444。
在這裏插入圖片描述
接下來是可選安裝項Prometheus(基於Prometheus Operator方式部署,集成Prometheus、Alertmanager、Grafana),這裏請擇一臺Worker節點進行部署便可,有三個服務暴露端口可自行設定,注意NodePort端口號大於30000。
在這裏插入圖片描述
全部角色定義完成以下:
在這裏插入圖片描述
點擊「下一步」開始安裝部署。

開始部署

若是界面上全部角色圖標所有變爲綠色,則表示部署任務結束。能夠登陸任一k8s節點運行命令 kubectl get nodes 查看結果。
在這裏插入圖片描述
在這裏插入圖片描述
以上例子是3臺etcd、3臺k8s master、1臺k8s worker node、1臺鏡像倉庫的環境。實際能夠增減規模。

驗證集羣狀態

訪問dashboard

Kubernetes Dashboard的訪問入口咱們採用了NodePort:30300的方式暴露端口,所以能夠經過火狐瀏覽器訪問 https://任意服務器IP:30300 來登陸Dashboard頁面,注意其它瀏覽器例如Chrome由於不接受自簽名證書會拒絕訪問請求。
新版本Dashboard引入了驗證模式,能夠經過如下命令獲取admin-user的訪問令牌:

$ kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')
 
  • 1

將返回的token字串粘貼至登陸窗口便可實現登陸。
在這裏插入圖片描述

訪問grafana

安裝好Prometheus以後,能夠訪問如下服務頁面:
Grafana:
用戶名密碼默認爲admin/admin
這裏使用ID 315的dashboard模板進行展現:
在這裏插入圖片描述
Prometheus:
http://任意服務器IP:30900
在這裏插入圖片描述
Alertmanager:
http://任意服務器IP:30903
在這裏插入圖片描述

訪問Harbor

默認用戶名密碼admin/Harbor12345
在這裏插入圖片描述登陸成功:
在這裏插入圖片描述

查看集羣狀態

查看集羣狀態:

[root@master01 ~]# kubectl get cs
NAME                 STATUS    MESSAGE              ERROR
scheduler            Healthy   ok
controller-manager   Healthy   ok
etcd-1               Healthy   {"health": "true"}
etcd-2               Healthy   {"health": "true"}
etcd-0               Healthy   {"health": "true"}
[root@master01 ~]#
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

查看節點狀態:

[root@master01 ~]# kubectl get node -o wide
NAME       STATUS   ROLES    AGE   VERSION   INTERNAL-IP     EXTERNAL-IP   OS-IMAGE                KERNEL-VERSION               CONTAINER-RUNTIME
master01   Ready    master   25m   v1.13.2   192.168.92.11   <none>        CentOS Linux 7 (Core)   4.20.2-1.el7.elrepo.x86_64   docker://18.6.1
master02   Ready    master   24m   v1.13.2   192.168.92.12   <none>        CentOS Linux 7 (Core)   4.20.2-1.el7.elrepo.x86_64   docker://18.6.1
master03   Ready    master   24m   v1.13.2   192.168.92.13   <none>        CentOS Linux 7 (Core)   4.20.2-1.el7.elrepo.x86_64   docker://18.6.1
worker01   Ready    <none>   23m   v1.13.2   192.168.92.21   <none>        CentOS Linux 7 (Core)   4.20.2-1.el7.elrepo.x86_64   docker://18.6.1
[root@master01 ~]#
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

查看集羣組件pod狀態:

[root@master01 ~]# kubectl -n kube-system get pod -o wide
NAME                                    READY   STATUS    RESTARTS   AGE   IP              NODE       NOMINATED NODE   READINESS GATES
coredns-8595b69b-25nqs                  1/1     Running   0          25m   10.244.1.2      master03   <none>           <none>
coredns-8595b69b-dfzwz                  1/1     Running   0          25m   10.244.1.3      master03   <none>           <none>
kube-apiserver-master01                 1/1     Running   0          25m   192.168.92.11   master01   <none>           <none>
kube-apiserver-master02                 1/1     Running   0          24m   192.168.92.12   master02   <none>           <none>
kube-apiserver-master03                 1/1     Running   0          24m   192.168.92.13   master03   <none>           <none>
kube-controller-manager-master01        1/1     Running   0          24m   192.168.92.11   master01   <none>           <none>
kube-controller-manager-master02        1/1     Running   0          24m   192.168.92.12   master02   <none>           <none>
kube-controller-manager-master03        1/1     Running   0          24m   192.168.92.13   master03   <none>           <none>
kube-flannel-ds-6v625                   1/1     Running   0          24m   192.168.92.13   master03   <none>           <none>
kube-flannel-ds-8p8m7                   1/1     Running   0          24m   192.168.92.12   master02   <none>           <none>
kube-flannel-ds-m4ppq                   1/1     Running   0          23m   192.168.92.21   worker01   <none>           <none>
kube-flannel-ds-xrmd2                   1/1     Running   0          24m   192.168.92.11   master01   <none>           <none>
kube-proxy-bh4vl                        1/1     Running   0          25m   192.168.92.13   master03   <none>           <none>
kube-proxy-cq4fc                        1/1     Running   0          23m   192.168.92.21   worker01   <none>           <none>
kube-proxy-dz6l2                        1/1     Running   0          25m   192.168.92.12   master02   <none>           <none>
kube-proxy-qkmq8                        1/1     Running   0          25m   192.168.92.11   master01   <none>           <none>
kube-scheduler-master01                 1/1     Running   0          24m   192.168.92.11   master01   <none>           <none>
kube-scheduler-master02                 1/1     Running   0          24m   192.168.92.12   master02   <none>           <none>
kube-scheduler-master03                 1/1     Running   0          24m   192.168.92.13   master03   <none>           <none>
kubernetes-dashboard-6f9bfdf8cb-rn6wd   1/1     Running   0          24m   10.244.1.4      master03   <none>           <none>
[root@master01 ~]#
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

查看prometheus相關pod

[root@master01 ~]# kubectl -n monitoring get pod -o wide
NAME                                   READY   STATUS    RESTARTS   AGE   IP              NODE       NOMINATED NODE   READINESS GATES
alertmanager-main-0                    2/2     Running   0          19m   10.244.3.8      worker01   <none>           <none>
alertmanager-main-1                    2/2     Running   0          19m   10.244.3.10     worker01   <none>           <none>
alertmanager-main-2                    2/2     Running   0          19m   10.244.3.11     worker01   <none>           <none>
grafana-5c59c6fb9c-78ng5               1/1     Running   0          20m   10.244.3.4      worker01   <none>           <none>
kube-state-metrics-565c6647f7-sc8d5    4/4     Running   0          20m   10.244.3.5      worker01   <none>           <none>
node-exporter-5hdqk                    2/2     Running   0          20m   192.168.92.21   worker01   <none>           <none>
node-exporter-nxllq                    2/2     Running   0          20m   192.168.92.11   master01   <none>           <none>
node-exporter-q2znp                    2/2     Running   0          20m   192.168.92.12   master02   <none>           <none>
node-exporter-shdt8                    2/2     Running   0          20m   192.168.92.13   master03   <none>           <none>
prometheus-adapter-68c9d7dc54-bb9t4    1/1     Running   0          20m   10.244.3.6      worker01   <none>           <none>
prometheus-k8s-0                       3/3     Running   1          19m   10.244.3.9      worker01   <none>           <none>
prometheus-k8s-1                       3/3     Running   1          19m   10.244.3.7      worker01   <none>           <none>
prometheus-operator-5fcf4d9b4d-qkpb8   1/1     Running   0          20m   10.244.3.2      worker01   <none>           <none>
[root@master01 ~]#
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

查看service

[root@master01 ~]# kubectl get service -n kube-system
NAME                                           TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
coredns-prometheus                             ClusterIP   None           <none>        9153/TCP         23m
kube-controller-manager-prometheus-discovery   ClusterIP   None           <none>        10252/TCP        23m
kube-dns                                       ClusterIP   10.96.0.10     <none>        53/UDP,53/TCP    30m
kube-scheduler-prometheus-discovery            ClusterIP   None           <none>        10251/TCP        23m
kubelet                                        ClusterIP   None           <none>        10250/TCP        21m
kubernetes-dashboard                           NodePort    10.99.39.217   <none>        8443:30300/TCP   30m
[root@master01 ~]# kubectl get service -n monitoring
NAME                    TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)             AGE
alertmanager-main       NodePort    10.101.39.236   <none>        9093:30903/TCP      24m
alertmanager-operated   ClusterIP   None            <none>        9093/TCP,6783/TCP   23m
etcd-k8s                ClusterIP   None            <none>        2379/TCP            23m
grafana                 NodePort    10.110.93.179   <none>        3000:30902/TCP      24m
kube-state-metrics      ClusterIP   None            <none>        8443/TCP,9443/TCP   24m
node-exporter           ClusterIP   None            <none>        9100/TCP            24m
prometheus-adapter      ClusterIP   10.105.49.184   <none>        443/TCP             24m
prometheus-k8s          NodePort    10.103.34.132   <none>        9090:30900/TCP      24m
prometheus-operated     ClusterIP   None            <none>        9090/TCP            23m
prometheus-operator     ClusterIP   None            <none>        8080/TCP            24m
[root@master01 ~]#
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

增長worker節點

在已經部署的集羣內添加新的Worker Nodes。
準備worker節點,執行以前部署環境準備的配置相關步驟,配置主機名,配置ssh免密登陸等。
(1) 在Breeze界面添加主機(設定主機名、IP地址、備註)。
在這裏插入圖片描述
(2) 在Breeze界面編輯Kubernetes角色,將新主機加入到kubernetes worker nodes列表並勾選"Just add new worker nodes, do not reinstall this cluster"。
在這裏插入圖片描述

(3) 在Breeze界面僅僅勾選Docker和Kubernetes並開始部署。
在這裏插入圖片描述
添加節點完成
在這裏插入圖片描述
查看節點狀態

[root@master01 ~]# kubectl get nodes -o wide
NAME       STATUS   ROLES    AGE     VERSION   INTERNAL-IP     EXTERNAL-IP   OS-IMAGE                KERNEL-VERSION               CONTAINER-RUNTIME
master01   Ready    master   10h     v1.13.2   192.168.92.11   <none>        CentOS Linux 7 (Core)   4.20.2-1.el7.elrepo.x86_64   docker://18.6.1
master02   Ready    master   10h     v1.13.2   192.168.92.12   <none>        CentOS Linux 7 (Core)   4.20.2-1.el7.elrepo.x86_64   docker://18.6.1
master03   Ready    master   10h     v1.13.2   192.168.92.13   <none>        CentOS Linux 7 (Core)   4.20.2-1.el7.elrepo.x86_64   docker://18.6.1
worker01   Ready    <none>   10h     v1.13.2   192.168.92.21   <none>        CentOS Linux 7 (Core)   4.20.2-1.el7.elrepo.x86_64   docker://18.6.1
worker02   Ready    <none>   4m48s   v1.13.2   192.168.92.22   <none>        CentOS Linux 7 (Core)   4.20.2-1.el7.elrepo.x86_64   docker://18.6.1
[root@master01 ~]#
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

手動刪除節點
在Master節點上運行:

[root@master01 ~]# kubectl drain worker02 --delete-local-data --force --ignore-daemonsets         
[root@master01 ~]# kubectl delete node worker02
node "worker02" deleted
[root@master01 ~]# kubectl get nodes            
NAME       STATUS   ROLES    AGE   VERSION
master01   Ready    master   10h   v1.13.2
master02   Ready    master   10h   v1.13.2
master03   Ready    master   10h   v1.13.2
worker01   Ready    <none>   10h   v1.13.2
[root@master01 ~]#
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

上面兩條命令執行完成後,在k8s-node2節點執行清理命令,重置kubeadm的安裝狀態:

[root@worker02 ~]# kubeadm reset
 
  • 1

在master上刪除node並不會清理k8s-node2運行的容器,須要在刪除節點上面手動運行清理命令。

常見故障排錯

常見故障排錯方法
參考:https://github.com/wise2c-devops/breeze/blob/master/TroubleShooting-CN.md
前端Web UI的日誌若是不能判斷出具體問題所在,能夠在部署機上輸入如下命令來獲取更詳細的日誌:

[root@deploy ~]# docker logs -f deploy-main
 
  • 1
</div>
相關文章
相關標籤/搜索