Kubernetes(K8S)(二)——Kubernetes的Pod管理


• Pod是可以創建和管理Kubernetes計算的最小可部署單元,一個Pod代表着集羣中運行的一個進程,每個pod都有一個唯一的ip。
• 一個pod類似一個豌豆莢,包含一個或多個容器(通常是docker),多個容器間共享IPC、Network和UTC namespace。

在這裏插入圖片描述

1.相關配置

kubectl命令:https://kubernetes.io/docs/reference/generated/kubectl/kubectlcommands
1.配置每個節點的私有倉庫,及每個節點都有證書
在server2與server3上:
vim /etc/docker/daemon.json

{  
  "registry-mirrors": ["https://reg.red.org"], ##添加私有倉庫
  "exec-opts": ["native.cgroupdriver=systemd"],  
  "log-driver": "json-file",  
  "log-opts": {    
    "max-size": "100m"  
  },  
  "storage-driver": "overlay2",  
  "storage-opts": [    
    "overlay2.override_kernel_check=true"  
  ] 
}

systemctl restart docker重啓docker引擎
在這裏插入圖片描述
在這裏插入圖片描述


2.創建自主式pod

# docker load -i nginx.tar
$ kubectl run nginx --image=nginx --replicas=2 --record
$ kubectl get pod查看pod的運行狀態
$ kubectl get pod -o wide查看pod的運行位置
$ kubectl logs demo查看日誌輸出
$ kubectl describe pod demo查看pod的詳細信息

注意:集羣內部任意節點可以訪問Pod,但集羣外部無法直接訪問。
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述


3.使用控制器部署pod+刪除pod

$ kubectl create deployment myapp --image=nginx使用控制器部署pod
$ kubectl delete pod myapp-687598b8b4-ch84w刪除pod
$ kubectl delete deployment.apps myapp徹底刪除

在這裏插入圖片描述


4.Pod擴容與縮容

$ kubectl create deployment myapp --image=nginx
$ kubectl scale deployment myapp --replicas=2
$ kubectl scale deployment myapp --replicas=5手動擴容
$ kubectl scale deployment myapp --replicas=2手動縮容

在這裏插入圖片描述
在這裏插入圖片描述


5.service設定

service是一個抽象概念,定義了一個服務的多個pod邏輯合集和訪問pod的策略, 一般把service稱爲微服務。
創建service:
$ kubectl expose deployment nginx --port=80 --target-port=80 此時pod客戶端可以通過service的名稱訪問後端的兩個Pod
ClusterIP: 默認類型,自動分配一個僅集羣內部可以訪問的虛擬IP

kubectl expose deployment myapp --port=80 --target-port=80暴露端口
kubectl get svc查看service
kubectl describe svc myapp
kubectl get pod -o wide
kubectl get pod --show-labels

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述


6.pod鏡像更新和回滾

更新pod鏡像 $ kubectl set image deployments myapp nginx=myapp:v1 --record
查看歷史版本 $ kubectl rollout history deployment nginx
回滾版本 $ kubectl rollout undo deployment myapp --to-revision=2

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述


7. 使用NodePort類型暴露端口,讓外部客戶端訪問Pod

$ kubectl edit svc myapp 修改service的type爲NodePort
$ kubectl expose deployment nginx --port=80 --target-port=80 -type=NodePort 也可以在創建service時指定類型

NodePort: 在ClusterIP基礎上爲Service在每臺機器上綁定一個端口,這樣就可以通過NodeIP:NodePort 來訪問該服務

在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述
在這裏插入圖片描述


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章