11. 搭建一個完整的K8S集群


11. 搭建一個完整的Kubernetes集群

1. kubectl的命令遵循分類的原則(重點)

語法1:

kubectl 動作 具體的對象

例如:

"""
kubectl describe node  master

describe	描述,相當於語法中的動作
node		node資源,相當於語法中的類,對某一類資源的統稱
master		node資源中的一個叫master資源,相當於語法中的具體對象
"""

語法2:

kubectl 動作 大范圍參數 細化參數 ...

例如:

"""
kubectl get pods  -n  kube-system  -o  wide

-n	表示  namespace(命名空間)
kube-system  表示 多個命名空間中的一個命名空間
-o	
wide	更加全面的展示信息
"""

2. Master節點是通過什么技術來限制用戶不允許運行用戶自己的pod的?

默認情況下 Master 節點是不允許運行用戶 Pod 的。而 Kubernetes 做到這一點,依靠的是 Kubernetes 的 Taint/Toleration 機制

它的原理非常簡單:一旦某個節點被加上了一個 Taint(污點),即被“打上了污點”,那么所有 Pod 就都不能在這個節點上運行,因為 Kubernetes 的 Pod 都有“潔癖”

除非,有個別的 Pod 聲明自己能“容忍”這個“污點”,即聲明了 Toleration,它才可以在這個節點上運行。

其中,為節點打上“污點”(Taint)的命令是:

kubectl taint nodes node1 foo=bar:NoSchedule

這時,該 node1 節點上就會增加一個鍵值對格式的 Taint,即:foo=bar:NoSchedule。其中值里面的 NoSchedule,意味着這個 Taint 只會在調度新 Pod 時產生作用,而不會影響已經在 node1 上運行的 Pod,哪怕它們沒有 Toleration。

那么 Pod 又如何聲明 Toleration 呢?

我們只要在 Pod 的.yaml 文件中的 spec 部分,加入 tolerations 字段即可:

apiVersion: v1
kind: Pod
...
spec:
  tolerations:
  - key: "foo"
    operator: "Equal"
    value: "bar"
    effect: "NoSchedule"

這個 Toleration 的含義是,這個 Pod 能“容忍”所有鍵值對為 foo=bar 的 Taint( operator: “Equal”,“等於”操作)。

現在回到我們已經搭建的集群上來。這時,如果你通過 kubectl describe 檢查一下 Master 節點的 Taint 字段,就會有所發現了:

$ kubectl describe node master
 
Name:               master
Roles:              master
Taints:             node-role.kubernetes.io/master:NoSchedule

可以看到,Master 節點默認被加上了node-role.kubernetes.io/master:NoSchedule這樣一個“污點”,其中“鍵”是node-role.kubernetes.io/master,而沒有提供“值”

此時,你就需要像下面這樣用“Exists”操作符(operator: “Exists”,“存在”即可)來說明,該 Pod 能夠容忍所有以 foo 為鍵的 Taint,才能讓這個 Pod 運行在該 Master 節點上:

apiVersion: v1
kind: Pod
...
spec:
  tolerations:
  - key: "foo"
    operator: "Exists"
    effect: "NoSchedule"

當然,如果你就是想要一個單節點的 Kubernetes,刪除這個 Taint 才是正確的選擇

$ kubectl taint nodes --all node-role.kubernetes.io/master-

如上所示,我們在“node-role.kubernetes.io/master”這個鍵后面加上了一個短橫線“-”,這個格式就意味着移除所有以“node-role.kubernetes.io/master”為鍵的 Taint


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM