k8s static pod(靜態pod)


https://www.jianshu.com/p/eb222d2cdd59

靜態pod

靜態pod 是由 kubelet 管理的只在特定node上存在的pod;靜態pod總是由kubelet創建的,並且只在kubelet所在的Node上運行。
靜態pod 不能通過 api-server來管理,無法和 RC,RS,Deployment或者 DaemonSet進行關聯;
並且 kubelet無法對靜態pod 進行健康檢查。

創建靜態 pod 的兩種方式

1、本地配置文件方式

kubelet 啟動時由 --pod-manifest-path 指定的目錄(默認/etc/kubernetes/manifests),kubelet會定期掃描這個目錄,並根據這個目錄下的 .yaml 或 .json 文件進行創建和更新操作

  • 如果把 pod的yaml描述文件放到 這個目錄中,等kubelet掃描到文件,會自動在本機創建出來 pod;
  • 如果把 pod的yaml文件更改了,kubelet也會識別到,會自動更新 pod;
  • 如果把 pod的yaml文件刪除了,kubelet會自動刪除掉pod;
  • 因為靜態pod 不能被 api-server 直接管理,所以它的更新刪除操作不能由 kubectl 來執行,只能直接修改或刪除文本文件。

1.1、查看本機 kubelet

kubelet 是linux原生service unit,在k8s 的每台機器上包括master都存在。

1.2、查看本機 kubelet 的service unit

1.3、舉例,k8s集群中的靜態pod

都在 master 機器上

  • etcd
  • kube-apiserver
  • kube-controller-manager
  • kube-scheduler

2、HTTP倉庫配置文件方式

--manifest-url,kubelet定期從 url獲取 文件,其余操作和 第一種方式一樣。

問題

在 yaml里的 pod 和 svc 並沒有 label 和 selector,那是如何暴露的?
1、service 的常規操作
通過 selector 找到 pod,然后根據 pod來創建出來 endpoints,然后通過 service就能訪問到pod了
2、service 的非常規操作
注意在常規操作里,創建出來的 endpoints 的名字是和 service名字一致的。
有了這個信息,非常規操作:不需要 selector,創建 servcie,創建出來和 service name 一樣的 endpoints,就能訪問到了。
3、k8s的幾個靜態pod都是這樣暴露的。


免責聲明!

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



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