成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

8個Kubernetes運維的技巧

運維 系統運維
在本文中,我們將探索一些技巧和竅門,這些技巧將使使用Kubernetes更加容易。下面給出的大多數技巧都使用kubectl,這是一個功能強大的命令行工具,可讓您對Kubernetes集群執行命令。

[[349373]]

本文轉載自微信公眾號「新鈦云服」,作者祝祥 翻譯。轉載本文請聯系新鈦云服公眾號。  

在本文中,我們將探索一些技巧和竅門,這些技巧將使使用Kubernetes更加容易。下面給出的大多數技巧都使用kubectl,這是一個功能強大的命令行工具,可讓您對Kubernetes集群執行命令。

1.設置默認namespace

您可以使用namespace(例如,Dev1,Dev2,QA1,QA2等)將Kubernetes集群劃分為多個環境,并且每個環境可以由不同的用戶管理。運行kubectl命令的不便之一是,每次編寫命令時,都需要在最后使用該--namespace 選項。運維人員通常會忘記這一點,最終在錯誤的namespace中創建對象(pod,service,deployment)。

使用此技巧,您可以在運行kubectl命令之前設置namespace首選項。在執行kubectl命令之前運行以下命令,它將為您的當前上下文保存所有后續kubectl命令的namespace:

  1. kubectl config set-context $(kubectl config current-context) --namespace=mynamespace 

下面列出了一些最常用和有用的namespace命令:

  1. kubectl get namespaces 
  2. kubectl create namespace mynamespace 
  3. kubectl get pods --all-namespaces (列出所有namespace中具有狀態的所有Pod。) 
  4. kubectl get po -o wide -n -n -n (此命令將標識每個namespace中的容器) 
  5. kubectl describe namespace 
  6. kubectl config view --minify | grep namespace (此命令將確保您為當前上下文正確設置namespace。) 

 

2.配置常用的aliases別名以節省時間

Kubernetes命令可能很長,因此設置一些別名來運行kubectl非常有幫助。您將不再需要一遍又一遍地拼出完整的命令,當您想在一個會話中執行多個Kubernetes命令時,您的工作變得更加輕松。

