Linux中國

幫助你駕馭 Kubernetes 的 4 個工具

在本系列的第三篇文章中,Kubernetes 基礎:首先學習如何使用,我強調你應該學會使用 Kubernetes,而不是建造它。我還解釋說,在 Kubernetes 中,你必須學習最小的一組原語來建模應用程序。我想強調這一點:你需要學習的這組原語是最簡單的原語集,你可以通過它們學習如何實現生產級的應用程序部署(即高可用性 [HA]、多容器、多應用程序)。換句話說,學習 Kubernetes 內置的原語集比學習集群軟體、集群文件系統、負載平衡器、讓人發瘋的 Apache 和 Nginx 的配置、路由器、交換機、防火牆和存儲後端更容易 —— 這些是你在傳統的 IT 環境(虛擬機或裸機)中建模簡單的 HA 應用程序所需要的東西。

在這第四篇文章中,我將分享一些有助於你學習快速駕馭 Kubernetes 的工具。

1、Katacoda

無疑,Katacoda 是試駕 Kubernetes 集群的最簡單方法。只需單擊一下,五秒鐘後就可以將基於 Web 的終端直接連接到正在運行的 Kubernetes 集群中。這對於使用和學習來說非常棒。我甚至將它用於演示和測試新想法。Katacoda 提供了一個完整的臨時環境,在你使用完畢後可以回收利用。

![OpenShift Playground](/data/attachment/album/201907/15/122053tz76pb1avpfpq6bb.png "OpenShift Playground")

OpenShift Playground

![Kubernetes Playground](/data/attachment/album/201907/15/122054hal8g72papgllno4.png "Kubernetes Playground")

Kubernetes Playground

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 &apos;while true; do /usr/bin/nc -l -p 3306 < /srv/hello.txt; done&apos;
    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 資源的創建並提供樣板。

![VS Code plugins UI](/data/attachment/album/201907/15/122055gex5smsd2s9gr79b.png "VS Code plugins UI")

首先,安裝上圖中顯示的 Kubernetes 和 YAML 插件。

![Autocomplete in VS Code](/data/attachment/album/201907/15/122056hk2pn3m2ddpms1rr.png "Autocomplete in VS Code")

然後,你可以從頭開始創建新的 YAML 文件,並自動補完 Kubernetes 資源。上面的示例顯示了一個服務。

![VS Code autocomplete filling in boilerplate for an object](/data/attachment/album/201907/15/122057sm8ufuwvlhavja7f.png "VS Code autocomplete filling in boilerplate for an object")

當你使用自動補完並選擇服務資源時,它會填充該對象的一些模板。當你第一次學習使用 Kubernetes 時,這非常棒。你可以構建 Pod、服務、複製控制器、部署等。當你從頭開始構建這些文件甚至修改你使用 podman generate kube 創建的文件時,這是一個非常好的功能。

總結

這四個工具(如果算上兩個插件,則為六個)將幫助你學習駕馭 Kubernetes,而不是構造或裝備它。在本系列的最後一篇文章中,我將討論為什麼 Kubernetes 如此適合運行這麼多不同的工作負載。

via: https://opensource.com/article/19/6/tools-drive-kubernetes

作者:Scott McCarty 選題:lujun9972 譯者:wxy 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國