k8s常可能問的問題


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

 


免責聲明!

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



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