一、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 是輕量版的...