自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何提升Kubernetes生產(chǎn)力?我有5個實用技巧分享給你

新聞 前端
在觀察和閱讀很多其它人操作 Kubernetes 和 Istio 的過程中,我了解到了他們?yōu)榱诉M一步提高生產(chǎn)力,在搭建環(huán)境以及使用各類工具、技巧和訣竅過程中積累的經(jīng)驗。

在觀察和閱讀很多其它人操作 Kubernetes 和 Istio 的過程中,我了解到了他們?yōu)榱诉M一步提高生產(chǎn)力,在搭建環(huán)境以及使用各類工具、技巧和訣竅過程中積累的經(jīng)驗。本文總結了我每天都會使用的 5 個技巧和工具,它們進一步提高了我操作 Kubernetes 和 Istio 時的生產(chǎn)力。

1. 在 Kubernetes 上下文之間切換 

如果同時運行本地 Kubernetes 實例以及一個或多個云端 Kubernetes 實例,那么你可能時不時就需要在不同上下文之間切換。Kubernetes CLI(kubectl)提供了用于在不同上下文之間執(zhí)行操作的命令,例如:

current-contextget-contextsrename-contextdelete-contextset-context – use-context

對于想要切換到的 Kubernetes 上下文,如果知道它的名稱,那么可以使用如下的命令:

  1. kubectl use-context [CONTEXT-NAME]  

但如果需要操作多個集群,并且不知道各種上下文的名稱,此時就需要首先列出所有上下文,隨后像這樣運行 use-context 命令:

  1. $ kubectl get-contexts  
  2. CURRENT   NAME            CLUSTER         AUTHINFO        NAMESPACE  
  3. *         docker-desktop  docker-desktop  docker-desktop  
  4.           minikube        minikube        minikube  
  5.           cloudc          crdambvg43d     user-crdambvg43d  
  6. $ kubectl use-context minikube  

其實還有更簡單的方法。我用了一款名為 kubectx 的工具,該工具可以列出不同的 Kubernetes 上下文并快速切換。若要列出上下文,可以這樣運行 kubectx:

  1. $ kubectx 
  2. docker-desktop 
  3. minikub 
  4. cloudc 

切換至不同上下文的方法也很簡單:

  1. $ kubectx [CONTEXT-NAME] 

2. 在 Kubernetes 名稱空間之間切換

在操作 Kubernetes 時,處理來自不同名稱空間的資源,這也是一種很常見的做法。例如,你可能希望列出一個名稱空間內的所有 Pod,隨后檢查另一個名稱空間中的服務。此時我的做法是使用 Kubernetes CLI 所支持的 --namespace 標記。例如,若要查看名為 Test 的名稱空間中的所有 Pod,可以運行 kubectl get pods -n test。默認情況下,如果不提供名稱空間標記,將使用默認的 Kubernetes 名稱空間,即 default。

這個默認值可以在 kubeconfig 文件中修改,例如我們可以將默認名稱空間設置為 test、kube-system 或其他任何名稱空間。這樣在查詢資源時就不需要使用 --namespace 標記了。不過更改默認值的命令略微繁瑣:

  1. $ kubectl config set contexts.my-context.namespace my-namespace 

上述命令會更改 my-context 上下文的 Namespace 字段,將其改為 my-namespace。這也意味著,舉例來說,如果切換到 my-context 隨后運行 kubectl get pods,將只能看到 my-namespace 名稱空間下的 Pod。

除了使用 kubectx,我們還可以使用一款名為 kubens 的工具,后者可以幫助我們列出并切換至不同名稱空間。

  1. $ kubens 
  2. default 
  3. docker 
  4. kube-node-lease 
  5. kube-public 
  6. kube-system 

為所選上下文設置默認名稱空間,這也是一種快速簡單的操作:

  1. $ kubens default  
  2. Context "docker-desktop" modified.  
  3. Active namespace is "default".  

3. 為 Kubernetes CLI 設置別名

這是一種非常簡單的技巧。操作 Kubernetes 過程中,我們可能需要頻繁輸入 kubectl,時間一長肯定會對輸入全名的繁瑣過程感到厭倦。雖然每次只需要輸入七個字母,但多次頻繁輸入總歸很麻煩。

此時的技巧是,為 kubectl 設置一個更簡單的別名,例如 k:

  1. $ alias k=kubectl 
  2. $ k get po 
  3. NAME    READY   STATUS    RESTARTS   AGE 
  4. mypod   1/1     Running   18         43h 

理想情況下,我們應該將 k=kubectl 這樣的別名保存到 bash_profile 中,這樣每次打開終端后都將自動設置。

4. 在 Kubernetes 集群中運行 terminal

