利用Kuryr整合OpenStack與Kubernetes網路(上)

利用Kuryr整合OpenStack與Kubernetes網路(上)

Kubernetes Kuryr 是 OpenStack Neutron 的子專案,其主要目標是透過該專案來整合 OpenStack 與 Kubernetes 的網路。該專案在 Kubernetes 中實作了原生 Neutron-based 的網路,因此使用 Kuryr-Kubernetes 可以讓你的 OpenStack VM 與 Kubernetes Pods 能夠選擇在同一個子網路上運作,並且能夠使用 Neutron 的 L3 與 Security Group 來對網路進行路由,以及阻擋特定來源 Port。

Kuryr-Kubernetes 整合有兩個主要組成部分:

Kuryr Controller:

  1. Controller 主要目的是監控 Kubernetes API 的來獲取 Kubernetes 資源的變化,然後依據 Kubernetes 資源的需求來執行子資源的分配和資源管理。
  2. Kuryr CNI:主要是依據 Kuryr Controller 分配的資源來綁定網路至 Pods 上。

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

環境資源與事前準備

準備兩台實體機器,這邊測試的作業系統為 CentOS 7.x,該環境將在扁平的網路下進行。

更新每台節點的 CentOS 7.x packages:

$ sudo yum --enablerepo=cr update -y

然後關閉 firewalld 以及 SELinux 來避免實現發生問題:

$ sudo setenforce 0
$ sudo systemctl disable firewalld && sudo systemctl stop firewalld

OpenStack Controller 安裝

首先進入172.24.0.34(controller),並且執行以下指令。

然後執行以下指令來建立 DevStack 專用使用者:

$ sudo useradd -s /bin/bash -d /opt/stack -m stack
$ echo "stack ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/stack 

選用 DevStack 是因為現在都是用 Systemd 來管理服務,不用再用 screen 了,雖然都很方便。

接著切換至該使用者環境來建立 OpenStack:

$ sudo su - stack

下載 DevStack 安裝套件:

$ git clone https://git.openstack.org/openstack-dev/devstack
$ cd devstack

新增local.conf檔案,來描述部署資訊:

[[local|localrc]]
HOST_IP=172.24.0.34
GIT_BASE=https://github.com
ADMIN_PASSWORD=passwd
DATABASE_PASSWORD=passwd
RABBIT_PASSWORD=passwd
SERVICE_PASSWORD=passwd
SERVICE_TOKEN=passwd
MULTI_HOST=1

Tips:
修改 HOST_IP 為自己的 IP 位置。

完成後,執行以下指令開始部署:

$ ./stack.sh

Openstack Compute 安裝

進入到172.24.0.80(compute),並且執行以下指令。
然後執行以下指令來建立 DevStack 專用使用者:

$ sudo useradd -s /bin/bash -d /opt/stack -m stack
$ echo "stack ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/stack

選用 DevStack 是因為現在都是用 Systemd 來管理服務,不用再用 screen 了,雖然都很方便。

接著切換至該使用者環境來建立 OpenStack:

$ sudo su - stack

下載 DevStack 安裝套件:

$ git clone https://git.openstack.org/openstack-dev/devstack
$ cd devstack

新增local.conf檔案,來描述部署資訊:

[[local|localrc]]
HOST_IP=172.24.0.80
GIT_BASE=https://github.com
MULTI_HOST=1
LOGFILE=/opt/stack/logs/stack.sh.log
ADMIN_PASSWORD=passwd
DATABASE_PASSWORD=passwd
RABBIT_PASSWORD=passwd
SERVICE_PASSWORD=passwd
DATABASE_TYPE=mysql
SERVICE_HOST=172.24.0.34
MYSQL_HOST=$SERVICE_HOST
RABBIT_HOST=$SERVICE_HOST
GLANCE_HOSTPORT=$SERVICE_HOST:9292
ENABLED_SERVICES=n-cpu,q-agt,n-api-meta,c-vol,placement-client
NOVA_VNC_ENABLED=True
NOVNCPROXY_URL=”http://$SERVICE_HOST:6080/vnc_auto.html”
VNCSERVER_LISTEN=$HOST_IP
VNCSERVER_PROXYCLIENT_ADDRESS=$VNCSERVER_LISTEN

Tips:
修改 HOST_IP 為自己的主機位置。
修改 SERVICE_HOST 為 Master 的IP位置。

完成後,執行以下指令開始部署:

$ ./stack.sh

–未完待續–

撰文: 白凱仁 迎棧科技軟體工程師

訂閱電子報

Select list(s)*

 

Loading