Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

安装和配置适用于 Kubernetes 的容器化 Contrail 控制器

本节介绍安装和预配适用于 Kubernetes 的容器化 Contrail 控制器所需的步骤。

确保满足以下先决条件才能成功配置 Contrail Kubernetes 群集。

  • 已安装并正在运行的 Kubernetes 群集可用。

    您可以选择 Kubernetes 的安装方法。

  • Kubernetes 群集必须至少有一个工作节点。

    Kubernetes 集群由一个主节点和至少一个工作节点组成。不支持 Kubernetes“污染”主节点,这是一种在 Kubernetes 主节点上调度工作线程 Pod 的模式。

  • 确保在 Kubernetes 主节点上运行的 Kubelet 没有 网络插件选项。

    如果 Kubelet 配置了网络插件选项:

    1. 禁用或注释掉配置文件中的 KUBELET_NETWORK_ARGS 选项。

      /etc/systemd/system/kubelet.service.d/10-kubeadm.conf

    2. 重新启动 Kubelet 服务。

      systemctl daemon-reload; systemctl restart kubelet.service

  • 获取具有群集角色的服务 cluster-admin 帐户令牌。

    您可以在预配 contrail-ansible Contrail Kubernetes 群集期间配置此令牌。

    有关详细信息,请参阅 kubernetes_access_token 中的contrail-ansible变量all.yml

    1. 创建服务帐户并将其绑定到 cluster-admin 群集角色。

      kubectl create clusterrolebinding <role-binding-name> --clusterrole=cluster-admin --serviceaccount=<service-account-name>

      或者,您可以将角色绑定 cluster-admin 到现有服务帐户。

      示例:将角色绑定 cluster-admin 到名为 default的服务帐户。

      kubectl create clusterrolebinding contrail-kube-manager --clusterrole=cluster-admin --serviceaccount=default:default

    2. 获取与服务帐户关联的密钥。

      kubectl describe sa <service-account-name>

      例子:

    3. 获取与机密关联的令牌。

      kubectl describe secret <name>

      例子:

安装和配置适用于 Kubernetes 的容器化 Contrail 控制器

执行以下步骤以安装适用于 Kubernetes 的容器化 Contrail 控制器:

  1. 设置从 Ansible 主机对所有主机的免密码访问。

    确保 ssh <user>@<host-ip> 工作正常。

  2. 在 Mac OS X 或任何其他计算机上安装 Ansible。版本必须为 = 2.2.0。

  3. 下载 contrail-kubernetes-docker_<release>_<os-name>.tgz 软件包并将其解压缩。提取的软件包包含 contrail-networking-tools_<release>.tgzcontrail-kubernetes-docker-images_<release>.tgz 软件包。

    contrail-networking-tools_<release>.tgz 包含软件包,contrail-ansiblecontrail-kubernetes-docker-images_<release>.tgz 包含 Contrail 容器映像。

  4. contrail-networking-tools_<release>.tgz 软件包中提取contrail-ansible软件包。

    contrail-ansible 用于配置 Contrail Kubernetes 群集。存储库 contrail-ansible 包含一个 site.yml 剧本,该手册具有预配功能齐全的 Contrail Kubernetes 群集所需的角色和任务。存储库中的清单文件公开了剧本预配群集所需的所有参数。建议使用基于目录的清单文件机制进行 contrail-ansible 置备。

    注意:

    范围 contrail-ansible 是仅预配 Kubernetes 解决方案的 Contrail 部分。应使用推荐的 Kubernetes 准则独立预配 Kubernetes 群集。

    可以在以下模式下预配 Contrail Kubernetes 群集:

    • 独立的 Contrail Kubernetes 群集

      在这种模式下,Contrail 为独立的 Kubernetes 集群提供网络连接。Contrail 组件已置备并专用于此群集的管理。

    • 嵌套 Contrail Kubernetes 群集

      在此模式下,Contrail 为在 Contrail OpenStack 群集上预配的 Kubernetes 群集提供网络连接。Contrail 组件在两个群集之间共享。Ansible 仅提供直接与 Kubernetes API 服务器接口的 Contrail 组件。所有其他 Contrail 组件在 OpenStack 和 Kubernetes 集群之间共享。

  5. contrail-ansible/playbook 中创建一个名为 container_images 的文件夹。通过提取 contrail-kubernetes-docker-images_<release>.tgz,将容器映像复制到此文件夹。

  6. 更新库存文件。

    基于目录的置备中的清单文件如下所示:

  7. contrail-ansible/playbook 运行 Ansible 剧本。

inventory/my-inventory/hosts 清单文件

本节介绍独立和嵌套 Contrail Kubernetes 群集中的 参数并提供清单/我的清单/主机 清单文件的示例。

表 1 列出了 清单/我的清单/主机 清单文件中使用的参数。

在表 1 中,集群模式为以下模式之一:

  • 独立 — 仅适用于独立集群。

  • 嵌套 —仅适用于嵌套集群。

  • 两者 - 适用于独立集群和嵌套集群。

