Kuryr

Kuryr 是 OpenStack Neutron 的子项目,其主要目标是透过该项目来集成 OpenStack 与 Kubernetes 的网络。该项目在 Kubernetes 中实作了原生 Neutron-based 的网络,因此使用 Kuryr-Kubernetes 可以让 OpenStack VM 与 Kubernetes Pods 能够选择在同一个子网络上运作,并且能够使用 Neutron L3 与 Security Group 来对网络进行路由,以及阻挡特定来源 Port,并且也提供基于 Neutron LBaaS 的 Service 集成。

Kuryr-Kubernetes 有以两个主要部分组成:

  1. Kuryr Controller: Controller 主要目的是监控 Kubernetes API 的来获取 Kubernetes 资源的变化,然后依据 Kubernetes 资源的需求来运行子资源的分配和资源管理。

  2. Kuryr CNI:主要是依据 Kuryr Controller 分配的资源来绑定网络至 Pods 上。

devstack 部署

最简单的方式是使用 devstack 部署一个单机环境:

部署完成后,验证安装成功

多机部署

本篇我們將說明如何利用 DevStackKubespray 建立一個簡單的測試環境。

环境资源与事前准备

准备两台实体机器,这边测试的作业系统为 CentOS 7.x,该环境将在平面的网络下进行。

IP Address 1
Role

172.24.0.34

controller, k8s-master

172.24.0.80

compute1, k8s-node1

172.24.0.81

compute2, k8s-node2

更新每台节点的 CentOS 7.x 包:

然后关闭 firewalld 以及 SELinux 来避免实现发生问题:

OpenStack Controller 安裝

首先进入 172.24.0.34(controller),并且运行以下命令。

然后运行以下命令来建立 DevStack 专用用户:

接着切换至该用户环境来创建 OpenStack:

下载 DevStack:

新增 local.conf 文档,来描述部署资讯:

修改 HOST_IP 为自己的 IP 。

完成后,运行以下命令开始部署:

Openstack Compute 安装

进入到 172.24.0.80(compute)172.24.0.81(node2),并且运行以下命令。

然后运行以下命令来建立 DevStack 专用用户:

接着切换至该用户环境来创建 OpenStack:

下载 DevStack:

新增 local.conf 文档,来描述部署资讯:

修改 HOST_IP 为自己的主机位置。 修改 SERVICE_HOST 为 Master 的 IP。

完成后,运行以下命令开始部署:

创建 Kubernetes 集群环境

首先确认所有节点之间不需要 SSH 密码即可登入,接着进入到 172.24.0.34(k8s-master) 并且运行以下命令。

接着安装所需要的软件包:

完成后,创建 kubespray 配置档:

利用 kubespray-cli 快速产生环境的 inventory 文档,并修改部分内容:

编辑 /root/.kubespray/inventory/inventory.cfg 文档,修改以下内容:

完成后,即可利用 kubespray-cli 来进行部署:

经过一段时间后就会部署完成,这时候检查节点是否正常:

接着为了方便让 Kuryr Controller 简单取得 K8s API Server,这边修改 /etc/kubernetes/manifests/kube-apiserver.yml 文档,加入以下内容:

将 insecure 绑定到 0.0.0.0 之上,以及开启 8080 Port。

安装 Openstack Kuryr Controller

进入到 172.24.0.34(controller),并且运行以下命令。

首先在节点安装所需要的软件包:

下载 kuryr-kubernetes 并进行安装:

创建 kuryr.conf/etc/kuryr 目录

使用 OpenStack Dashboard 建立项目,在浏览器输入 http://172.24.0.34,并运行以下步骤。

  1. 创建 k8s project。

  2. 创建 kuryr-kubernetes service,并修改 k8s project member 加入到 service project。

  3. 在该 Project 中新增 Security Groups,参考 kuryr-kubernetes manually

  4. 在该 Project 中新增 pod_subnet 子网络。

  5. 在该 Project 中新增 service_subnet 子网络。

完成后,修改 /etc/kuryr/kuryr.conf 文档,加入以下内容:

完成后运行 kuryr-k8s-controller:

安装 Kuryr-CNI

进入到 172.24.0.80(node1)172.24.0.81(node2) 并运行以下命令。

首先在节点安装所需要的软件包

安装 Kuryr-CNI 来提供给 kubelet 使用:

创建 kuryr.conf/etc/kuryr 目录:

修改 /etc/kuryr/kuryr.conf 文档,加入以下内容:

创建 CNI bin 与 Conf 目录:

新增 /etc/cni/net.d/10-kuryr.conf CNI 配置档:

完成后,更新 oslo 与 vif python 库:

最后重新启动服务:

测试结果

创建一个 Pod 与 OpenStack VM 来进行通信:

参考文档

最后更新于