Pod資源清單配置基礎
Docker
中我們都說容器、docker
,大家耳熟能詳。但到了kubernetes
中,這個專有名詞彷彿就被"取而代之"了。kubernetes
的語境中,我們將一個容器集合稱之爲Pod
- What is Pod?
- Pod的特徵
- Pod對象的配置格式
- Pod對象的申明類型
- 命令補充
- 三種網絡代理方式
- 參考文檔
- 備註
1.What is Pod?
那什麼是Pod?如圖所示,Pod中有一個pause容器,和一堆業務容器,他們有各自的PID
、MOUNT
和USER
,但他們共享IPC
、UTS
和NETWORK
。對於這六個專屬名詞的描述,可以看下面的表格:
簡稱 | 描述 |
---|---|
UTS | 主機名 |
IPC | 進程間通信 |
PID | "chroot"進程樹 |
MOUNT | 掛載點 |
NETWORK | 網絡訪問,包括接口 |
USER | 將本地的虛擬user-id映射到真實的user-id |
2.Pod的特徵
- 通過使用"各自"的IPC,使得可以在一個Pod中通信
- 容器可以通過localhost相互訪問
- 每個容器繼承Pod的名稱
- 每個Pod有一個平滑共享網絡名稱空間的ip地址
- Pod內部的存儲卷是共享的
3.Pod對象的配置格式
kind:定義資源類型,例如deployment、service等
apiVersion:定義調用的api版本,所支持的版本可以通過kubectl api-resources查看
metadata:資源提供源數據信息,如名稱、隸屬的名稱空間和標籤等
spec:用於定義用戶期望的狀態,不同的資源類型
Status:記錄活動對象的當前狀態信息,由k8s系統自行維護,對用戶來說爲只讀字段
4.Pod對象的申明類型
陳述式:
kubectl create -f xx.yaml
申明式:
kubectl apply -f xx.yaml
5.命令補充
#相關資源的命令查詢:
kubectl explain pods(.spec.tolerations….)
#導出pod對應的yaml模版:
kubectl get pod ngx-new-cb79d555-gqwf8 -o yaml --export > ngx-new-demo.yaml
#Docker 策略
Docker:
imagePullPolicy:
Always:無論本地有沒有鏡像,都要去互聯網拖(常用於拉取latest的鏡像)
IfNotPresent:如果本地沒有鏡像,就不啓動(常用於拉取指定版本的鏡像)
Nerver:本地有就直接用,沒有再去拖
6.三種網絡代理方式
Service:申明NodePort類型,可以通過任意節點訪問
hostPort:直接將容器的端口與所調度的節點上的端口路由,這樣用戶就可以通過宿主機的IP加上來訪問Pod了
hostNetwork:共享宿主機的網絡名稱空間
7.參考文檔
reference文檔:https://kubernetes.io/docs/reference/using-api/api-overview/
API文檔:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.16/
8.備註
本文原址位於我的Github,我會陸續將所有專題更新過來,其中包括docker、k8s、ceph、istio和prometheus,旨在分享雲原生中大而全的技術知識點和實操過程,如果對你有用,請follow、star我的github,這也是我更新、分享下去的動力,謝謝~