表 1:清单/我的清单/主机中的参数

参数

集群模式

描述

Contrail-repo

嵌 套

将启动 Contrail apt 或 yum 存储库容器的主机列表。其他节点将在节点中安装任何包时使用此存储库。设置 Contrail-CNI 需要启用此存储库

Contrail 控制器

单机版

要在其中配置 Contrail 控制器容器或进程的主机列表。.

Contrail-Analyticsdb

单机版

要置备 Contrail-analyticsdb 容器或进程的主机列表。

Contrail-Analytics

单机版

要置备 Contrail 分析容器或进程的主机列表。

Contrail-Kubernetes

两者

要运行 contrail-kube-manager 容器或进程的节点。

Contrail-compute

两者

要预配为 Kubernetes 计算/工作节点的主机列表。Contrail vRouter 或 vrouter-agent 或 CNI 将在这些节点上进行配置。

Kubernetes-contrail-controllers

嵌 套

具有预先存在的 contrail 控制器容器或进程的节点列表,contrail-kube-manager 应连接到这些容器或进程。

kubernetes-contrail-analytics

嵌 套

具有预先存在的 contrail 分析容器或进程的节点列表,contrail-kube-manager 应连接到这些容器或进程。

示例:inventory/my-inventory/hosts 独立 Contrail Kubernetes 群集中的文件

以下是独立 Contrail Kubernetes 群集中的 inventory/my-inventory/hosts 文件示例:

示例:嵌套 Contrail Kubernetes 群集中的嵌套清单/我的清单/主机文件

以下是嵌套 Contrail Kubernetes 群集中的 inventory/my-inventory/hosts 文件示例:

inventory/my-inventory/group_vars/all.yml 库存文件

本节介绍独立和嵌套 Contrail Kubernetes 群集中的 参数并提供 inventory/my-inventory/group_vars/all.yml 清单文件的示例。

表 2 介绍了 清单/我的库存/group_vars/all.yml 清单文件中使用的配置参数。

在表 2 中,集群模式为以下模式之一:

  • 独立 — 仅适用于独立集群。

  • 嵌套 —仅适用于嵌套集群。

  • 两者 - 适用于独立集群和嵌套集群。

表 2:库存/我的库存/group_vars/all.yml 中的参数
参数 默认 集群模式 说明

cloud_orchestrator

Kubernetes

没有

两者

指定业务流程协调程序类型。

contrail_compute_mode

容器

bare_metal

两者

指定 Contrail 组件是必须作为容器运行,还是作为独立服务器上的进程运行。

keystone_config

{ip: <ip>, admin_password: <passwd>, admin_user: <username>, admin_tenant: <tenant-name>}

没有

嵌 套

梯形失真身份验证信息。

nested_cluster_private_network

“<集群私有网段>”

没有

嵌 套

保留供 Kubernetes 用于内部群集管理和内务管理的 IP 子网。Ansible 用户有责任确保此 CIDR 不会与虚拟网络中的现有 CIDR 发生冲突。

kubernetes_cluster_name

<群集名称>

k8s-default

两者

正在预配的 Kubernetes 群集的名称。

nested_cluster_network

{域: <名称>, 项目: <名称>, 名称: <名称>}

没有

嵌 套

必须在其中预配 Kubernetes 群集的虚拟网络。此网络必须是托管 Kubernetes 群集的虚拟机所属的网络。

kubernetes_access_token

<令牌>

没有

两者

用于连接到 Kubernetes API 服务器的 RBAC 令牌。

nested_mode

没有

嵌 套

用于启用 Kubernetes 群集的嵌套预配的参数。

kubernetes_public_fip_pool

{域: <id>, 项目: <id>, 网络: <id>, 名称: <id>}

没有

两者

Kubernetes FloatingIpPool 用于服务或入口。

kubernetes_cluster_project

{域: <id>, 项目: <id>}

{域:默认域,项目:默认}

两者

必须在其中配置 Kubernetes 群集的 Contrail 项目的 Fq 名称。

kubernetes_pod_subnet

<网段>

10.32.0.0/12

两者

Kubernetes 集群使用的 Pod 子网。

kubernetes_service_subnet

<网段>

10.96.0.0/12

两者

Kubernetes 群集使用的服务子网。

kubernetes_api_server

<IP>

Contrail 控制节点 IP

两者

运行 kubernetes-api 服务器的节点。

示例:独立 Contrail Kubernetes 群集中的 inventory/my-inventory/group_vars/all.yml 文件

以下是独立 Contrail Kubernetes 群集中的 inventory/my-inventory/group_vars/all.yml 文件的示例:

示例:嵌套 Contrail Kubernetes 群集中的 inventory/my-inventory/group_vars/all.yml 文件

以下是嵌套 Contrail Kubernetes 群集中的 inventory/my-inventory/group_vars/all.yml 文件示例