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

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

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
如何提升Kubernetes生產(chǎn)力?我有5個(gè)實(shí)用技巧分享給你

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

為陽(yáng)朔等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及陽(yáng)朔網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、陽(yáng)朔網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

1. 在 Kubernetes 上下文之間切換 

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

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

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

 
 
 
 
  1. kubectl use-context [CONTEXT-NAME]  

但如果需要操作多個(gè)集群,并且不知道各種上下文的名稱,此時(shí)就需要首先列出所有上下文,隨后像這樣運(yùn)行 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  

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

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

切換至不同上下文的方法也很簡(jiǎn)單:

 
 
 
 
  1. $ kubectx [CONTEXT-NAME] 

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

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

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

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

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

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

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

為所選上下文設(shè)置默認(rèn)名稱空間,這也是一種快速簡(jiǎn)單的操作:

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

3. 為 Kubernetes CLI 設(shè)置別名

這是一種非常簡(jiǎn)單的技巧。操作 Kubernetes 過(guò)程中,我們可能需要頻繁輸入 kubectl,時(shí)間一長(zhǎng)肯定會(huì)對(duì)輸入全名的繁瑣過(guò)程感到厭倦。雖然每次只需要輸入七個(gè)字母,但多次頻繁輸入總歸很麻煩。

此時(shí)的技巧是,為 kubectl 設(shè)置一個(gè)更簡(jiǎn)單的別名,例如 k:

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

理想情況下,我們應(yīng)該將 k=kubectl 這樣的別名保存到 bash_profile 中,這樣每次打開(kāi)終端后都將自動(dòng)設(shè)置。

4. 在 Kubernetes 集群中運(yùn)行 terminal

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

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

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

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

5. 快速打開(kāi) Grafana/Jaeger/Kiali

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

 
 
 
 
  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 

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

 
 
 
 
  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" 

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

如果你在集群中運(yùn)行了其他什么需要頻繁訪問(wèn)的服務(wù),也可以用類似方式來(lái)設(shè)置別名。


網(wǎng)站標(biāo)題:如何提升Kubernetes生產(chǎn)力?我有5個(gè)實(shí)用技巧分享給你
當(dāng)前URL:http://www.5511xx.com/article/ccispeg.html