如何使用Rancher在OpenStack上创建K8S集群
不可否认的是,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上获取:
https://github.com/chfrank-cgn/Rancher/tree/master/openstack
启动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租户定义以下防火墙规则,以允许从现有节点创建集群:
来自Workstation的SSH
到Rancher的http和https
访问Cinder块存储
为了访问Cinder块存储,需要应用以下存储类的定义:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: cinder
provisioner: kubernetes.io/cinder
reclaimPolicy: Delete
parameters:
availability: nova
无需进一步操作即可启用OpenStack负载均衡器。
故障排查
初始设置过程中会出现一些报错,需要不断试错。而Rancher本身就是一个很好的debug信息来源,它的日志以标准文件形式输出,抓住这一线索将对调试有很大帮助,尤其是在创建节点的过程中。
如何使用Rancher在OpenStack上创建K8S集群的更多相关文章
- 使用Kubeadm创建k8s集群之部署规划(三十)
前言 上一篇我们讲述了使用Kubectl管理k8s集群,那么接下来,我们将使用kubeadm来启动k8s集群. 部署k8s集群存在一定的挑战,尤其是部署高可用的k8s集群更是颇为复杂(后续会讲).因此 ...
- 使用Kubeadm创建k8s集群之节点部署(三十一)
前言 本篇部署教程将讲述k8s集群的节点(master和工作节点)部署,请先按照上一篇教程完成节点的准备.本篇教程中的操作全部使用脚本完成,并且对于某些情况(比如镜像拉取问题)还提供了多种解决方案.不 ...
- rancher v2.2.4创建kubernetes集群出现[etcd] Failed to bring up Etcd Plane: [etcd] Etcd Cluster is not healthy
主机:rancher(172.16.2.17),master(172.16.2.95),node01(172.16.2.234),node02(172.16.2.67) 问题:开始是用的rancher ...
- 如何在CentOS上创建Kubernetes集群
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由编程男孩 发表于云+社区专栏 介绍 Kubernetes(常简称为K8s)是用于自动部署.扩展和管理容器化(containerized ...
- Rancher 下图形界面 搭建 K8S 集群
首先我们准备4台 2核3G 的 centos 7 温馨提示:先安装好一台 CentOS 的虚拟机,并且安装好 docker,永久关闭防火墙. 再这个基础上我们分别克隆出四台 Rancher.K8S1. ...
- 5 秒创建 k8s 集群 - 每天5分钟玩转 Docker 容器技术(115)
据说 Google 的数据中心里运行着超过 20 亿个容器,而且 Google 十年前就开始使用容器技术. 最初,Google 开发了一个叫 Borg 的系统(现在命令为 Omega)来调度如此庞大数 ...
- 5 秒创建 k8s 集群[转]
据说 Google 的数据中心里运行着超过 20 亿个容器,而且 Google 十年前就开始使用容器技术. 最初,Google 开发了一个叫 Borg 的系统(现在命令为 Omega)来调度如此庞大数 ...
- 使用Gardener在Google Cloud Platform上创建Kubernetes集群
Gardener是一个开源项目,github地址: https://github.com/gardener/gardener/ 使用Gardener,我们可以在几分钟之内在GCP, AWS, Azur ...
- 如何使用 Kind 快速创建 K8s 集群?
作者|段超 来源|尔达 Erda 公众号 导读:Erda 作为一站式云原生 PaaS 平台,现已面向广大开发者完成 70w+ 核心代码全部开源!在 Erda 开源的同时,我们计划编写<基于 ...
随机推荐
- [2020.03]Unity ML-Agents v0.15.0 环境部署与试运行
一.ML-Agents简介 近期在学习Unity中的机器学习插件ML-Agents,做一些记录,用以简单记录或交流学习. 先简单说一下机器学习使用的环境场景:高视觉复杂度(Visual Complex ...
- 【,NetCore】WebApi使用统一时间格式
1.在Startup中配置统一时间格式 services.AddMvc() .AddJsonOptions(options => { //配置时间序列化格式 options.Serializer ...
- EF多租户实例:如何快速实现和同时支持多个DbContext
前言 上一篇随笔我们谈到了多租户模式,通过多租户模式的演化的例子.大致归纳和总结了几种模式的表现形式. 并且顺带提到了读写分离. 通过好几次的代码调整,使得这个库更加通用.今天我们聊聊怎么通过该类库快 ...
- ubunto python + vnstat 限制每天流量使用 使用iptables
上次想使用 iptables 转发80 端口,试了一段时间,没有成功.哪位知道是什么原因,还麻烦告诉我. 这次使用 iptables 禁用 80 443 出站,经过试验可以成功. 通过 iptable ...
- 你知道吗,Flutter内置了10多种Button控件
注意:无特殊说明,Flutter版本及Dart版本如下: Flutter版本: 1.12.13+hotfix.5 Dart版本: 2.7.0 Flutter内置了10多种Button(按钮)类控件供我 ...
- js中 navigator 对象
Navigator 对象包含有关浏览器的信息. 很多时候我们需要在判断网页所处的浏览器和平台,Navigator为我们提供了便利 Navigator常见的对象属性如下: 属性 描述 appCodeNa ...
- [日志分析]Graylog2采集Nginx日志 主动方式
这次聊一下Graylog如何主动采集Nginx日志,分成两部分: 介绍一下 Graylog Collector Sidecar 是什么 如何配置 Graylog Collector Sidecar 采 ...
- 关于IDEA的使用中,连接数据库console出现乱码的情况
本人在连接数据库时也不算是出现乱码,因为乱码的解决方式百度都有,但是还是没有解决我当时遇到的问题, 首先排除navicat的问题,连接选择UTF-8的编码格式, 在Idea中使用debug调试,均可以 ...
- Python基础篇(三)_函数及代码复用
Python基础篇_函数及代码复用 函数的定义.使用: 函数的定义:通过保留字def实现. 定义形式:def <函数名>(<参数列表>): <函数体> return ...
- sql语句的基本用法总结
一.sql语法 select */列名1,列名2... from 表名[连接查询 内连接/左连接 on条件] 必选的 where 条件 子查询/in/exists/between ... and .. ...