1. 程式人生 > >Kubernetes(k8s)中文文件 CloudStack部署Kubernetes叢集_Kubernetes中文社群

Kubernetes(k8s)中文文件 CloudStack部署Kubernetes叢集_Kubernetes中文社群

簡介

CloudStack是一個用於構建基於硬體虛擬化的公有云和私有云(傳統IaaS)的軟體。在CloudStack 上部署 Kubernetes 有好幾種方法,需要根據 CloudStack 所使用的哪種雲和有哪些可用映象來決定。 例如 Exoscale 就提供了一個 coreOS 的可用模版,因此也可以使用在coreOS 部署 Kubernetes 的指令來部署。 CloudStack 同樣也提供了一個 Vagrant 外掛,因此也可以用 Vagrant 來部署 Kubernetes ,既可以選擇原有的基於 shell 指令碼的部署方式,也可以選擇新的基於 Salt 的部署方式。

CloudStack的 CoreOS 模版會每日構建。 在執行安裝 Kubernetes 部署指令之前需要先將模版註冊到雲上。

本指引使用了Ansible playbook。 完全自動化構建,單個 Kubernetes 部署指令碼基於 coreOS指令構建。

Ansible 指令碼基於 coreOS 映象將 Kubernetes 部署到 CloudStack 基礎雲上。 該指令碼建立一個SSH金鑰對、一個安全組和相關規則並最終通過雲初始化配置來啟動coreOS例項。

前提條件

$ sudo apt-get install -y python-pip
$ sudo pip install ansible
$ sudo pip install cs

cs 是一個 CloudStack API 的 python 模組。

可以通過使用API金鑰和HTTP的方式來配置CloudStack終端。

你可以將它們定義成環境變數: CLOUDSTACK_ENDPOINT , CLOUDSTACK_KEY , CLOUDSTACK_SECRET和 CLOUDSTACK_METHOD .

或者通過建立 ~/.cloudstack.ini 檔案的方式:

[cloudstack]
endpoint = <your cloudstack api endpoint>
key = <your api access key>
secret = <your api secret key>
method = post

我們需要使用 http POST 請求來將 large 使用者的資料上傳到各個coreOS例項。

克隆指令碼

$ git clone --recursive https://github.com/runseb/ansible-kubernetes.git
$ cd ansible-kubernetes

ansible-cloudstack 模組被設定成了該倉庫的一個子模組,因此需要使用 –recursive 。

建立一個 Kubernetes 叢集

你只需要簡單執行如下指令碼。

$ ansible-playbook k8s.yml

編輯 k8s.yml 檔案中的一些變數。

vars:
ssh_key: k8s
k8s_num_nodes: 2
k8s_security_group_name: k8s
k8s_node_prefix: k8s2
k8s_template: Linux CoreOS alpha 435 64-bit 10GB Disk
k8s_instance_type: Tiny

它將啟動一個 Kubernetes 主機和一些計算節點(預設為2個)。 instance_type 和 template 預設指定的是 exoscale,編輯這兩個引數來指定你CloudStack雲的模板和例項型別(即服務提供商)。

如果你想修改一些其他引數的話,請參照 roles/k8s 裡面的任務和模版。

一旦指令碼執行完成,命令列會打印出Kubernetes主機的IP地址:

TASK: [k8s | debug msg='k8s master IP is {{ k8s_master.default_ip }}'] ********

使用 core 使用者和剛建立的金鑰通過ssh登入到主機,你可以列出叢集中的所有機器:

$ ssh -i ~/.ssh/id_rsa_k8s [email protected]<master IP>
$ fleetctl list-machines
MACHINE IP METADATA
a017c422... <node #1 IP> role=node
ad13bf84... <master IP> role=master
e9af8293... <node #2 IP> role=node
K8S中文社群微信公眾號