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 manuallyarrow-up-right

  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 來進行通信:

參考文檔

Last updated