1. k8s的pause容器有什麼用?
1.提供Pod在Linux中共享命名空間的基礎
2.提供Pid Namespace並使用init進程
2. 簡述namespace機制
Namespace是對全局系統資源的一種封裝隔離,使得處於不同namespace的進程擁有獨立的全局系統資源,改變一個namespace中的系統資源只會影響當前namespace裏的進程,對其他namespace中的進程沒有影響。隔離的條目很多IPC、Network、Mount、PID、User、UTC,通過Cgroup還可以限制CPU、內存等。面試者能夠說明其中的所代表的含義即可。
Mount - isolate filesystem mount points
UTS - isolate hostname and domainname
IPC - isolate interprocess communication (IPC) resources
PID - isolate the PID number space
Network - isolate network interfaces
3.Kubernetes有哪些核心組件這些組件負責什麼工作?
etcd:提供數據庫服務保存了整個集羣的狀態
kube-apiserver:提供了資源操作的唯一入口,並提供認證、授權、訪問控制、API註冊和發現等機制
kube-controller-manager:負責維護集羣的狀態,比如故障檢測、自動擴展、滾動更新等
cloud-controller-manager:是與底層雲計算服務商交互的控制器
kube-scheduler:負責資源的調度,按照預定的調度策略將Pod調度到相應的機器上
kubelet:負責維護容器的生命週期,同時也負責Volume和網絡的管理
kube-proxy:負責爲Service提供內部的服務發現和負載均衡,並維護網絡規則
container-runtime:是負責管理運行容器的軟件,比如docker
4.kubenetes針對pod資源對象的健康監測機制
livenessProbe探針
可以根據用戶自定義規則來判定pod是否健康,如果livenessProbe探針探測到容器不健康,則kubelet會根據其重啓策略來決定是否重啓,如果一個容器不包含livenessProbe探針,則kubelet會認爲容器的livenessProbe探針的返回值永遠成功。
ReadinessProbe探針
同樣是可以根據用戶自定義規則來判斷pod是否健康,如果探測失敗,控制器會將此pod從對應service的endpoint列表中移除,從此不再將任何請求調度到此Pod上,直到下次探測成功。
5.探針支持探測方法有哪些
Exec:通過執行命令的方式來檢查服務是否正常,比如使用cat命令查看pod中的某個重要配置文件是否存在,若存在,則表示pod健康。
Httpget:通過發送http/htps請求檢查服務是否正常,返回的狀態碼爲200-399則表示容器健康(注http get類似於命令curl -I)。
tcpSocket:通過容器的IP和Port執行TCP檢查,如果能夠建立TCP連接,則表明容器健康,這種方式與HTTPget的探測機制有些類似,tcpsocket健康檢查適用於TCP業務。