设置

Kubernetes v1.12 版本的文档已不再维护。您现在看到的版本来自于一份静态的快照。如需查阅最新文档,请点击 最新版本。

Edit This Page

Cloudstack

CloudStack 是一种基于硬件虚拟化原则(传统 IaaS 概念)用来构建公有云和私有云的软件。要在 CloudStack 上部署 Kubernetes, 有几种可能性取决于正在使用的云以及可用的镜像。CloudStack 还提供了一个 vagrant 插件,因此 vagrant 可以使用现有的 shell 创建程序,或新的基于 Salt 的方法来部署 Kubernetes。

CloudStack 的 CoreOS 模板会每夜构建。 CloudStack operators 需要在他们的云中 注册这个模板,然后才能继续执行 Kubernetes 部署的命令。

本指南只用到一个 Ansible playbook,完全自动化,可以使用 CoreOS 镜像在基于 CloudStack 的云上部署 Kubernetes。playbook 会创建 ssh 密钥对、创建安全组和相关规则,最后启动通过 cloud-init 配置的 CoreOS 实例。

先决条件

sudo apt-get install -y python-pip libssl-dev
sudo pip install cs
sudo pip install sshpubkeys
sudo apt-get install software-properties-common
sudo apt-add-repository ppa:ansible/ansible
sudo apt-get update
sudo apt-get install ansible

在 CloudStack 服务器上,您还必须安装 libselinux-python:

yum install libselinux-python

cs 是 CloudStack API 的 python 模块。

设置所使用的 CloudStack 端点、API 键和 HTTP 方法。

你可以将它们定义为环境变量:CLOUDSTACK_ENDPOINTCLOUDSTACK_KEYCLOUDSTACK_SECRETCLOUDSTACK_METHOD

或者创建一个 ~/.cloudstack.ini 文件:

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

我们需要使用 http POST 方法将 large userdata 传递给 coreOS 实例。

复制 playbook

git clone https://github.com/apachecloudstack/k8s
cd kubernetes-cloudstack

创建一个 Kubernetes 集群

你只需要运行 playbook 即可。

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: <templatename>
  k8s_instance_type: <serviceofferingname>

这将启动一个 Kubernetes 主节点和一些计算节点(默认情况下为 2)。 instance_type模板是特定的,编辑它们可以指定特定于 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 core@<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

支持级别

IaaS 供应商 配置管理 操作系统 网络 文档 合规 支持级别
CloudStack Ansible CoreOS flannel 文档 社区 (@Guiques)

有关所有解决方案的支持级别信息,请查看解决方案图表。

反馈