k8s常可能問的問題 1、為什么要用k8s 自我修復、pod水平自動伸縮、密鑰和配置管理動態對應用進行擴容、縮容 服務發現、負載均衡 1.1、自我修復 比如誤刪pod后會自動創建,用 kind: ReplicationController 1.2、pod水平自動伸縮 這個功能就是根據CPU的使用情況周期性的調整Pod的副本數量 解釋:首先創建HPA kind: HorizontalPodAutoscaler 設定目標CPU使用率限額,比如限定一個pod的cpu使用率50%,當超過50%時候,自動伸縮算法就會再創建一個pod分擔壓力,讓cpu處於50%一下狀態 1.3、動態對應用進行擴容、縮容 首先查看最原始的副本數為1 擴展為50個 kubectl scale --replicas=50 deployment/nginx-app 收縮為30個 scale --replicas=30 deployment/nginx-app 滾動鏡像 kubectl set image deployment/nginx-app nginx-app=nginx:1.9.1 回滾 查看版本歷史 [root@localhost 101]# kubectl rollout history deployment/nginx-app deployment.extensions/nginx-app REVISION CHANGE-CAUSE 1 <none> 2 <none> 回滾到上一次的版本 [root@localhost 101]# kubectl rollout undo deployment/nginx-app deployment.extensions/nginx-app 查看回滾狀態 [root@localhost 101]# kubectl rollout status deployment/nginx-app 1.4、服務發現 服務發現在微服務架構里,服務之間經常進行通信,服務發現就是解決不同服務之間通信的問題。比如一個nginx的pod,要訪問一個mysql服務,就需要知道mysql服務的ip和port,獲取ip和port的過程就是服務發現 service:服務,是一個虛擬概念,邏輯上代理后端pod。眾所周知,pod生命周期短,狀態不穩定,pod異常后新生成的pod ip會發生變化,之前pod的訪問方式均不可達。通過service對pod做代理,service有固定的ip和port,ip:port組合自動關聯后端pod,即使pod發生改變,kubernetes內部更新這組關聯關系,使得service能夠匹配到新的pod。這樣,通過service提供的固定clusterip,用戶再也不用關心需要訪問哪個pod,以及pod是否發生改變,大大提高了服務質量。 1.5、負載均衡: 如果pod使用rc創建了多個副本,通過kube-proxy實現負載均衡 1.6、K8s所有的ip以及作用 nodeip:是k8s集群中每個節點的物理網卡的ip地址,是真實存在的物理地址,所有屬於這個網絡的服務器之間都能通過這個網絡直接通信,不管它們中是否有部分節點不屬於這個集群,這也表明集群之外的節點訪問k8s集群之內的某個節點或者tcp/ip服務的時候,必須通過nodeip進行通信 podip:每個會被分配一個單獨的ip,每個pod都提供了一個獨立的Endpoint( Pod ip + Container port )以被客戶端訪問 clusterip:全局的唯一的虛擬ip,在整個service的聲明周期內,一旦創建,就不會改變僅僅作用於service對象,由k8s管理和分配ip地址無法被ping,沒有實體網絡對象來響應必須結合service port 組成一個具體的通信端口,單獨的cluster ip不具備tcp/ip通信協議 1.7、集群外部訪問k8s 使用域名來實現需要配置ingress,然后kind: Service中name: http-test-ser綁定到kind: Ingress中的serviceName: http-test-ser,如下所示: apiVersion: v1 kind: Service metadata: name: http-test-ser spec: ports: - port: 80 targetPort: 80 selector: name: http-test-dm --- apiVersion: extensions/v1beta1 kind: Ingress metadata: name: grafana spec: rules: - host: prom.zhi.io http: paths: - path: / backend: serviceName: http-test-ser servicePort: 80