使用Kubernetes不得不知道的四大神器!
開源最前線編譯
編譯自:https://opensource.com/article/19/6/tools-drive-kubernetes
想要精通Kubernetes,你***學(xué)習(xí)一些基本類型的Kubernetes構(gòu)建的應(yīng)用程序,學(xué)習(xí)最簡單的原語集,你可以通過它們學(xué)習(xí)如何實現(xiàn)生產(chǎn)級的應(yīng)用程序部署(即高可用性 [HA]、多容器、多應(yīng)用程序)。
本文,猿妹將和大家分享4個有助于你快速靈活使用Kubernetes的工具
1、Katacoda
Katacoda無疑是測試Kubernetes集群最簡單的方法。只需單擊鼠標(biāo),就可以將基于web的終端直接插入到正在運(yùn)行的Kubernetes集群。Katacoda不僅可以用于學(xué)習(xí),娛樂也是可以的,我甚至用它來演示和測試新想法,它提供了一個完整的臨時環(huán)境,用完還能回收
Katacoda有一個更高級的實驗環(huán)境,我在過去幾年里運(yùn)行的Linux Container Internals Lab 都是在 Katacoda 中構(gòu)建的
Katacoda在其主站點(diǎn)上維護(hù)了大量Kubernetes和云教程,并與Red Hat合作支持OpenShift的學(xué)習(xí)門戶。這兩者都是很好的學(xué)習(xí)資源。
2、Podman generate kube
podman generate kube命令是一個很好的子命令,它幫助用戶從運(yùn)行簡單容器的簡單容器引擎過渡到多容器的集群。Podman通過讓你啟動幾個容器,然后導(dǎo)出Kube YAML,并在Kubernetes中啟動它們。看看這個(你可以在這個Katacoda Lab運(yùn)行它,其中已經(jīng)有Podman和OpenShift)。
首先,運(yùn)行容器的語法與Docker驚人地相似:
- podman run -dtn two-pizza quay.io/fatherlinux/two-pizza
但這個是其它容器引擎實現(xiàn)不了的:
- 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: {}
如今,你已經(jīng)有了一些可運(yùn)行的作Kubernetes YAML,你可以通過它來學(xué)習(xí)練習(xí)等,-s 標(biāo)志可以為你創(chuàng)造一項服務(wù)。布倫特•博德(Brent Baude)依然在不斷添加新功能。想要更深入地了解,請查看他的博客文章
3、oc new-app
oc new-app命令非常強(qiáng)大。它是特定于openshift的,因此在默認(rèn)的Kubernetes中不可用,但是當(dāng)您開始學(xué)習(xí)Kubernetes時,它非常有用。下面以一個快速命令開始,創(chuàng)建一個相當(dāng)復(fù)雜的應(yīng)用程序:
- 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開發(fā)人員那里獲取模板,運(yùn)行上述命令后,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.kata
這樣做的好處是,你可以刪除pod,觀察復(fù)制控制器重新創(chuàng)建它們等。你還可以使用該模板將其用于更改其他應(yīng)用程序。
4、Visual Studio Code
我把最喜歡的留到***說,我大部分的工作都是用Vi,但我從來沒有為 Kubernetes 找到一個好的語法高亮器和代碼補(bǔ)完插件(如果有的話,請告訴我)。相反,我發(fā)現(xiàn)微軟的VS代碼有一組殺手級插件,可以完成Kubernetes資源的創(chuàng)建并提供樣板文件。
首先,安裝Kubernetes和YAML插件,如上圖所示。
然后,你可以從頭創(chuàng)建一個新的YAML文件,并自動添加Kubernetes資源。以上示例顯示了一個服務(wù)。
當(dāng)你使用autocomplete并選擇服務(wù)資源時,它將填充對象的一些模板。當(dāng)你***次學(xué)習(xí)使用Kubernetes時,這種體驗是非常好的。你可以構(gòu)建pod、服務(wù)、復(fù)制控制器、部署等等。當(dāng)你從頭構(gòu)建這些文件,甚至修改Podman generate kube創(chuàng)建的文件時,這是一個非常好的功能特性。(Github地址:https://github.com/microsoft/vscode)