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

使用Ansible的Kubernetes模块实现容器编排机械化

发布时间:2021-06-06 14:40:27 所属栏目:云计算 来源:互联网
导读:将 Kubernetes 与 Ansible 结合实现云端自动化。此外,还可以参照我们的 Ansible 的 k8s 模块速查表。 Ansible 是实现自动化工作的优秀工具,而 Kubernetes 则是容器编排方面的利器,要是把两者结合起来,会有怎样的效果呢?正如你所猜测的,Ansible + Kuber
将 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 实例的安装过程,你可以像使用一个完整集群一样对其进行配置和交互。
下载 Ansible k8s 速记表(需注册)
在安装 Minikube 之前,你需要确保你的环境支持虚拟化并安装 libvirt,然后对 libvirt 用户组授权:
$ sudo dnf install libvirt
$ sudo systemctl start libvirtd
$ sudo usermod --append --groups libvirt `whoami`
$ newgrp libvirt
安装 Python 模块
为了能够在 Ansible 中使用 Kubernetes 相关的模块,你需要安装以下这些 Python 模块:
$ pip3.6 install kubernetes --user
$ pip3.6 install openshift --user
启动 Kubernetes
如果你使用的是 Minikube 而不是完整的 Kubernetes 集群,请使用 minikube 命令在本地创建一个最精简化的 Kubernetes 实例:
$ minikube start --driver=kvm2 --kvm-network default
然后等待 Minikube 完成初始化,这个过程所需的时间会因实际情况而异。
获取集群信息
集群启动以后,通过 cluster-info 选项就可以获取到集群相关信息了:
$ kubectl cluster-info
Kubernetes master is running at https://192.168.39.190:8443
KubeDNS is running at https://192.168.39.190:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
 
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
使用 k8s 模块
Ansible 使用 k8s 这个模块来实现对 Kubernetes 的操作,在剧本中使用 k8s 模块就可以对 Kuvernetes 对象进行管理。这个模块描述了 kubectl 命令的最终状态,例如对于以下这个使用 kubectl 创建新的命名空间的操作:
$ kubectl create namespace my-namespace
这是一个很简单的操作,而对这个操作的最终状态用 YAML 文件来描述是这样的:
- hosts: localhost
  tasks:
    - name: create namespace
      k8s:
        name: my-namespace
        api_version: v1
        kind: Namespace
        state: present
如果你使用的是 Minikube,那么主机名(hosts)应该定义为 localhost。需要注意的是,所使用的模块也定义了可用参数的语法(例如 api_version 和 kind 参数)。

(编辑:衡水站长网)

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

    热点阅读