如何使用Rancher在OpenStack上建立K8S集羣

不能否認的是,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

啓動OpenStack雲提供程序

要容許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資源。安全

方式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"

以後,與全部其餘雲提供商同樣,集羣建立很是簡單。dom

安全選項

如下防火牆規則須要在Rancher和OpenStack租戶之間定義,以啓用自動集羣設置:

  • 雙向ssh、http和https
  • 從Rancher到租戶節點的2376(docker)
  • 租戶節點之間的237六、237九、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信息來源,它的日誌以標準文件形式輸出,抓住這一線索將對調試有很大幫助,尤爲是在建立節點的過程當中。

相關文章
相關標籤/搜索