1.可訪問rancher、k8s官網 2.基於Borg的開源版本 3.每三個月一個新版本,目前版本1.17 CRI - Runtime CNI - Network CSI - Storage 網絡方案 Flannel - 默認vxlan模式 Calico - BGP模式/IPIP模式 Canal - Flannel(模式) + Calico(策略) vim cluster.yml 部署1.6版本 rke up --config cluster.yml rke部署 默認證書10年 kubectl get cs - 查看組件狀態 kubectl api-resources/api-versions - API信息 kubectl explain <resource> - 查看資源verson信息 Label標籤 - key/value Annotation註釋 - 關聯資源對象被其餘程序調用 kubectl label node node01 K=V 設置 kubectl annotate nodes k8s-node01 K= kubectl label node node01 K- 刪除 kubectl annotate nodes k8s-node01 K- 查看 kubectl get nodes k8s-node01 --show-labels kubectl describe nodes k8s-node01 kubectl get nodes k8s-node01 -o yaml kubectl get nodes k8s-node01 -o json pod內一個或多個容器,可根據容器的生命週期是否一致來評估 調度流程 api-server - etcd - scheduler - kubelet - docker 查看pod事件 kubectl describe pod myapp-pod1 kubectl create namespace test kubectl -n test create -f pod.yaml kubectl exec -it pod名 -c 容器名 Init容器 Static Pod - 在固定節點、特定目錄下建立yaml文件(業務場景不多) (rke部署k8s,默認在/etc/k8s/maniftest - cluster.yaml配置文件指定) 沒法經過api-server刪除,只能經過api查看鏡像狀態,只能經過刪除yaml文件實現 Replicaset副本數 kubectl get replicasets.apps kubectl get deployments.apps kubectl describe deployments.apps nginx-deployment kubectl rollout history deployment nginx-deployment daemonset 每一個節點運行一個副本 statfulset 有狀態應用 Job Cronjob Service轉發 Clusterip - 內部集羣 Nodeport - 30000-32767 Loadblance - 雲服務商負載均衡 Externalname - 外部服務傳入K8S集羣、經過DSN實現 ExternalIP - 指定主機端口解析 建立service後自動建立相應endpoints kubectl get service kubectl get endpoints ExternalName - 解析外部服務 ExternalIPs - 指定主機端口解析,不像nodeport暴露全部主機端口 同個Namespace的應用能夠直接經過service_name訪問。 跨Namespace訪問經過service_name.namespace。 pvc和pv綁定,刪除pvc後pvc數據reatain保留可是沒法被其餘pvc調用 除非修改pv.yaml中的pvc數據 刪除pv後數據仍然保留,除非修改數據保留參數retain-recylce kubectl cordon維護模式 kubectl uncordon解除維護 kubectl drain node01應用遷移 Ingress 將HTTP和HTTPS以外的服務公開到因特網一般使用類型是NodePort或loadbalance的service ingress資源只支持用於指導HTTP通訊的規則 CRI runtime 引擎 CNI network 網絡 CSI storage 存儲 Flannel vxlan - 跨二層 Calico Canal = Flannel網絡方案 + Calico網絡策略 Alpha測試 v1alpha1 Beta測試 v2beta3 穩定版本 vX 查看當前Kubernetes集羣的api版本 kubectl api-versions 查看某個資源的解釋信息 kubectl explain <resources> 標籤label - label slector 註釋annotate controller類型 replicaset pod副本數量 deployment 無狀態服務,提供更新、回滾 daemonset 每一個節點一個pod副本 statefulset 有狀態應用程序 jobs cronjob 負載均衡與服務發現 service轉發後端方式 clusterip 默認type nodeport loadbalance 外部負載均衡器路由到service externalname 外部服務域名映射到集羣內部 service端口類型 port:svc對內端口 target-port:pod暴漏端口 nodeport:對外暴漏端口 集羣外部訪問 nodeport lb externalip - 單個node的端口 會話保持 - clien鏈接到同一pod service.spec.sessionAffinity - ClientIP(默認爲none) 最大會話停留時間 service.spec.sessionAffinityConfig.clientIP.timeoutSeconds ingress實現針對url、path、ssl的請求轉發 dns策略默認使用clusterfirst 健康檢查 livenessprobe 存活 - 異常後重啓 readinessprobe 就緒 - 就緒後分發 container診斷方法:exec \ tcpsocket \ httpget 數據存儲 PV PVC RWO ROM RWM pv策略:retain保留 recycle回收 delete刪除 靜態 - 手動建立pv對應pvc 動態 - 建立storageclass存儲類 configmap secret emptydir POD節點分配 nodename nodeselector - 經過label約束 pod.sec.nodeselector 親和與反親和 affinity anti-affinity node-affinity pod-affinity 污點與寬容 taint toleration 應用的彈性伸縮HPA 監控指標獲取 metric-server pod必須添加request資源 集羣安全配置管理 namespace配置cpu、mem、pod num額度 應用的資源限制 requests 最小資源請求 limits 最大資源使用 若是隻配limit沒配request,那麼默認request=limit。 當pod內存超過limit時,會被oom。 cpu 1core = 1000m mem Mi limit range network policy RBAC