不能否認的是,OpenStack仍然是可行的雲操做系統,而且被全世界許多互聯服務提供商使用。而Rancher是業界最爲普遍使用的Kubernetes管理平臺,經過簡潔直觀的GUI集中管理企業IT中的多個Kubernetes集羣。Rancher還提供用於應用程序開發的集成工具以及用於安全性和治理的強大的企業級功能。目前Rancher已有三億核心鏡像下載量。本文將使用Rancher在Openstack上建立一個Kubernetes集羣。node
本文中的設置是在teuto.net運營的Bielefeld的teutoStack公有云環境中執行的,所以安裝過程可能會有略微不一樣。linux
Kubernetes自己與OpenStack集成已經一段時間了,而且已經創建了良好的基礎。它由兩個組件組成:OpenStack雲提供程序以及OpenStack節點驅動程序。在Rancher中,默承認以獲取雲提供程序,同時Rancher中也有節點驅動程序,可是這不是默認提供的。git
在OpenStack上構建一個Rancher Kubernetes集羣有兩種方式:使用OpenStack節點驅動程序或經過自定義節點設置(https://rancher.com/docs/ranc...)。github
爲了便於訪問,本文中的全部配置示例你均可以在Github上獲取:docker
https://github.com/chfrank-cg...ubuntu
要容許Kubernetes訪問OpenStack API,以建立load balancer或volume,須要啓用OpenStack雲提供程序。爲此,請在Rancher GUI中爲雲提供程序建立集羣時選擇「自定義」選項,而後將如下信息插入集羣配置(經過「編輯YAML」)——你能夠根據須要替換實際值:api
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資源。安全
須要在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"
以後,與全部其餘雲提供商同樣,集羣建立很是簡單。dom
如下防火牆規則須要在Rancher和OpenStack租戶之間定義,以啓用自動集羣設置:
能夠在啓動腳本的幫助下從單首創建的實例中構建集羣,以安裝和啓用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租戶定義如下防火牆規則,以容許從現有節點建立集羣:
爲了訪問Cinder塊存儲,須要應用如下存儲類的定義:
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: cinder provisioner: kubernetes.io/cinder reclaimPolicy: Delete parameters: availability: nova
無需進一步操做便可啓用OpenStack負載均衡器。
初始設置過程當中會出現一些報錯,須要不斷試錯。而Rancher自己就是一個很好的debug信息來源,它的日誌以標準文件形式輸出,抓住這一線索將對調試有很大幫助,尤爲是在建立節點的過程當中。