K8s 運維指南

2021-09-24 13:37:20 字數 3120 閱讀 6406

一、node的隔離與恢復

在硬體公升級、維護等情況下,我們需要將某些node進行隔離,脫離k8s集群的排程範圍。k8s提供了一種機制,既可以將node納入排程範圍,也可以將node脫離排程範圍。

建立配置檔案unschedule_node.yaml,在spec部分指定unschedulable 問true:

[root@master node]# cat unschedule_node.yaml 

apiversion: v1

kind: node

metadata:

name: 192.168.0.222

labels:

kubernetes.io/hostname: k8s-node-1

spec:

unschedulable: true

然後,通過 kubectl replace 命令完成對node 狀態的修改:

[root@master node]# kubectl replace -f unschedule_node.yaml 

node/192.168.0.222 replaced

[root@master node]# kubectl get nodes

name status roles age version

192.168.0.144 ready 25d v1.11.6

192.168.0.148 ready 25d v1.11.6

192.168.0.222 ready,schedulingdisabled 5d v1.11.6

檢視node的狀態,可以觀察到在node的狀態中增加了一項schedulingdisabled,對於後續建立的pod,系統將不會再向該node進行排程。也可以不使用配置檔案,直接使用 kubectl patch 命令完成:

kubectl patch node k8s-node-1 -p '}'

需要注意的是,將某個node脫離排程範圍時,在其上執行的pod並不會自動停止,管理員需要手動停止在改node是上執行的pod.

同樣,如果需要將某個node重新納入集群排程範圍,則將unschedulable 設定為false,再次執行 kubectl replace 或者kubectl patch 命令就能恢復系統對改node的排程。

第三種方法:

使用kubectl cordon 對某個node 進行隔離排程操作

[root@master node]# kubectl cordon 192.168.0.148

node/192.168.0.148 cordoned

[root@master node]# kubectl get nodes

name status roles age version

192.168.0.144 ready 25d v1.11.6

192.168.0.148 ready,schedulingdisabled 25d v1.11.6

192.168.0.222 ready,schedulingdisabled 5d v1.11.6

恢復排程操作:

[root@master node]# kubectl uncordon 192.168.0.222

node/192.168.0.222 uncordoned

[root@master node]# kubectl get nodes

name status roles age version

192.168.0.144 ready 25d v1.11.6

192.168.0.148 ready 25d v1.11.6

192.168.0.222 ready 5d v1.11.6

二、node擴容

在k8s集群中,乙個新node的加入是非常簡單的。在新的node節點上安裝docker、kubelet和kube-proxy服務,然後配置kubelet和kube-proxy的啟動引數,拷貝證書,最後啟動這些服務。通過kubelet預設的自動註冊機制,新的node將會自動加入現有的k8s集群中。

k8s master在接受了新node的註冊之後,會自動將其納入當前集群的排程範圍內,在之後建立容器時,就可以像新的node進行排程了。

通過這種機制,實現集群中node的擴容。

三、namespace: 集群環境共享與隔離

1.建立namespace

[root@master yaml]# kubectl create namespace test

namespace/test created

[root@master yaml]# kubectl get namespace

name status age

default active 55d

kube-public active 55d

kube-system active 55d

quizii active 42d

test active 9s

[root@master yaml]# kubectl delete namespace test

namespace "test" deleted

[root@master yaml]cat namespace-devlopment.yaml

apiversion: v1

kind: namespace

metadata:

name: development

# kubectl create -f namespace-development.yaml

namespaces/developmentx

K8s概念指南

cluster 集群是指由 k8s使用一些列的物理機 虛擬機器和其他基礎資源來執行你的應用程式 node 乙個 node 就是乙個執行著 k8s的物理機或虛擬機器,平切 pod可以在其上面被排程 pod 乙個 pod對應乙個由相關容器和卷組成的容器組 label 乙個 label 是乙個被附加到資源...

K8S基本概念 《K8S權威指南》

1.master 1 指集群控制節點,每個集群中至少有乙個master負責集群的管理和控制。k8s集群中所有的控制命令都發給master節點,它負責具體的執行過程。master若不可用,對於集群的管理都將失效。2 master節點上執行的關鍵程序 kube apiserver 提供http rest...

K8s自動化運維平台

使用elk模型步驟 1 安裝部署es,用的6.8.6,用7版本的可能需要公升級jre環境。用二進位制方式安裝。2 安裝部署kafka,2.2.0,超過2.2的,沒有更高的kafka manager,建議用2.2 以下的。讓資料流變成非同步的。3 製作filebeat映象,filebeat 是輕量版的...