成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

使用Ansible的Kubernetes模塊實現容器編排自動化

云計算 系統 自動化
將 Kubernetes 與 Ansible 結合實現云端自動化。此外,還可以參照我們的 Ansible 的 k8s 模塊速查表。

[[349188]]

將 Kubernetes 與 Ansible 結合實現云端自動化。此外,還可以參照我們的 Ansible 的 k8s 模塊速查表。

Ansible 是實現自動化工作的優秀工具,而 Kubernetes 則是容器編排方面的利器,要是把兩者結合起來,會有怎樣的效果呢?正如你所猜測的,Ansible + Kubernetes 的確可以實現容器編排自動化。

Ansible 模塊

實際上,Ansible 本身只是一個用于解釋 YAML 文件的框架。它真正強大之處在于它豐富的模塊,所謂模塊module,就是在 Ansible 劇本playbook 中讓你得以通過簡單配置就能調用外部應用程序的一些工具。

Ansible 中有模塊可以直接操作 Kubernetes,也有對一些相關組件(例如 Docker 和 Podman)實現操作的模塊。學習使用一個新模塊的過程和學習新的終端命令、API 一樣,可以先從文檔中了解這個模塊在調用的時候需要接受哪些參數,以及這些參數在外部應用程序中產生的具體作用。

訪問 Kubernetes 集群

在使用 Ansible Kubernetes 模塊之前,先要有能夠訪問 Kubernetes 集群的權限。在沒有權限的情況下,可以嘗試使用一個短期在線試用賬號,但我們更推薦的是按照 Kubernetes 官網上的指引,或是參考 Braynt Son 《入門 Kubernetes》的教程安裝 Minikube。Minikube 提供了一個單節點 Kubernetes 實例的安裝過程,你可以像使用一個完整集群一樣對其進行配置和交互。

在安裝 Minikube 之前,你需要確保你的環境支持虛擬化并安裝 libvirt,然后對 libvirt 用戶組授權:

  1. $ sudo dnf install libvirt
  2. $ sudo systemctl start libvirtd
  3. $ sudo usermod --append --groups libvirt `whoami`
  4. $ newgrp libvirt

安裝 Python 模塊

為了能夠在 Ansible 中使用 Kubernetes 相關的模塊,你需要安裝以下這些 Python 模塊:

  1. $ pip3.6 install kubernetes --user
  2. $ pip3.6 install openshift --user

啟動 Kubernetes

如果你使用的是 Minikube 而不是完整的 Kubernetes 集群,請使用 minikube 命令在本地創建一個最精簡化的 Kubernetes 實例:

  1. $ minikube start --driver=kvm2 --kvm-network default

然后等待 Minikube 完成初始化,這個過程所需的時間會因實際情況而異。

獲取集群信息

集群啟動以后,通過 cluster-info 選項就可以獲取到集群相關信息了:

  1. $ kubectl cluster-info
  2. Kubernetes master is running at https://192.168.39.190:8443
  3. KubeDNS is running at https://192.168.39.190:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
  4.  
  5. To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

使用 k8s 模塊

Ansible 使用 k8s 這個模塊來實現對 Kubernetes 的操作,在劇本中使用 k8s 模塊就可以對 Kuvernetes 對象進行管理。這個模塊描述了 kubectl 命令的最終狀態,例如對于以下這個使用 kubectl 創建新的命名空間的操作:

  1. $ kubectl create namespace my-namespace

這是一個很簡單的操作,而對這個操作的最終狀態用 YAML 文件來描述是這樣的:

  1. - hosts: localhost
  2.   tasks:
  3.     - name: create namespace
  4.       k8s:
  5.         name: my-namespace
  6.         api_version: v1
  7.         kind: Namespace
  8.         state: present

如果你使用的是 Minikube,那么主機名(hosts)應該定義為 localhost。需要注意的是,所使用的模塊也定義了可用參數的語法(例如 api_version 和 kind 參數)。

在運行這個劇本之前,先通過 yamllint 命令驗證是否有錯誤:

  1. $ yamllint example.yaml

確保沒有錯誤之后,運行劇本:

  1. $ ansible-playbook ./example.yaml

可以驗證新的命名空間是否已經被創建出來:

  1. $ kubectl get namespaces
  2. NAME              STATUS   AGE
  3. default           Active   37h
  4. kube-node-lease   Active   37h
  5. kube-public       Active   37h
  6. kube-system       Active   37h
  7. demo              Active   11h
  8. my-namespace      Active   3s

使用 Podman 拉取容器鏡像

容器是個 Linux 系統,幾乎是最小化的,可以由 Kubernetes 管理。LXC 項目和 Docker 定義了大部分的容器規范。最近加入容器工具集的是 Podman,它不需要守護進程就可以運行,為此受到了很多用戶的歡迎。

通過 Podman 可以從 Docker Hub 或者 Quay.io 等存儲庫拉取容器鏡像。這一操作對應的 Ansible 語法也很簡單,只需要將存儲庫網站提供的鏡像路徑寫在劇本中的相應位置就可以了:

  1.    - name: pull an image
  2.       podman_image:
  3.         name: quay.io/jitesoft/nginx

使用 yamllint 驗證:

  1. $ yamllint example.yaml

