日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
一篇帶給你Kubernetes實(shí)用技巧

 一、kubectl 命令參數(shù)自動補(bǔ)全

使用 Kubernetes,就一定會使用 Kubectl 命令,默認(rèn)安裝好 Kubectl 命令不支持自動補(bǔ)全參數(shù)。下面配置 Kubectl 命令參數(shù)自動補(bǔ)全方法:

Linux 上,比如 Centos

 
 
 
 
  1. $ yum install -y bash-completion 
  2. $ source /usr/share/bash-completion/bash_completion 
  3. $ source <(kubectl completion bash) 
  4. $ echo "source <(kubectl completion bash)" >> ~/.bashrc 

MAC 上

 
 
 
 
  1. $ brew install bash-completion 
  2. $ source $(brew --prefix)/etc/bash_completion 
  3. $ source <(kubectl completion zsh) 
  4. $ echo 'source <(kubectl completion zsh)' >> ~/.zshrc 

Kubectl 常用操作 [1]

1、如何查找非 running 狀態(tài)的 Pod 呢?

 
 
 
 
  1. $ kubectl get pods -A --field-selector=status.phase!=Running | grep -v Complete 

2、如何查找 running 狀態(tài)的 Pod 呢?

 
 
 
 
  1. $ kubectl get pods -A --field-selector=status.phase=Running | grep -v Complete 

3、獲取節(jié)點(diǎn)列表,其中包含運(yùn)行在每個(gè)節(jié)點(diǎn)上的 Pod 數(shù)量?

 
 
 
 
  1. $ kubectl get po -o json --all-namespaces |    jq '.items | group_by(.spec.nodeName) | map({"nodeName": .[0].spec.nodeName, "count": length}) | sort_by(.count)' 
  2.  
  3.   { 
  4.     "nodeName": "service1", 
  5.     "count": 6 
  6.   }, 
  7.   { 
  8.     "nodeName": "service3", 
  9.     "count": 13 
  10.   } 

4、使用 kubectl top 獲取 Pod 列表并根據(jù)其消耗的 CPU 或 內(nèi)存進(jìn)行排序

 
 
 
 
  1. # 獲取 cpu 
  2. $ kubectl top pods -A | sort --reverse --key 3 --numeric 
  3.  
  4. # 獲取 memory 
  5. $ kubectl top pods -A | sort --reverse --key 4 --numeric 

二、添加Namespace默認(rèn)CPU和內(nèi)存限制

有時(shí)候 Pod 沒有做資源限制,會因?yàn)閭€(gè)別 Pod 使用量超出,影響整個(gè)宿主機(jī)應(yīng)用。下面給出一個(gè)具體例子,可以根據(jù)實(shí)際情況來調(diào)整相關(guān)參數(shù)。

 
 
 
 
  1. apiVersion: "v1" 
  2. kind: "LimitRange" 
  3. metadata: 
  4.   name: "resource-limits" 
  5.   namespace: default 
  6. spec: 
  7.   limits: 
  8.     - type: "Pod" 
  9.       max: 
  10.         cpu: "4" 
  11.         memory: "4Gi" 
  12.       min: 
  13.         cpu: "100m" 
  14.         memory: "100Mi" 
  15.     - type: "Container" 
  16.       max: 
  17.         cpu: "4" 
  18.         memory: "4Gi" 
  19.       min: 
  20.         cpu: "100m" 
  21.         memory: "100Mi" 
  22.       default: 
  23.         cpu: "500m" 
  24.         memory: "500Mi" 
  25.       defaultRequest: 
  26.         cpu: "100m" 
  27.         memory: "100Mi" 
  28.       maxLimitRequestRatio: 
  29.         cpu: "60" 

三、利用 Kubelet 給 Node 預(yù)留資源

 
 
 
 
  1. evictionHard: 
  2.   imagefs.available: 15% 
  3.   memory.available: 1G 
  4.   nodefs.available: 10% 
  5.   nodefs.inodesFree: 5% 

四、利用 Kubernetes RBAC 劃分好權(quán)限

多個(gè)團(tuán)隊(duì)部署應(yīng)用到一個(gè)kubernetes集群時(shí),情況就可能變得很復(fù)雜。切記不要把管理員權(quán)限開放給每個(gè)人。個(gè)人建議是,根據(jù)命名空間來區(qū)分隔離每個(gè)團(tuán)隊(duì),然后使用RBAC策略只允許各自團(tuán)隊(duì)訪問各自的命名空間。

如果我們把管理員權(quán)限開放給每個(gè)人,那么在pod級上進(jìn)行讀取、創(chuàng)建和刪除訪問時(shí),可能讓人抓狂,因?yàn)檎`操作的情況會經(jīng)常發(fā)生。為此,應(yīng)該只允許管理員有權(quán)訪問,從而將管理集群和部署集群的人員權(quán)限區(qū)分開。

五、充分利用 PodDisruptionBudget 控制器

如何保證在 kubernetes 集群中的應(yīng)用程序總能正常運(yùn)行?

答案:是使用 PodDisruptionBudget 控制器。

在進(jìn)行 kubectl drain 操作時(shí),kubernetes 會根據(jù) PodDisruptionBudget 控制器判斷應(yīng)用Pod集群數(shù)量,進(jìn)而保證在業(yè)務(wù)不中斷或業(yè)務(wù)SLA不降級的情況下進(jìn)行應(yīng)用Pod銷毀。PDB(PodDisruptionBudget)應(yīng)該放在每個(gè)擁有一個(gè)以上實(shí)例的deployment上。我們可以使用簡單yaml為集群創(chuàng)建PDB,并使用標(biāo)簽選擇器確定PDB應(yīng)該作用在哪些帶有標(biāo)簽的資源上。

  • 注意:PDB只考慮主動中斷,硬件故障之類的情況不在PDB考慮范圍內(nèi)。

例子:

 
 
 
 
  1. apiVersion: policy/v1beta1 
  2. kind: PodDisruptionBudget 
  3. metadata: 
  4.   name: zk-pdb 
  5. spec: 
  6.   minAvailable: 2 
  7.   selector: 
  8.     matchLabels: 
  9.       app: zookeeper 

六、使用探針來檢測應(yīng)用的狀態(tài)

Kubernetes 支持配置探針。kubelet 使用探針來確定Pod中應(yīng)用程序是否健康。K8S 提供了兩種類型來實(shí)現(xiàn)這一功能,Readiness 探針和 Liveiness 探針。

  • Readiness:探針用于確定容器何時(shí)準(zhǔn)備好接收流量。
  • Liveiness:探針用于確定容器是否健康,如果不健康根據(jù)策略判斷是否重新部署一個(gè)新的容器來替換。

例子:

 
 
 
 
  1. readinessProbe: 
  2.   tcpSocket: 
  3.     port: 8080 
  4.   initialDelaySeconds: 5 
  5.   periodSeconds: 10 
  6. livenessProbe: 
  7.   tcpSocket: 
  8.     port: 8080 
  9.   initialDelaySeconds: 15 
  10.   periodSeconds: 20 

參考鏈接

  • [1] https://mp.weixin.qq.com/s/fJpSlVOywrgIhejsWSvhbw
  • [2] https://zhuanlan.zhihu.com/p/81666500


網(wǎng)站題目:一篇帶給你Kubernetes實(shí)用技巧
網(wǎng)站地址:http://www.5511xx.com/article/dpchppo.html