不可否認的是,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資訊來源,它的日志以標準檔案形式輸出,抓住這一線索將對除錯有很大幫助,尤其是在創建節點的程序中,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/27874.html
標籤:其他
