官方網站:https://kubernetes.io/zh/docs/setup/production-environment/tools/kubeadm/install-kubeadm/
Pod管理
- Pod 是可以創建和管理 Kubernetes 計算的最小可部署單元,一個 Pod 代表着集羣中運行的一個進程,每個 pod 都有一個唯一的 IP
- 一個 pod 類似一個豌豆莢,包含一個或多個容器(通常是docker),多個容器間共享 IPC、Network 和 UTC namespace
kubectl命令指南:https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands
拉取nginx鏡像,上傳到私有harbor倉庫
docker pull hub.c.163.com/library/nginx:latest
docker tag hub.c.163.com/library/nginx reg.harbor.com/library/nginx
docker push reg.harbor.com/library/nginx
刪除鏡像
docker rmi hub.c.163.com/library/nginx
創建Pod應用
kubectl run nginx --image=nginx --replicas=2 --record
本來這裏是k8s4也會創建pod應用的,但因爲replicas參數已經被棄用,所以不會生效,最終只是再k8s4創建pod應用後面我們可以通過資源清單的方式批量部署pod應用。
集羣內部任意節點可以訪問Pod,但集羣外部無法直接訪問
刪除Pod
kubectl delete pod nginx
- service是一個抽象概念,定義了一個服務的多個pod邏輯合集和訪問pod的策略,一般把service稱爲微服務
創建service
kubectl expose pod nginx --port=80 --target-port=80
- 此時pod客戶端可以通過service的名稱訪問後端Pod
- ClusterIP: 默認類型,自動分配一個僅集羣內部可以訪問的虛擬IP
使用NodePort類型暴露端口,讓外部客戶端訪問Pod
NodePort: 在ClusterIP基礎上爲Service在每臺機器上綁定一個端口,這樣就可以通過 NodeIP:NodePort 來訪問該服務
kubectl edit svc nginx //修改service的type爲NodePort
上述操作是將其分爲兩個命令進行設置,合併成一個命令的話爲:
kubectl expose deployment nginx --port=80 --target-port=80 --type=NodePort //也可以在創建service時指定類型
更新pod鏡像
kubectl set image deployment nginx nginx=nginx:1.16.0 --record
回滾
kubectl rollout history deployment nginx ##查看歷史版本
kubectl rollout undo deployment nginx --to-revision=1 ##回滾版本