運行劇本:

  1. $ ansible-playbook ./example.yaml
  2. [WARNING]: provided hosts list is empty, only localhost is available.
  3. Note that the implicit localhost does not match 'all'
  4.  
  5. PLAY [localhost] ************************
  6.  
  7. TASK [Gathering Facts] ************************
  8. ok: [localhost]
  9.  
  10. TASK [create k8s namespace] ************************
  11. ok: [localhost]
  12.  
  13. TASK [pull an image] ************************
  14. changed: [localhost]
  15.  
  16. PLAY RECAP ************************
  17. localhost: ok=3 changed=1 unreachable=0 failed=0
  18.            skipped=0 rescued=0 ignored=0

使用 Ansible 實現部署

Ansible 除了可以執行小型維護任務以外,還可以通過劇本實現其它由 kubectl 實現的功能,因為兩者的 YAML 文件之間只有少量的差異。在 Kubernetes 中使用的 YAML 文件只需要稍加改動,就可以在 Ansible 劇本中使用。例如下面這個用于使用 kubectl 命令部署 Web 服務器的 YAML 文件:

  1. apiVersion: apps/v1
  2. kind: Deployment
  3. metadata:
  4.   name: my-webserver
  5. spec:
  6.   selector:
  7.     matchLabels:
  8.       run: my-webserver
  9.   replicas: 1
  10.   template:
  11.     metadata:
  12.       labels:
  13.         run: my-webserver
  14.     spec:
  15.       containers:
  16.       - name: my-webserver
  17.         image: nginx
  18.         ports:
  19.         - containerPort: 80

如果你對其中的參數比較熟悉,你只要把 YAML 文件中的大部分內容放到劇本中的 definition 部分,就可以在 Ansible 中使用了:

  1.    - name: deploy a web server
  2.       k8s:
  3.         api_version: v1
  4.         namespace: my-namespace
  5.         definition:
  6.           kind: Deployment
  7.           metadata:
  8.             labels:
  9.               app: nginx
  10.             name: nginx-deploy
  11.           spec:
  12.             replicas: 1
  13.             selector:
  14.               matchLabels:
  15.                 app: nginx
  16.             template:
  17.               metadata:
  18.                 labels:
  19.                   app: nginx
  20.               spec:
  21.                 containers:
  22.                   - name: my-webserver
  23.                     image: quay.io/jitesoft/nginx
  24.                     ports:
  25.                       - containerPort: 80
  26.                         protocol: TCP

執行完成后,使用 kubectl 命令可以看到預期中的的部署deployment

  1. $ kubectl -n my-namespace get pods
  2. NAME                      READY  STATUS
  3. nginx-deploy-7fdc9-t9wc2  1/1    Running

在云上使用模塊

 

隨著現在越來越多的開發和部署工作往云上轉移的趨勢,我們必須了解如何在云上實現自動化。其中 k8s 和 podman_image 這兩個模塊只是云開發中的其中一小部分。你可以在你的工作流程中尋找一些需要自動化的任務,并學習如何使用 Ansible 讓你在這些任務上事半功倍。

 

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2023-08-21 15:28:36

云原生Kubernetes

2021-10-14 09:55:28

AnsibleanacronLinux

2021-09-08 16:03:12

Kubernetes 安全開源

2018-08-31 09:55:38

Ansible網絡自動化

2015-12-30 14:50:45

Kubernetes容器技術Docker

2017-02-07 18:48:00

NFV自動化NFV編排虛擬化

2017-02-06 16:25:51

NFVNFV自動化NFV編排

2010-03-03 16:36:02

Python PAMI

2021-04-22 09:51:12

測試編排測試自動化軟件測試

2015-11-09 14:27:36

Ansiblelinux自動化運維

2017-10-10 08:30:21

Kubernetes容器編排

2020-01-06 09:00:34

容器CRD安全

2013-04-03 14:01:25

網絡自動化自動化編排技術功能解析

2018-02-10 18:35:09

LinuxAnsible系統管理

2022-02-09 21:27:15

KubernetesDocker容器

2017-11-07 12:33:39

云自動化公有云編排

2014-09-22 11:24:18

運維

2022-11-15 17:07:40

開發自動化前端

2021-03-04 20:39:48

基礎設施云上運維云上資源

2015-10-08 10:55:23

云服務自動化運維 ANSIBLE
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久97精品| 手机看片在线播放 | 99热激情 | 国产成人网 | 亚洲精品久久久久久久久久久 | 亚洲在线免费观看 | 99亚洲精品 | 日韩影院在线观看 | 麻豆hd | 成人网在线观看 | 精品av | 最新免费视频 | 天天干天天干 | 91在线视频观看 | wwwww在线观看 | 天天草天天爱 | 日韩免费毛片 | 99久久婷婷国产综合精品电影 | 成人h电影在线观看 | 日韩久久综合 | 日韩欧美国产精品综合嫩v 一区中文字幕 | 国产91中文 | 亚洲精品一区二区冲田杏梨 | 99re6在线视频精品免费 | 黄色片在线观看网址 | 国产农村一级国产农村 | 亚洲情综合五月天 | 日本三级全黄三级三级三级口周 | 免费九九视频 | 亚洲欧美日韩中文在线 | 日韩在线一区二区三区 | 99精品国产成人一区二区 | 久久久久久av | 久久久久久久久久久久91 | 狠狠av| 国内精品一区二区三区 | 三级黄色片在线播放 | 亚洲日韩欧美一区二区在线 | 久久久久国产一区二区三区四区 | 在线观看av网站永久 | 丝袜 亚洲 另类 欧美 综合 |