1. 程式人生 > >『中級篇』K8S最小調度單位Pod(62)

『中級篇』K8S最小調度單位Pod(62)

container 需要 mage cimage 原創文章 靈活 lang 如何解決 如果

>原創文章,歡迎轉載。轉載請註明:轉載自IT人故事會,謝謝!
>原文鏈接地址:『中級篇』K8S最小調度單位Pod(62)

k8s裏面非常重要的一個概念pod,首先簡單的介紹是pod是k8s最小的調度單位,一個pod裏面可以包含一個或者多個container,一個pod共享一個namespace,它們之前可以通過localhost來進行通信。源碼:https://github.com/limingios/docker/tree/master/No.9

技術分享圖片

演示pod

  1. 下載源碼

    https://github.com/limingios/docker/tree/master/No.9

技術分享圖片

  1. pod_nginx.yml 演示

    k8s api裏面的格式

apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    app: nginx
spec:
  containers:
  - name: nginx
    image: nginx
    ports:
    - containerPort: 80

技術分享圖片

  1. 開始運行pod節點

    確認k8s通過minikube單節點沒有問題

kubectl version
#創建pod
kubectl create -f pod_nginx.yml
#查看pod狀態
kubectl get pods
#查看pod狀態ip狀態
kubectl get pods -o wide

技術分享圖片

技術分享圖片

技術分享圖片

進入minikube 查看docker ps,內部其實就是docker

minikube start
docker ps
docker exec -it nginxId
exit

技術分享圖片

查看pod nginx的網絡

docker network ls
#查看到nginx的ip是172.17.0.4
docker network inspect bridge
exit
kubectl get pods -o wide

技術分享圖片

技術分享圖片

技術分享圖片

上邊這種是不是感覺很麻煩,如果想進入容器,還需要想進入虛擬機然後docker ps 找到id,最後docker exec的方式。其實不用那麽復雜。

#進入nginx的容器
kubectl exec -it nginx sh
#了解下進入容器的所有的命令
kubectl exec -it -h

技術分享圖片

技術分享圖片

# nginx這個pods的所有詳細信息
kubectl describe pods nginx

技術分享圖片

通過ip的方式,看看nginx啟動起來沒?

minikube ssh
ping 172.17.0.4
curl 172.17.0.4

技術分享圖片

老鐵 現在你最想的是什麽?我最想的是:在本機可以訪問到nginx的服務,而不是在內部。在原來學docker的時候可以進行-p 端口映射的方式。在k8s的kubectl 同樣可以看命令。

kubectl port-forward nginx 8080:80

技術分享圖片

PS:最後把容器內的nginx暴露出來了可以在外部訪問了,是不是覺得美滋滋,這次主要講了如果pod的方式創建容器,由k8s進行管理,獲取到nginx的ip地址,映射容器內的端口,其實我感覺有點類似docker-swarm,但是這個好像比docker-swarm靈活點。也留個小問題,現在是用的port-forward它得一直開著,如果關閉了,直接就訪問不了了,這種該如何解決。下次我來說!

技術分享圖片

『中級篇』K8S最小調度單位Pod(62)