什么是 Kubernetes 物件?
在k8s中管理員與平臺互動的最重要方式之一就是創建和管理 Kubernetes 物件,物件有助于幫助用戶部署應用程式和維護集群,
理解 Kubernetes 物件的另一種方法是將它們視為類實體,每個創建的物件都參考一個預定義的類,該類告訴 api server 如何處理系統資源并與特定組件進行通信,那么這些物件都包含哪些呢?這篇文章就通過一些實體來說明物件怎么使用,或者怎么去定義物件,
在Kubernetes 中物件都包含namespaces、pod、deployments、volumes以及secrets等,
要查看 Kubernetes 集群中可用物件串列,可通過 kubectl 命令查看:
kubectl api-resources
執行命令后,可以看到如下一部分物件串列,這里只是截取了一小部分,

那么這些物件都是怎么產生的呢,或者怎么創建的呢?繼續看,
首先我們在創建物件的時候,一般都是使用 YAML 或 JSON 在檔案中描述想要的內容(所需狀態),它稱為物件規范,
下面先來一個Pod物件規范示例(YAML):
# Pod spec
apiVersion: v1
kind: Pod
metadata:
name: webserver-pod
spec:
containers:
- name: webserver
image: nginx:latest
ports:
- containerPort: 80
在上面的例子中給出了很多欄位,這些欄位解釋如下:
apiVersion:物件的Kubernetes API 版本kind: 物件種類,e.g.Pod、Deployment、Service、Configmap等metadata:元資料,用于唯一標識和描述Kubernetes物件,一些常見添加到物件中的關鍵元資料labels,name,namespace,annotations等spec:在 Kubernetes 物件定義的spec部分中,宣告創建的物件所需狀態和特征
上面這幾個欄位在定義物件中都是通用的,
當然還有很多欄位我們這里就不做介紹了,可以通過執行如下命令查看各個欄位的意思:
kubectl explain pods

這里是列舉了pod欄位的含義,你也可以查看services、namespaces等等,
定義好物件組態檔以后,我們就可以通過下面的命令去創建部署,這里檔案我命名為webserverPod.yaml:
kubectl apply -f webserverPod.yaml
理解了什么是物件和物件怎么創建部署以后,我們接下來通過例子來實踐一下,
一個Nginx服務示例
1.創建namespace物件nginx-namespace.yaml:
apiVersion: v1
kind: Namespace
metadata:
name: nginx-test
labels:
name: label-test
執行下面命令創建:
kubectl create -f nginx-namespace.yaml
kubetcl get namespace
結果如下圖:

2.創建Pod物件,這里不直接創建 Pod, 通過controller創建pod,nginx-deployment.yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: nginx-test
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 2 #這里要求部署 2 個Pod
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:alpine
ports:
- containerPort: 80
執行下面命令創建:
kubectl create -f nginx-deployment.yaml
kubectl get deployment -n nginx-test
// 查看Pod的狀態以及Ip等資訊
kubectl get pods -o wide -n nginx-test
// 也可以通過下面這個查詢Pod
kubectl get pods -n nginx-test
結果如下圖:

創建service物件,nginx-service.yaml:
apiVersion: v1
kind: Service
metadata:
namespace: nginx-test
name: nginx-service
spec:
selector:
app: nginx
type: NodePort
ports:
- protocol: TCP
port: 80
targetPort: 80
執行下面命令創建:
kubectl create -f nginx-service.yaml
kubectl get svc nginx-service -o wide -n nginx-test
結果如下圖:

然后進入節點后curl http://10.105.251.12,當然我們也可以指定埠比如我們指定宿主機的埠為30082,修改上面的nginx-service.yaml如下:
apiVersion: v1
kind: Service
metadata:
namespace: nginx-test
name: nginx-service
spec:
selector:
app: nginx
type: NodePort
ports:
- protocol: TCP
port: 80
targetPort: 80
nodePort: 30082
然后執行kubectl apply -f nginx-service.yaml修改,我們在去查看service的時候如下:

然后curl http://127.0.0.1:30082,一樣成功,
好了關于k8s物件與定義物件和部署就先到這里,這篇文章主要簡單的介紹了怎么去部署nginx一個服務,以及什么是k8s物件,下一篇重點介紹kubectl的常用命令,
轉載:風向閱讀 - Kubernetes 物件以及部署nginx服務示例(四)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/556338.html
標籤:其他
上一篇:寫博文之必備技能MarkDown
下一篇:返回列表