在訪問集群中的服務和 Pod 時,我們需要將其暴露出來,這樣才可以從公網(wǎng)訪問它們,或在本機和集群中運行的服務之間運行 Kube 代理或轉發(fā)端口。

然而有時候我們可能并不想暴露任何服務或轉發(fā)端口,而只需要運行某些非常簡單的 Curl 命令。為此我會通過 Bash profile 加載一個函數(shù),借此在集群內部使用 radial/busyboxplus:curl 鏡像運行一個 Pod,通過這樣的方式就可以訪問終端,進而可以針對集群內部的服務和 IP 運行 Curl 命令。我將這個函數(shù)稱之為 kbash,用法如下:

  1. $ kbash 
  2. If you don't see a command prompt, try pressing enter. 
  3. [ root@curl:/ ]$ 

在上述命令提示符下,我可以針對內部的 Kubernetes DNS 名稱或 IP 地址運行 Curl 命令。如果需要退出,只需要運行 exit 即可;如果需要重新連接到該 Pod,則可運行 kbash 連接到現(xiàn)有 Pod。同時我還將這個函數(shù)定義到了自己的 dotfiles 中。

5. 快速打開 Grafana/Jaeger/Kiali

如果打算使用 Istio 服務網(wǎng)格(Service mesh),那么可能還會用到 Grafana/Jaeger/Kiali。訪問這些服務時必需首先獲得 Pod 名稱,隨后針對該 Pod 設置端口轉發(fā),最后才能打開瀏覽器訪問轉發(fā)后的地址。每次需要輸入的命令都很長:

  1. $ kubectl get pods --namespace istio-system -l "app=grafana" -o jsonpath="{.items[0].metadata.name}" 
  2. grafana-6fb9f8c5c7-hrcqp 
  3. $ kubectl --namespace istio-system port-forward grafana-6fb9f8c5c7-hrcqp 3000:3000 
  4. $ open http://localhost:3000 

而更簡單快捷的方法是為每個服務創(chuàng)建函數(shù)或別名。例如,我通過使用 Bash profile 加載的一個文件為 Grafana/Jaeger/Kiali 添加了如下設置:

  1. #!/bin/bash 
  2. export GRAFANA_POD=$(kubectl get pods --namespace istio-system -l "app=grafana" -o jsonpath="{.items[0].metadata.name}"
  3. export JAEGER_POD=$(kubectl get pod -n istio-system -l app=jaeger -o jsonpath='{.items[0].metadata.name}'
  4. export KIALI_POD=$(kubectl -n istio-system get pod -l app=kiali -o jsonpath='{.items[0].metadata.name}'
  5. alias grafana="kubectl --namespace istio-system port-forward $GRAFANA_POD 3000:3000 & open http://localhost:3000" 
  6. alias jaeger="kubectl --namespace istio-system port-forward $JAEGER_POD 16686:16686 & open http://localhost:16686" 
  7. alias kiali="kubectl --namespace istio-system port-forward $KIALI_POD 20001:20001 & open http://localhost:20001" 

這樣,如果需要打開 Jaeger,只需要運行 jaeger 就可以獲得 Pod 名稱,創(chuàng)建端口轉發(fā)并打開瀏覽器。

如果你在集群中運行了其他什么需要頻繁訪問的服務,也可以用類似方式來設置別名。

 

 

 

責任編輯:張燕妮 來源: 高效開發(fā)運維
相關推薦

2020-12-21 08:10:01

Kubernetes實用技巧kubectl

2020-08-28 11:40:12

Python字符串代碼

2025-04-09 09:10:00

開發(fā)ViteVue

2015-07-09 16:34:36

BYOD自帶設備

2021-05-31 12:05:46

Shell命令Linux

2023-02-13 08:34:26

Linux鍵盤快捷鍵

2025-03-03 00:15:00

JavaScript開發(fā)效率

2024-09-23 16:09:01

Python編程

2021-01-14 23:14:40

開源Linux生產(chǎn)力應用

2022-05-27 11:17:36

遠程員工遠程工作

2019-07-16 11:15:04

JavaScriptCSS數(shù)據(jù)庫

2017-11-14 11:26:06

命令行技巧生產(chǎn)力

2021-03-10 14:55:50

Windows電腦軟件

2017-02-16 13:26:30

Windows 10Windows技巧

2009-09-04 10:27:28

Linux實用技巧linux操作系統(tǒng)linux

2022-03-23 09:18:10

Git技巧Linux

2009-12-21 15:50:39

2020-10-28 10:25:11

云端云計算云遷移

2023-04-06 09:53:21

Harbor企業(yè)級服務

2020-05-20 13:06:20

UI排版設計
點贊
收藏

51CTO技術棧公眾號