K8S:
master組件:
1. apiserver: 提供了資源操作的唯一入口,並提供認證、授權、訪問控制、API 注冊和發現等機制;發往集群的所有rest操作命令的接入點,並負責接收、校驗並響應所有的rest請求,是整個集群的網關。
2.controller manager:負責維護集群的狀態,控制器完成的功能主要包括生命周期功能和api業務邏輯,具體如下:
生命周期功能:包括namespace創建和生命周期、event垃圾回收、pod終止相關的垃圾回收、級聯垃圾回收及node垃圾回收等
api業務邏輯:例如,由replicaset執行的pod擴展等。
3.scheduler:負責資源的調度,按照預定的調度策略將 Pod 調度到相應的機器上
4.etcd(cluster state store):提供分布式鍵值數據存儲,保存了整個集群的狀態;可用於服務發現、共享配置以及一致性保障。
node組件:
1.kubelet :kubelet是運行於工作節點之上的守護進程,是node的核心代理程序,它從apiserver接收關於pod對象的配置信息並確保它們處於期望的狀態(desired state,也是目標狀態)。kubelet會在apiserver上注冊當前工作節點,定期向master匯報節點資源使用情況,並通過cadvisor監控容器和節點的資源占用狀況。
2. container runtime(docker,rkt):每個node都要提供一個容器運行時環境,它負責下載鏡像並運行容器。
3.kube-proxy:負責為 Service 提供 cluster 內部的服務發現和負載均衡;它能夠按需為service資源對象生成iptables或ipvs規則,從而捕獲訪問當前service的clusterip的流量並將其轉發至正確的后端pod對象。
額外插件add-ons:
1.kubedns:在k8s集群中調度運行提供dns服務的pod,同一集群中的其他pod可使用此dns服務器解決主機名
2.dashboard:kubernetes集群的全部功能都要基於web的UI來管理集群中的應用甚至是集群自身。
3.prometheus: 新版本的k8s中,其功能會逐漸由prometheus結合其他組件所取代。
4.ingress controller(nginx,envoy,haproxy): service是一種工作於傳統層的負載均衡器,而ingress是在應用層實現的http(s)負載均衡機制。
一些額外的知識:
1.資源清單yaml的定義:
kind:Endpoints,deployment,service, deployment ,StatefullSet, Job 等 https://blog.csdn.net/zhou164200/article/details/84590720
2.容器倉庫,容器的打包與下載
3.網絡模式:4種網絡模式(bridge,host,none,container) ,集群內部的路由SVC( service)
4.存儲:PV(分布式儲存nfs),PVC,本地儲存