不可否认的是, OpenStack 仍然是可行的云操作系统, 并且被全世界许多互联服务提供商使用. 而 Rancher 是业界最为广泛使用的 Kubernetes 管理平台, 通过简洁直观的 GUI 集中管理企业 IT 中的多个 Kubernetes 集群. Rancher 还提供用于应用程序开发的集成工具以及用于安全性和治理的强大的企业级功能. 目前 Rancher 已有三亿核心镜像下载量. 本文将使用 Rancher 在 Openstack 上创建一个 Kubernetes 集群.
本文中的设置是在 teuto.NET 运营的 Bielefeld 的 teutoStack 公有云环境中执行的, 因此安装过程可能会有略微不同.
Kubernetes 本身与 OpenStack 集成已经一段时间了, 并且已经建立了良好的基础. 它由两个组件组成: OpenStack 云提供程序以及 OpenStack 节点驱动程序. 在 Rancher 中, 默认可以获取云提供程序, 同时 Rancher 中也有节点驱动程序, 但是这不是默认提供的.
在 OpenStack 上构建一个 Rancher Kubernetes 集群有两种方式: 使用 OpenStack 节点驱动程序或通过自定义节点设置 (https://rancher.com/docs/rancher/v2.x/en/cluster-provisioning/rke-clusters/custom-nodes/).
为了便于访问, 本文中的所有配置示例你都可以在 GitHub 上获取:
启动 OpenStack 云提供程序
要允许 Kubernetes 访问 OpenStack API, 以创建 load balancer 或 volume, 需要启用 OpenStack 云提供程序. 为此, 请在 Rancher GUI 中为云提供程序创建集群时选择 "自定义" 选项, 然后将以下信息插入集群配置 (通过 "编辑 YAML")-- 你可以根据需要替换实际值:
- rancher_kubernetes_engine_config:
- ...
- cloud_provider:
- name: "openstack"
- openstackCloudProvider:
- block_storage:
- ignore-volume-az: true
- trust-device-path: false
- bs-version: "v2"
- global:
- auth-url: "https://api.openstack.net:5000/v3" # Keystone Auth URL
- domain-name: "Default" # Identity v3 Domain Name
- tenant-id: "616a8b01b5f94f99acd00a844f8f46c3" # Project ID
- username: "user" # OpenStack Username
- password: "pass" # OpenStack Password
- load_balancer:
- lb-version: "v2"
- subnet-id: "f339e543-a67f-45fa-8157-4a58b0940e0b"
- floating-network-id: "ca27ca05-2870-47b3-ad2f-535d04c9e736"
- create-monitor: false
- manage-security-groups: true
- monitor-max-retries: 0
- use-octavia: true
- metadata:
- request-timeout: 0
- ignore_docker_version: false
- ...
有了这些信息, Kubernetes 将可以访问 OpenStack API, 创建和删除资源以及访问 Cinder volume 和 Octavia 负载均衡器. 没有这一配置, Kubernetes 集群也能够良好运行, 只是无法访问 Cinder 或者 Octavia, 或者其他 OpenStack 资源.
方式 1: 使用 OpenStack 节点驱动程序创建集群
需要在 Rancher 配置中启用节点驱动程序, 才能使用内置节点驱动程序在 OpenStack 上创建 Kubernetes 集群. 然后需要使用以下信息创建一个节点模板 (可以根据需要更换实际值):
- "authUrl": "https://api.openstack.net:5000/v3",
- "availabilityZone": "Zone1",
- "domainName": "Default",
- "flavorName": "standard.2.1905",
- "floatingipPool": "extern",
- "imageName": "ubuntu-18.04-bionic-amd64",
- "keypairName": "rancher",
- "netName": "intern",
- "sshPort": "22",
- "sshUser": "ubuntu",
- "tenantId": "616a8b01b5f94f99acd00a844f8f46c3",
- "username": "user"
之后, 与所有其他云提供商一样, 集群创建非常简单.
安全选项
以下防火墙规则需要在 Rancher 和 OpenStack 租户之间定义, 以启用自动集群设置:
双向 SSH,http 和 https
从 Rancher 到租户节点的 2376(docker)
租户节点之间的 2376,2379,2380,6443 和 10250
方式 2: 使用自定义节点创建集群
可以在启动脚本的帮助下从单独创建的实例中构建集群, 以安装和启用 docker(在 Ubuntu 18.04 TLS 上):
- #!/bin/sh
- apt-get update
- apt-get -y install apt-transport-https jq software-properties-common
- curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
- add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
- apt-get update
- apt-get -y install docker-ce=18.06.3~ce~3-0~Ubuntu
- usermod -G docker -a Ubuntu
- exit 0
安全事项
需要为 OpenStack 租户定义以下防火墙规则, 以允许从现有节点创建集群:
- apiVersion: storage.k8s.io/v1
- kind: StorageClass
- metadata:
- name: cinder
- provisioner: kubernetes.io/cinder
- reclaimPolicy: Delete
- parameters:
- availability: nova
来源: https://www.cnblogs.com/rancherlabs/p/12671494.html