開源最前線(ID:OpenSourceTop) 編譯
編譯自:https://opensource.com/article/19/6/tools-drive-kubernetes
想要精通Kubernetes,你最好學習一些基本型別的Kubernetes構建的應用程式,學習最簡單的原語集,你可以透過它們學習如何實現生產級的應用程式部署(即高可用性 [HA]、多容器、多應用程式)。
本文,猿妹將和大家分享4個有助於你快速靈活使用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 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)依然在不斷新增新功能。想要更深入地瞭解,請檢視他的部落格文章
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 8080/TCP 4m
service/mysql ClusterIP 172.30.13.195 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 None
這樣做的好處是,你可以刪除pod,觀察複製控制器重新建立它們等。你還可以使用該模板將其用於更改其他應用程式。
4、Visual Studio Code
我把最喜歡的留到最後說,我大部分的工作都是用Vi,但我從來沒有為 Kubernetes 找到一個好的語法高亮器和程式碼補完外掛(如果有的話,請告訴我)。相反,我發現微軟的VS程式碼有一組殺手級外掛,可以完成Kubernetes資源的建立並提供樣板檔案。
首先,安裝Kubernetes和YAML外掛,如上圖所示。
然後,你可以從頭建立一個新的YAML檔案,並自動新增Kubernetes資源。以上示例顯示了一個服務。
當你使用autocomplete並選擇服務資源時,它將填充物件的一些模板。當你第一次學習使用Kubernetes時,這種體驗是非常好的。你可以構建pod、服務、複製控制器、部署等等。當你從頭構建這些檔案,甚至修改Podman generate kube建立的檔案時,這是一個非常好的功能特性。(Github地址:https://github.com/microsoft/vscode)
朋友會在“發現-看一看”看到你“在看”的內容