<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
在之前k8s元件一篇中,我們談到了pod這個元件,瞭解到pod是k8s中資源管理的最小單位,可以說Pod是整個k8s對外提供服務的最基礎的個體,有必要對Pod做深入的學習和探究。
為了加深對k8s中pod的理解,再來回顧下k8s的完整架構
結合上面這張圖,關於pod,可以總結下面幾點:
根據pod是否自主建立,可以分為兩種
從上圖可以發現,容器是執行在pod中的,也可以簡單理解為pod是容器執行的外部容器,所以一個pod理論上可以執行很多個docker容器,關於這一點,做兩點說明:
對於k8s叢集中的某個節點來說,可能部署了多個pod,這些不同的pod之間如果也需要互相通訊怎麼辦呢?這就需要說到pod中的網路了;
K8S叢集的有4種網路:
具體如下:同一pod內的容器間通訊、各pod彼此之間的通訊、pod與service間的通訊、以及叢集外部的流量同service之間的通訊
1、檢視k8s叢集中系統執行的pod
kubectl get pod -n kube-system
2、檢視創自己建立的pod
kubectl get pod 或 kubectl get pod,svc,deploy
3、刪除pod
直接刪除pod:
kubectl delete pod pod名稱 -n 名稱空間
刪除通過控制器建立的pod:
kubectl delete pod控制器名稱 -n 名稱空間
4、啟動一個pod【命令方式啟動】
kubectl run pod名稱 --image=映象 --port=80 --namespace 名稱空間名字
比如在上一篇中,我們建立了一個nginx的pod,可以寫成:
kubectl run test-nignx-pod --image=nginx:1.23.0 --port=80 --namespace test
5、啟動一個pod【yaml方式啟動】
在當前目錄下建立一個yaml的檔案
設定內容如下:
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deploy labels: chapter: first-app spec: selector: matchLabels: app: nginx replicas: 1 template: metadata: labels: app: nginx spec: containers: - name : nginx image: nginx:1.23.0 ports: - containerPort: 80
然後使用apply的方式啟動
kubectl apply -f ./test-nginx.yaml
注意點:
通過 apply -f 的方式建立的pod,刪除的時候,也需要通過apply -f 的方式刪除
6、通過deployment控制器匯出yaml檔案
在當前叢集下,我們有下面這個pod
使用下面的命令匯出這個pod對應的yaml
kubectl create deployment test-nginx3 --image=nginx:1.23.0 --namespace test -o yaml --dry-run=client > ./nginx.yaml
執行之後可以發現在當前目錄下建立了一個yaml的檔案
檔案內容是不是和前面我們自己建立的那個yaml很像,看起來似乎更加完整,需要注意的是,這個裡面的有些引數是可以手動修改的,比如:replicas 這個表示生成的nginx的pod個數;
然後就可以使用apply的命令建立pod了
kubectl apply -f nginx.yaml
7、檢視某個名稱空間下 pod 的詳細資訊
kubectl get pod -n ns名稱 -o wide
比如,檢視default名稱空間下的pod資訊,就能看到上面通過yaml檔案建立的pod;
kubectl get pod -n default -o wide
通過k8s建立出來的pod,會分給當前的pod一個IP地址,可以直接通過curl 進行存取【同一個叢集下的其他節點都可存取】
1、pod映象拉取策略
pod映象拉取策略可以通過imagePullPolicy欄位設定映象拉取策略,如下:
spec: containers: - name: nginx image: nginx:1.23.0 imagePullPolicy: Always #可取 Always(預設值)、IfNotPresent、Never
imagePullPolicy可以使用以下3種策略值:
Always: 預設值,每次建立pod都會重新拉取一次映象;
IfNotPresent: 映象在宿主機上不存在時才拉取;
Never: 永遠不會主動拉取映象,使用本地映象,需要你手動拉取映象下來;
2、pod使用資源限制設定
我們知道,叢集中的節點都是有一定的設定的,比如CPU,記憶體等資訊,總不能因為建立的某個pod把節點的資源給打滿了,因此可以在組態檔中進行設定,以使用apply -f 的方式建立一個pod,組態檔中關鍵設定如下:
resources: requests: memory:"記憶體大小" cpu:"cpu佔用大小" limits: memory:"記憶體佔用大小" cpu:"cpu佔用大小"
下面是一段完整的標籤設定和說明
spec: containers: - name: string #必選,容器名稱 image: string #必選,容器的映象名稱 resources: #資源限制和請求的設定 limits: #資源限制的設定 cpu: string #Cpu的限制,單位為core數,將用於docker run --cpu-shares引數 memory: string #記憶體限制,單位可以為Mib/Gib,將用於docker run --memory引數 requests: #資源請求的設定 cpu: string #Cpu請求,容器啟動的初始可用數量 memory: string #記憶體請求,容器啟動的初始可用數量
如下為一段實際使用中的設定
更多設定,請參考檔案:k8s檔案
3、關於pod的建立流程
以通過kubectl apply -f xxx.yaml 這種方式建立的pod進行說明,結合本文開頭的k8s架構圖:
4、Pod排程策略
預設情況下,一個Pod在哪個Node節點上執行,是由Scheduler元件採用相應的演演算法計算出來的,這個過程是不受人工控制的。但是在實際使用中,這並不滿足的需求,因為很多情況下,我們想控制某些Pod到達某些節點上,那麼應該怎麼做呢?這就要求瞭解k8s對Pod的排程規則 。
下面列舉幾個影響pod排程的因素:
pod資源限制
scheduler根據requests找到足夠大小的node進行排程
使用節點選擇器標籤(nodeSelector)
節點選擇器可以將節點分開,比如k8s叢集中有多個節點,為了區分生產,開發和測試環境,就可以利用節點選擇器標籤進行劃分;
例如,當前需要把pod排程到開發環境中,則可以通過scheduler將pod排程到標籤選擇器中為env_role:dev的node中 ,對應的yaml核心設定如下:
nodeSelector: env_role:dev/prod
關於節點選擇器,後續還會通過一文詳細講解其使用。
到此這篇關於k8s中pod使用詳解(雲原生kubernetes)的文章就介紹到這了,更多相關k8s中pod使用內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45