文章目錄
• 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 來訪問該服務