一、Pod
pod 是 kubernetes 中最小的編排單位,通常由一個容器組成 (有時候會有多個容器組成)
nginx-pod.yaml
將配置apply到k8s
kubectl apply -f nginx.yaml
校驗部署狀態,此時 STATUS 為 Running 表明部署成功
獲取 Pod 部署的狀態,特別是 IP , -o wide 列出IP/Node等更多信息
kubectl get pods nginx -o wide
獲取更加詳細的信息
kubectl describe pod nginx
使用 kubectl exec 進入 Pod 的內部容器。如果 Pod 中有多個容器,使用 kubectl exec -c 指定容器
kubectl exec -it nginx sh
在 Pod 容器中執行命令,校驗其中的 socket 情況以及 nginx 服務
netstat -tan
wget -q -O - localhost
二、Deployment
在 k8s 中編排應用可以更好地做彈性擴容,負載均衡。既然要均衡,一個 Pod 肯定不能均衡,自然要部署多個 Pod
docker-compose 可以簡單地通過 docker-compose scale 來擴容,現在用k8s擴容
在k8s中管理 Pod 的稱作 Controller,我們可以使用 Deployment 這種 Controller 來為 Pod 進行擴容,當然它還可以滾動升級,回滾,金絲雀等等關於部署的事情
我們編寫一個 Deployment 的資源配置文件
- spec.template: 指定要部署的 Pod
- spec.replicas: 指定要部署的個數
- spec.selector: 定位需要管理的 Pod
我們使用 kubectl apply 部署生效后查看 Pod 以及 Deployment 狀態
kubectl get pods -o wide -l 'app=nginx'
三、Service
Service 做服務發現 指定 Deployment 或者特定集合 Pod 的網絡層抽象
- spec.selector: 指定如何選擇 Pod
- spec.ports: 指定如何暴露端口
創建NodePort service時,用戶可以指定范圍為30000-32767的端口,對該端口的訪問就能通過 kube-proxy 代理到service后端的pod中
我們使用 kubectl apply 部署生效后查看 Service 狀態
kubectl get svc nginx-service -o wide
參考文章:https://juejin.im/post/5db8c2b46fb9a020256692dc
