pod是k8s專案中的最小編排單位,它是執行中的一組(一個或多個)容器,這些容器共享儲存、網路、排程等資源,pod是一個邏輯概念,同一個名稱空間下不同pod可以通過ip互相訪問。
一、通過命令列方式管理
1.建立
在dev名稱空間下建立名稱為mynginx的pod,如果不指定-n引數,則預設建立在default名稱空間下
kubectl run mynginx --image=nginx -n dev
2.檢視dev名稱空間下所有pod的簡單資訊
kubectl get pod -n dev
建立pod需要時間,尤其是節點上沒有該映象時,還需要下載映象,可以看到pod的Status狀態會隨著時間而改變,最後變成Running表示pod啟動成功
3.檢視dev名稱空間下所有pod的詳細資訊
kubectl get pod -n dev -owide --show-labels
結果截圖如下
NODE:表示該pod被排程了哪個worker節點上
IP:k8s會為每個pod分配一個ip,叢集中的任意一個機器以及任意的應用都能通過此ip來訪問這個Pod
在master節點上可以通過curl ip訪問pod
# 預設是80埠,所以訪問的是pod中的nginx容器
curl 10.244.218.1
4.根據標籤檢索pod
kubectl get pod -n dev -owide --show-labels -l app=nginx
5.檢視pod的描述資訊
kubectl describe pod mynginx -n dev
其中Events事件可以檢視到pod被建立的詳細過程
6.檢視Pod的執行日誌
kubectl logs mynginx -n dev
7.進入pod容器
kubectl exec -it mynginx /bin/bash -n dev
更改nginx容器的index.html內容
echo "hello,pod" >> /usr/share/nginx/html/index.html
再次訪問mynginx
curl 10.244.218.1
可以看到index.html首頁內容已經發生了變化
8.監控pod狀態命令
使用k8s的-w引數
kubect get pod -n dev -w
使用linux命令
watch -n 1 kubectl get pod -n dev
9.刪除pod
kubectl delete pod mynginx -n dev
二、使用yaml管理
1.在pod裡部署兩個容器
一個pod裡面不能部署相同映象的容器,埠衝突
(1)建立yaml檔案
vi pod-nginx-tomcat.yaml
(2)編寫pod檔案內容,定義兩個容器,一個為nginx,一個為tomcat
apiVersion: v1
kind: Pod
metadata:
labels:
web: server
name: web-server
namespace: dev
spec:
containers:
- image: nginx
name: nginx
- image: tomcat:9.0
(3)使用kubectl apply建立pod
kubectl apply -f pod-nginx-tomcat.yaml
(4)自動監控建立過程
kubectl get pod -n dev -w
2.檢視pod描述
kubectl describe pod web-server -n dev
3.在節點上訪問pod
(1)檢視pod的ip
kubectl get pod -n dev -owide
(2)通過此ip訪問pod中的nginx容器
curl 10.244.218.2
(3)通過此ip訪問pod中的tomcat容器
curl 10.244.218.2:8080
4.進入pod裡面訪問服務
(1)進入pod裡面的nginx容器
kubectl exec web-server --container nginx -it /bin/bash -n dev
(2)在容器內,以下命令均可訪問,證明了pod裡網路共享
curl localhost
curl localhost:8080
curl 10.244.218.2
curl 10.244.218.2:8080