一個適當的Kubernetes是由多個實體機器或者虛擬機器,配合正確的網路設定,以便Kubernetes內運行的所有容器都可以在相同的扁平網路環境內互相連通。

1. 查詢k8s叢集是否正常運作

[root@cp200 ch2]# kubectl cluster-info 
Kubernetes control plane is running at <https://cluster.k8s:6443>
CoreDNS is running at <https://cluster.k8s:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy>

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

2. 查詢k8s有哪些節點

[root@cp200 ch2]# kubectl get nodes 
NAME        STATUS   ROLES                  AGE    VERSION
cp200.k8s   Ready    control-plane,master   138m   v1.23.5
wk201.k8s   Ready    <none>                 137m   v1.23.5
wk202.k8s   Ready    <none>                 137m   v1.23.5

3. 查看node 更詳細資訊

使用 kubectl descirbe node <node名稱> 查看節點詳細資料,可以不用加節點名稱,這樣就會展示出全部的節點詳細資料

[root@cp200 ch2]# kubectl describe nodes cp200.k8s
...以下省略

4. 部屬第一個k8s應用

以下的指令已經在新版本的 k8s 不能用來建立 ReplicationController

~~kubectl run kubia --image=abowspy/kubia --port=8080 --generator=run/v1~~

PS. --generator 這個參數廢棄了 (這會讓k8s建立一個RC,而不是deployment) PS. kubectl run 只能用來建立 pod PS. 也不能用此指令方式建立 ReplicationController

所以改用以下 yaml檔案,部屬第一個k8s應用

建立一個 kubia.yaml 檔案,內容如下

apiVersion: v1
kind: ReplicationController
metadata:
  name: kubia
spec:
  template:
    metadata:
      labels:
        run: kubia
    spec:
      containers:
      - name: kubia
        image: abowspy/kubia
        ports:
        - containerPort: 8080

然後再使用以下指令,配合剛剛的 yaml檔案,來建立ReplicationController

[root@cp200 ch2]# kubectl create -f kubia.yaml
replicationcontroller/kubia created

5. 介紹pod

k8s 基本上是不直接處裡單個容器,他使用多個共存容器的概念,這組容器就叫做 pod ,pod 是 k8s 最小的運作的單位。 一個 pod 包含 一群緊密相關的容器,一個 pod 裡面的所有容器一定會運作在同一個工作節點上,以及同一個 linux 命名空間。 每一個 pod 就像是一個獨立的邏輯機器,擁有自己的IP、主機名稱、程序等,運行一個單一應用程式。 應用程式可以是一個單一程序運行在一個容器裡,也可以是一個主要應用程式和附加支援程序(每個程序都運行在自己的容器裡)。

圖 2.2 容器、Pod 與工作節點的關係圖

圖 2.2 容器、Pod 與工作節點的關係圖