幫助你駕馭 Kubernetes 的 4 個工具
學習如何駕馭 Kubernetes 比如何建造它更重要,這些工具可以幫助你更快上路。
在本系列的第三篇文章中,Kubernetes 基礎:首先學習如何使用,我強調你應該學會使用 Kubernetes,而不是建造它。我還解釋說,在 Kubernetes 中,你必須學習最小的一組原語來建模應用程式。我想強調這一點:你需要學習的這組原語是最簡單的原語集,你可以透過它們學習如何實現生產級的應用程式部署(即高可用性 [HA]、多容器、多應用程式)。換句話說,學習 Kubernetes 內建的原語集比學習叢集軟體、叢集檔案系統、負載平衡器、讓人發瘋的 Apache 和 Nginx 的配置、路由器、交換機、防火牆和儲存後端更容易 —— 這些是你在傳統的 IT 環境(虛擬機器或裸機)中建模簡單的 HA 應用程式所需要的東西。
在這第四篇文章中,我將分享一些有助於你學習快速駕馭 Kubernetes 的工具。
1、Katacoda
無疑,Katacoda 是試駕 Kubernetes 叢集的最簡單方法。只需單擊一下,五秒鐘後就可以將基於 Web 的終端直接連線到正在執行的 Kubernetes 叢集中。這對於使用和學習來說非常棒。我甚至將它用於演示和測試新想法。Katacoda 提供了一個完整的臨時環境,在你使用完畢後可以回收利用。
Katacoda 提供了一個臨時的環境和更深入的實驗室環境。例如,我最近三四年主講的 Linux Container Internals Lab 是在 Katacoda 中構建的。
Katacoda 在其主站點上維護了若干 Kubernetes 和雲教程並與 Red Hat 合作以支援了一個 OpenShift 的專用學習門戶。瞭解一下,它們是極好的學習資源。
當你第一次學習駕駛翻斗車時,最好先觀察一下其他人的駕駛方式。
2、Podman generate kube
podman generate kube
命令是一個很棒的子命令,可以幫助使用者自然地從執行簡單容器的簡單容器引擎轉換到執行許多容器的叢集用例(正如我在上篇文章中所描述的那樣)。Podman 透過讓你啟動一個新的容器,然後匯出這個可工作的 Kube YAML,並在 Kubernetes 中啟動它來實現這一點。看看這個(你可以在 Katacoda lab 中執行它,它已經有了 Podman 和 OpenShift)。
首先,請注意執行容器的語法與 Docker 非常相似:
podman run -dtn two-pizza quay.io/fatherlinux/two-pizza
不過這個是其它容器引擎所沒有的:
podman generate kube two-pizza
輸出:
# Generation of Kubernetes YAML is still under development!
#
# Save the output of this file and use kubectl create -f to import
# it into Kubernetes.
#
# Created with podman-1.3.1
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: "2019-06-07T08:08:12Z"
labels:
app: two-pizza
name: two-pizza
spec:
containers:
- command:
- /bin/sh
- -c
- bash -c 'while true; do /usr/bin/nc -l -p 3306 < /srv/hello.txt; done'
env:
- name: PATH
value: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
- name: TERM
value: xterm
- name: HOSTNAME
- name: container
value: oci
image: quay.io/fatherlinux/two-pizza:latest
name: two-pizza
resources: {}
securityContext:
allowPrivilegeEscalation: true
capabilities: {}
privileged: false
readOnlyRootFilesystem: false
tty: true
workingDir: /
status: {}
---
apiVersion: v1
kind: Service
metadata:
creationTimestamp: "2019-06-07T08:08:12Z"
labels:
app: two-pizza
name: two-pizza
spec:
selector:
app: two-pizza
type: NodePort
status:
loadBalancer: {}
你現在有了一些可以的工作 Kubernetes YAML,你可以用它作為練習的起點來學習、調整等等。-s
標誌可以為你創造一項服務。Brent Baude 甚至致力於新增捲/持久卷斷言等新功能。如果想進一步深入,請在 Brent 的部落格文章《Podman 現在可以輕鬆過渡到 Kubernetes 和 CRI-O》中瞭解他的工作。
3、oc new-app
oc new-app
命令非常強大。它是特定於 OpenShift 的,所以它在預設的 Kubernetes 中不可用,但是當你開始學習 Kubernetes 時它非常有用。讓我們從快速命令開始建立一個相當複雜的應用程式:
oc new-project -n example
oc new-app -f https://raw.githubusercontent.com/openshift/origin/master/examples/quickstarts/cakephp-mysql.json
使用 oc new-app
,你可以從 OpenShift 開發人員那裡偷取模板,並在開發原語來描述你自己的應用程式時擁有一個已知良好的起點。執行上述命令後,你的 Kubernetes 名稱空間(在 OpenShift 中)將由若干新的已定義資源填充。
oc get all
輸出:
NAME READY STATUS RESTARTS AGE
pod/cakephp-mysql-example-1-build 0/1 Completed 0 4m
pod/cakephp-mysql-example-1-gz65l 1/1 Running 0 1m
pod/mysql-1-nkhqn 1/1 Running 0 4m
NAME DESIRED CURRENT READY AGE
replicationcontroller/cakephp-mysql-example-1 1 1 1 1m
replicationcontroller/mysql-1 1 1 1 4m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/cakephp-mysql-example ClusterIP 172.30.234.135 <none> 8080/TCP 4m
service/mysql ClusterIP 172.30.13.195 <none> 3306/TCP 4m
NAME REVISION DESIRED CURRENT TRIGGERED BY
deploymentconfig.apps.openshift.io/cakephp-mysql-example 1 1 1 config,image(cakephp-mysql-example:latest)
deploymentconfig.apps.openshift.io/mysql 1 1 1 config,image(mysql:5.7)
NAME TYPE FROM LATEST
buildconfig.build.openshift.io/cakephp-mysql-example Source Git 1
NAME TYPE FROM STATUS STARTED DURATION
build.build.openshift.io/cakephp-mysql-example-1 Source Git@47a951e Complete 4 minutes ago 2m27s
NAME DOCKER REPO TAGS UPDATED
imagestream.image.openshift.io/cakephp-mysql-example docker-registry.default.svc:5000/example/cakephp-mysql-example latest About aminute ago
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD
route.route.openshift.io/cakephp-mysql-example cakephp-mysql-example-example.2886795271-80-rhsummit1.environments.katacoda.com cakephp-mysql-example <all> None
這樣做的好處是你可以刪除 Pod,觀察複製控制器如何重新建立它們,縮放 Pod 等等。你可以使用模板並將其更改為其他應用程式(這是我第一次啟動時所做的)。
4、Visual Studio Code
我把我最喜歡的放在最後。我的大部分工作都使用 vi,但我從來沒有為 Kubernetes 找到一個好的語法高亮器和程式碼補完外掛(如果有的話,請告訴我)。相反,我發現微軟的 VS Code 有一套殺手級的外掛,可以完成 Kubernetes 資源的建立並提供樣板。
首先,安裝上圖中顯示的 Kubernetes 和 YAML 外掛。
然後,你可以從頭開始建立新的 YAML 檔案,並自動補完 Kubernetes 資源。上面的示例顯示了一個服務。
當你使用自動補完並選擇服務資源時,它會填充該物件的一些模板。當你第一次學習使用 Kubernetes 時,這非常棒。你可以構建 Pod、服務、複製控制器、部署等。當你從頭開始構建這些檔案甚至修改你使用 podman generate kube
建立的檔案時,這是一個非常好的功能。
總結
這四個工具(如果算上兩個外掛,則為六個)將幫助你學習駕馭 Kubernetes,而不是構造或裝備它。在本系列的最後一篇文章中,我將討論為什麼 Kubernetes 如此適合執行這麼多不同的工作負載。
via: https://opensource.com/article/19/6/tools-drive-kubernetes
作者:Scott McCarty 選題:lujun9972 譯者:wxy 校對:wxy
相關文章
- 譯見 | 掌舵 Kubernetes(二):輕鬆駕馭 Kubernetes 的三個開源專案
- 學習用工具來駕馭 Git 歷史Git
- 4大案例分析金融機構如何“駕馭”大資料大資料
- 提升程式碼管理效率,Cornerstone 4 for Mac助您輕鬆駕馭版本控制Mac
- 能否輕鬆駕馭4K遊戲?NV旗艦接受挑戰遊戲
- matplotlib | Python強大的作圖工具,讓你從此駕馭圖表Python
- 厲害了!這個工具幫助你生成朋友圈轉發截圖
- 快取這匹“野馬”,你駕馭得了嗎?快取
- matplotlib | Python強大的作圖工具,讓你從此駕馭圖表(二)Python
- 最新4款值得買的旗艦級顯示卡推薦 輕鬆駕馭3A遊戲大作?遊戲
- 利用好的客服工具以便幫助你獲得更多的客戶
- 教妹學 Java:難以駕馭的多執行緒Java執行緒
- 創業CEO實戰分享:如何“駕馭”你的投資人?創業
- 聯想、華為、微軟、天士力極客駕馭法則(轉)微軟
- 27 個為什麼,幫助你更好的理解PythonPython
- 幫助你更快學習JavaScript的六個思維技巧JavaScript
- 讓 Git Bisect 幫助你Git
- 幫助你進入電子遊戲產業的5個建議遊戲產業
- 幫助你提高排版技巧的18個 PS 文字特效教程特效
- 4 張 GIF 圖幫助你理解二叉查詢樹
- 5個方法,幫助你快速提高團隊管理效率
- 藉助SuperMemo的合併工具與知識層級佈置,是駕馭知識洪流的合理方案。
- 報告:服裝電商應構建“駕馭大資料的能力”大資料
- 駕馭動能:實現可持續增長營銷
- 政策頻繁出臺,智慧網聯汽車安全如何“駕馭”?
- 推動人工智慧發展:駕馭風險,攻克難關人工智慧
- ShardingSphere如何輕鬆駕馭Seata柔性分散式事務?分散式
- 五個步驟幫助你更好地處理工資單
- 欲駕馭AI,先與AI共生:馬斯克的「超人」計劃能成功嗎?AI馬斯克
- 《深入JVM筆記》系列文章——駕馭你的Java虛擬機器JVM筆記Java虛擬機
- 如何實現Web前端自動化?讓這些工具幫助你Web前端
- 25個幫助你提高技能的 CSS3 實戰教程CSSS3
- 駕馭當今的 I&O 格局:利用雲、超融合和可觀察性
- 對比四款專業的測試工具,幫助你選出最適合自己的測試工具
- 免費的自媒體原創度檢測工具,幫助你提高推薦率
- 如何用 Linux 幫助你拼寫Linux
- 幫助你開始理解async/awaitAI
- Kubernetes設計的4個原則