加入收藏 | 设为首页 | 会员中心 | 我要投稿 常州站长网 (https://www.0519zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 云计算 > 正文

使用Ansible的Kubernetes模块完善容器编排自动化

发布时间:2021-05-12 20:55:43 所属栏目:云计算 来源:互联网
导读:使用 Podman 拉取容器镜像 容器是个 Linux 系统,几乎是最小化的,可以由 Kubernetes 管理。和 Docker 定义了大部分的容器规范。最近加入容器工具集的是 Podman,它不需要守护进程就可以运行,为此受到了很多用户的欢迎。 通过 Podman 可以从 Docker Hub 或

使用 Podman 拉取容器镜像

容器是个 Linux 系统,几乎是最小化的,可以由 Kubernetes 管理。和 Docker 定义了大部分的容器规范。最近加入容器工具集的是 Podman,它不需要守护进程就可以运行,为此受到了很多用户的欢迎。

通过 Podman 可以从 Docker Hub 或者等存储库拉取容器镜像。这一操作对应的 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 让你在这些任务上事半功倍。

(编辑:常州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读