k8s部署nginx(Pod、Deployment、Service)


一、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 的網絡層抽象

  1. spec.selector: 指定如何選擇 Pod
  2. spec.ports: 指定如何暴露端口

 

 

創建NodePort service時,用戶可以指定范圍為30000-32767的端口,對該端口的訪問就能通過 kube-proxy 代理到service后端的pod中

我們使用 kubectl apply 部署生效后查看 Service 狀態

kubectl get svc nginx-service -o wide

 

 

curl 

 

 

截圖中源碼文件地址:

參考文章:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM