如何在Kubernetes集群上部署第一個pod?
譯文【51CTO.com快譯】Pod是Kubernetes應用程序的基本執(zhí)行單元。它是一起部署在同一個主機上的容器組成的集合。Kubernetes集群中的Pod可以通過兩種方式來使用:
- 運行單個容器的Pod:這是使用Pod的最流行方式。Kubernetes管理Pod,而不是直接管理容器。
- 運行多個需要協(xié)同工作的容器的Pod:在這種模式中,一個Pod可能有多個緊密耦合的容器以共享資源。
如上所述,一個Pod可能有多個容器,因此始終建議盡可能使用單個容器。在單個Pod中組合多個容器是一種相對高級的用例。您應該僅在容器緊密耦合的特定情況下使用該模式。
如果我們部署單個容器,一般可以將“pod”一詞換成“container”。Pod實現(xiàn)了諸成員之間的數(shù)據(jù)共享和聯(lián)系。
Pod 始終在節(jié)點上運行。節(jié)點是Kubernetes中的worker機器,可能是虛擬機或物理機,具體取決于集群。每個節(jié)點由主節(jié)點(Master)管理。一個節(jié)點可能有多個Pod,Kubernetes主節(jié)點跨集群中的節(jié)點自動處理Pod調度。
Pod生命周期的5個階段
- 等待中:Pod已被Kubernetes系統(tǒng)接受,但一個或多個容器映像尚未創(chuàng)建。這包括調度之前的時間以及通過網絡下載映像所花費的時間,這可能需要一段時間。
- 運行中:Pod已綁定到一個節(jié)點上,所有容器已創(chuàng)建好。至少有一個容器仍在運行中,或正在啟動或重新啟動。
- 成功:Pod內所有容器已成功終止,不會重啟。
- 失?。篜od中的所有容器已終止,至少一個容器終止失敗。也就是說,容器要么以非零狀態(tài)退出,要么被系統(tǒng)終止。
- 未知:由于某種原因,無法獲取Pod的狀態(tài),通常是由于與Pod主機聯(lián)系出錯。
前提條件
- AWS帳戶(如果還沒有帳戶,請創(chuàng)建)
- Kubernetes集群(如果您想學習創(chuàng)建Kubernetes集群,請搜索“使用kubeadm在AWS EC2實例Ubuntu 18.04 LTS上創(chuàng)建Kubernetes集群”)。
注意:如果您不想嘗試AWS EC2實例,也可以使用虛擬機來創(chuàng)建集群。
我們要做什么?
- 為NginX創(chuàng)建一個Kubernetes Pod,并刪除它。
為Nginx創(chuàng)建Kubernetes Pod
為創(chuàng)建我們的第一個Pod,不妨創(chuàng)建一個新目錄來創(chuàng)建我們的Object/Pod文件。使用以下命令在系統(tǒng)中創(chuàng)建一個新目錄:
- mkdir my-first-pod
- cd my-first-pod/
在進行下一步之前,請驗證集群的狀態(tài)。
要檢查集群中可用的節(jié)點并檢查“kubectl”的版本,請使用以下命令。
- sudo kubectl get nodes
- sudo kubectl version
使用以下命令列出默認命名空間中的pod。由于這是我們在集群中的第一個pod,您不會看到默認命名空間中的任何pod。
- sudo kubectl get pods
一旦集群中有了可用的節(jié)點,您可以準備創(chuàng)建第一個pod了。
創(chuàng)建文件“my-first-pod.yml”,附有以下代碼段:
- vim my-first-pod.yml
- ---
- apiVersion: v1
- kind: Pod
- metadata:
- name: myfirstpod
- labels:
- app: web
- spec:
- containers:
- - name: myfirstcontainer
- image: nginx
- ports:
- - containerPort: 80
其中
- apiVersion:APIVersion定義了對象的這個表示的版本模式。
- kind:您想創(chuàng)建的對象的類別。這里它是pod,因為我們在創(chuàng)建的是pod。
- name:名稱在命名空間中是獨特的。
- labels:可用于組織和分類對象的字符串鍵和值的映射。
- spec:pod的預期行為的規(guī)范。
現(xiàn)在您可以準備使用以下命令創(chuàng)建pod了。
- sudo kubectl apply -f my-first-pod.yml
您可以使用以下命令獲取pod的細節(jié)。
- sudo kubectl get pods
為證實Pod是否果真在運行中,運行以下命令。這在我們的pod里面運行命令(注意:這類似運行docker exec。)
- sudo kubectl exec myfirstpod — service nginx status
如果您不再需要pod,可使用“kubectl delete command”刪除它。
- sudo kubectl delete pods myfirstpod
最后要證實pod是否已被刪除,使用以下命令:
- sudo kubectl get pods
結語
我們在本文中了解了pod的基本知識及其生命周期的幾個階段。我們看到了在Kubernetes上創(chuàng)建第一個Nginx Pod的幾個步驟,還看到了如何可以提取有關Pod的細節(jié)。此外,我們還介紹了刪除Pod的命令。
原文標題:How to deploy your first pod on a Kubernetes Cluster
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】