白話kubernetes的十萬個為什么(持續更新中...) - kubernetes


Kubernetes簡稱?

答:k8s或kube。

Kubernetes是什么?

答:由Google開發的一個強大的平台,可以在集群環境中管理容器化應用程序。本質上是一種特殊的數據庫,里面存儲的是能夠組成kubernetes模型的各種資源,包括Pods、Deployments、Services、Config Maps、Secrets、Namespaces、Nodes、Service Accounts、Ingress、Jobs等等。可以參考:kubernetes實戰之運行aspnetcore webapi微服務第9點部分淺析kubernetes。

Kubernetes能干什么?

答:容器編排引擎,管理容器的生命周期和方方面面。

如何與Kubernetes系統進行交互?

答:使用客戶端工具kubectl,相當於kubernetes的RESTful接口,這是交互的基本模式。

kubectl有哪些優化了用戶體驗的命令?

答:kubectl scale 直接指明需要伸縮的Deployment名字即可,而不需要數據庫中修改相關資源。
kubectl run 使用某鏡像創建Deployment,無需寫yml文件完整的描述pod的各種細節。
kubectl expose deploy [name] --type=NodePort --name=[name] --port=80 直接為部署暴露類型為NodePort的服務。

在實際應用中一般如何操作資源?

答:一把使用yml文件或json文件,配合各種kubectl命令。

kubernetes最常用的數據庫?

答:etcd。

什么是ReplicaSet?

答:一個“副本集”對象,封裝pod的彈性伸縮。例如:使用ReplicaSet告訴k8s集群部署pod,並始終維持5個pod實例。

ReplicaSet的實際工作流程?

答:ReplicaSet Controller監控數據庫中的數據變化, 然后檢查實際環境中ReplicaSet對象所擁有的pod實際實例數量,如果超過期望的數量,就殺掉富余的pod;如果不足,就立即創建新的pod補充。

kubelete是什么?

答:一種特殊的控制器,運行在集群中每個執行節點上,是集群的守護神。

kubelete是干什么的?

答:當第一次集群調度部署完成后,后續kubelete會持續監控數據庫變化,管理pod的生命周期,發現被分配到它所在的節點上運行的那些pod,如果找到新pod,則會在該節點上運行這個新pod。

kubenetes會直接創建容器嗎?

答:不會。它使用可插拔的容器引擎(Docker、Rocket等)來實現容器創建。

kuberproxy的工作流程?

答:當有數據包發送到主機上時,它將其路由到正確的pod或容器。

kubernetes有哪些組件?

答:kubectl 客戶端命令行工具
kube-apiserver 提供RESTful風格的統一接口
kube-scheduler 負責資源與pod的匹配
kube-controller-manager 負責管理“資源”同步
kubelet 管理pod生命周期
kube-proxy 負責k8s集群網絡配置

什么是Service?

答:為pod穩定地提供服務發現和負載均衡的能力。

Deployment有哪些功能?

答:集成了上線部署、滾動升級、創建腳本、暫停上線任務、恢復上線任務、滾動到以前某一版本等功能。

Volume是干什么的?

答:用於存儲持久化數據,不同類型的Volume有不同的生命周期。

kubectl 命令行語法?

答:kubectl [command] [type] [name] [flags]
command:get、create、describe、delete。
type:資源類型
name:資源名稱
flags:命令行選項

kubectl 常見的命令有哪些?

答:kubectl cluster-info 查看集群信息
kubectl version 顯示命令行和kube服務端的版本
kubectl api-versions 顯示支持的api版本集合
kubectl config view 顯示當前kubectl的配置信息
kubectl logs 查看pod日志
kubectl exec -t [podname] /bin/bash 以交互模式進入容器執行命令
kubectl scale 實現水平或收縮
kubectl rollout status deploy [name]部署狀態變更狀態檢查
kubectl rollout history 部署歷史
kubectl rollout undo 回滾部署到最近或者某個版本
kubectl get nodes 查看集群中的節點
kubectl get [type] [name] 查看某種類型資源
kubectl describe [type] [name] 查看特定資源實例詳情
kubectl get ep 查看路由端點信息
kubectl set image deploy [deployment-name] [old-image-name]=[new-image-name] 為部署設置鏡像
kubectl cordon [nodeid] 標記節點不接受調度
kubectl uncordon [nodeid] 恢復節點可以接受調度
kubectl drain [nodeid] 驅趕該節點上運行的所有容器到其他可用節點

kubectl 如何快速分配管理員權限?

答:

kubectl create serviceaccount --namespace kube-system <serviceaccountname>
kubectl create clusterrolebinding <rolebindingname> --clusterrole=cluster-admin --serviceaccount=<serviceaccountname>
kubectl patch deploy --namespace kube-system <objectname> -p '{"spec":{"template":{"spec":{"serviceAccount":"<serviceaccountname>"}}}}'

持續更新中.......


免責聲明!

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



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