我們在下面列出了一些常用命令的別名。在執行kubectl命令之前運行這些命令,以節省一些時間。示例:您只需要輸入 k 而不是輸入 kubectl:

  1. alias k='kubectl' 
  2.  
  3. alias kc='k config view --minify | grep name' 
  4.  
  5. alias kdp='kubectl describe pod' 
  6.  
  7. alias krh='kubectl run --help | more' 
  8.  
  9. alias ugh='kubectl get --help | more' 
  10.  
  11. alias c='clear' 
  12.  
  13. alias kd='kubectl describe pod' 
  14.  
  15. alias ke='kubectl explain' 
  16.  
  17. alias kf='kubectl create -f' 
  18.  
  19. alias kg='kubectl get pods --show-labels' 
  20.  
  21. alias kr='kubectl replace -f' 
  22.  
  23. alias kh='kubectl --help | more' 
  24.  
  25. alias krh='kubectl run --help | more' 
  26.  
  27. alias ks='kubectl get namespaces' 
  28.  
  29. alias l='ls -lrt' 
  30.  
  31. `alias ll='vils -rt | tail-1'
  32.  
  33. alias kga='k get pod --all-namespaces' 
  34.  
  35. alias kgaa='kubectl get all --show-labels' 

3.使用vi編輯YAML

有許多不同的編輯器可用于編寫YAML文件,但是在很多時候,您可能需要在終端上快速調整生成的YAML。這是使用我們經常使用vi的地方,vi是最初為Unix操作系統創建的文本編輯器。

Vi編輯器有據可查,并且得到了開源社區很好的支持。但是,創建YAML文件時vi編輯器的問題之一是格式問題。我們需要一種縮進制表符并與空格對齊的方法。在編輯YAML文件時,總是使用制表符和空格鍵來產生空格(例如,在按回車鍵時,將2個空格作為YAML的默認值)。

創建 ~/.vimrc 并添加以下內容,從而使創建YAML文件并用vi編輯變得更加容易:

  1. set smarttab 
  2. set expandtab 
  3. set shiftwidth=4 
  4. set tabstop=4 
  5. set number 

 

4.從kubectl命令創建YAML

我們可以使用kubectl工具從命令行創建復雜的YAML文件。

大多數人會認為,使用YAML文件很無聊,而Kubernetes的YAML文件可能非常冗長且難以從頭開始創建。使用kubectl命令而不是使用編輯器從空白頁創建YAML文件要容易得多。

以下命令將創建一個YAML文件 yamlfile。通過這些kubectl命令創建YAML文件后,您可以根據需要對其進行修改并使用它,而不用從頭開始編寫:

  1. kubectl run busybox --image=busybox --dry-run=client -o yaml --restart=Never > yamlfile.yaml 
  2. kubectl create job my-job --dry-run=client -o yaml --image=busybox -- date > yamlfile.yaml 
  3. kubectl get -o yaml deploy/nginx > 1.yaml (Ensure that you have a deployment named as nginx) 
  4. kubectl run busybox --image=busybox --dry-run=client -o yaml --restart=Never -- /bin/sh -c "while true; do echo hello; echo hello again;done" > yamlfile.yaml 
  5. kubectl run wordpress --image=wordpress –-expose –-port=8989 --restart=Never -o yaml 
  6. kubectl run test --image=busybox --restart=Never --dry-run=client -o yaml -- bin/sh -c 'echo test;sleep 100' > yamlfile.yaml (最后的增加 --bin 。這將創建yaml文件。) 

創建YAML文件的另一個好辦法是使用wget 命令直接從Internet獲得文件 。

5.在Kubernetes namespace之間切換

在技巧1中,我們學習了一些有用的命令來使用Kubernetes namespace并保存它們,以便您不必添加到每個命令中。讓我們擴展技巧,使其更容易在namespace和kubectl上下文之間切換。

有幾種工具可以提供幫助,但是我們喜歡使用kubectx和kubens分別管理上下文和namespace。您可以在此處(https://github.com/ahmetb/kubectx/)找到kubectx和kubens的詳細信息。

這是如何下載用于kubectx和kubens實用程序的Linux二進制文件:

  • wget

https://github.com/ahmetb/kubectx/releases/download/v0.9.0/kubectx_v0.9.0_linux_x86_64.tar.gz

  • wget

https://github.com/ahmetb/kubectx/releases/download/v0.9.0/kubens_v0.9.0_linux_x86_64.tar.gz

然后,使用以下命令提取它們:

  1. tar -xvf kubectx_v0.9.0_linux_x86_64.tar.gz 
  2. tar -xvf kubens_v0.9.0_linux_x86_64.tar.gz 

 

最后,將它們移至PATH:

  1. tar -xvf kubectx_v0.9.0_linux_x86_64.tar.gz 
  2. tar -xvf kubens_v0.9.0_linux_x86_64.tar.gz 

安裝后,您可以簡單地使用kubens列出namespace并在它們之間切換:

當使用多個集群時,kubectx使在上下文之間切換變得輕而易舉:

6. Shell自動補全

您知道kubectl為BASH和ZSH提供自動完成功能嗎?這是一個可選配置。

假設您了解Kubernetes的概念并且對kubectl有一定的經驗,但是也許您

不太擅長記住命令。首先安裝bash-completion,然后啟用kubectl自動補全。您可以在適用于您環境的“ Install and Set kubectl(https://kubernetes.io/docs/tasks/tools/install-kubectl/#enabling-shell-autocompletion) ”文檔頁面中找到所有詳細信息。

以下是具有自動完成功能的配置選項:

7.查看資源利用率

Top命令可能是監視進程和系統資源的最受歡迎的工具之一。它提供了一個基于字符的簡單界面,可以快速訪問關鍵信息。

您可以看到每個節點的資源利用率:

每個Pod的資源利用率:

便捷的監視命令可以幫助您以理想的時間間隔顯示命令,而不必一遍又一遍地運行它。以下示例使它每五秒鐘運行一次(默認值為兩秒鐘):

  1. watch kubectl top node -n 5 

注意: 需要為您的環境下載watch工具。

您的Kubernetes集群也需要運行heapster才能執行top命令,否則您將收到以下錯誤:“Error from server (NotFound): the server could not find the requested resource (get services http:heapster:)”

8.擴展kubectl并使用原始輸出創建自己的命令

Kubectl命令提供了apiserver存儲的資源的摘要視圖。apiserver存儲了許多未顯示的字段。您可以將kubectl get命令與原始資源輸出一起使用,以創建自己的可視化文件和命令。

您可以使用以下命令在JSON中打印原始資源:

  1. kubectl get deployments -o json 

您還可以使用api直接調用資源:

  1. kubectl get --raw=/apis/apps/v1/deployments 

您甚至可以將輸出與jq之類的工具結合使用,以提供不同的可視化效果,過濾輸出或將輸出提供給其他工具以實現自動化。

例如,在具有多個namespace和部署的集群上很難找到問題,但是下面的示例使用原始API掃描集群中的所有deployment,并僅過濾具有失敗副本的deployment:

  1. kubectl get --raw=/apis/apps/v1/deployments | jq ``'.items[] | {name: .metadata.name, replicas: .status.replicas, available: (.status.availableReplicas // 0), unavailable: (.status.unavailableReplicas // 0)} | select (.unavailable > 0)' 

以下是上面命令的快速說明:

  • 首先,我們調用Kubernetes API返回所有deployment。默認輸出為JSON。很難形象化JSON文檔的結構,但是您可以通過管道將其傳遞給jq以獲得更好的輸出,例如下面的示例:
  1. kubectl get --raw=/apis/apps/v1/deployments | jq . 
  • 請注意,輸出中對每個deployment都有一個數組。最后我們要檢查這個數組的狀態字段。下面的命令顯示如何在字段不可用時僅打印所需的數據和默認值0:
  1. kubectl get --raw=/apis/apps/v1/deployments | jq ``'.items[] | {name: .metadata.name, replicas: .status.replicas, available: (.status.availableReplicas // 0), unavailable: (.status.unavailableReplicas // 0)}' 
  • 最后一個難題是使用select函數僅顯示具有不可用副本的deployment:
  1. kubectl get --raw=/apis/apps/v1/deployments | jq ``'.items[] | {name: .metadata.name, replicas: .status.replicas, available: (.status.availableReplicas // 0), unavailable: (.status.unavailableReplicas // 0)} | select (.unavailable > 0)' 

*本文譯自 https://www.ibm.com/cloud/blog/8-kubernetes-tips-and-tricks,版權歸原作者所有

 

責任編輯:武曉燕 來源: 新鈦云服
相關推薦

2023-11-02 10:24:30

KubectlKubernetes

2020-08-21 10:45:47

Linux命令文件

2020-12-01 09:26:11

Linux 系統 運維

2019-12-27 10:33:43

運維架構技術

2024-07-25 11:22:23

2019-11-28 11:31:26

設計SQL技術

2021-02-20 09:12:04

Linux技巧命令

2022-05-31 10:30:23

KubernetesCalico運維

2019-08-27 08:55:05

2020-06-09 08:10:20

Kubernetes運維容器

2023-11-28 14:04:15

Kubernetes運維

2019-03-15 10:13:10

運維云計算運營

2020-08-19 10:21:49

云計算Kubernetes技術

2020-03-25 08:00:32

Kubernetes節點工作

2014-07-18 09:32:00

2019-01-23 16:59:09

存儲系統運維

2021-03-24 08:03:50

存儲Ceph運維

2021-09-10 15:16:19

Kubernetes核心組件運維

2018-03-01 19:40:44

Linux運維常見問題

2019-09-27 08:44:46

Ansible運維DevOps
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久一区二区三区四区 | 欧美一级毛片久久99精品蜜桃 | 日韩欧美在线视频一区 | 男女免费视频网站 | 一区二区免费 | 欧美久久久网站 | 亚洲成人精品 | 国产做a爱片久久毛片 | 国产日产精品一区二区三区四区 | 久久精品国产v日韩v亚洲 | 欧一区 | www在线| 国产专区免费 | 国产精品免费一区二区三区四区 | 亚洲高清视频在线观看 | 精品av天堂毛片久久久借种 | 精品蜜桃一区二区三区 | 超碰在线免费公开 | 精品视频久久久久久 | 国产丝袜一区二区三区免费视频 | 精品一区二区电影 | 91精品国产91久久久久久密臀 | 日本一区二区三区在线观看 | 日韩精品在线观看免费 | 日韩不卡在线观看 | 亚洲精品久久久一区二区三区 | 亚洲精品视频一区 | 国产欧美一区二区三区在线看蜜臀 | 成人在线播放网址 | 综合亚洲视频 | 国产精品久久久久久婷婷天堂 | 国产精品久久久久久久白浊 | 国内精品一区二区三区 | 成人av播放 | 久久精品女人天堂av | 999在线精品 | 紧缚调教一区二区三区视频 | 九色av| 欧美日韩一区二区在线观看 | 日韩一二三区视频 | 日本电影韩国电影免费观看 |