From b15729acb94c32581f70649ac63e0c797b2fb745 Mon Sep 17 00:00:00 2001 From: lIuDuI <1693291525@qq.com> Date: Sun, 10 Mar 2019 01:35:28 +0800 Subject: [PATCH] ZH-trans: add cloudstack.md (#12967) * Create cloudstack.md * Update cloudstack.md * Update cloudstack.md * Update cloudstack.md --- .../docs/setup/on-premises-vm/cloudstack.md | 213 ++++++++++++++++++ 1 file changed, 213 insertions(+) create mode 100644 content/zh/docs/setup/on-premises-vm/cloudstack.md diff --git a/content/zh/docs/setup/on-premises-vm/cloudstack.md b/content/zh/docs/setup/on-premises-vm/cloudstack.md new file mode 100644 index 0000000000..a6ef64fef3 --- /dev/null +++ b/content/zh/docs/setup/on-premises-vm/cloudstack.md @@ -0,0 +1,213 @@ +--- +reviewers: +- thockin +title: Cloudstack +content_template: templates/concept +--- + + + + +{{% capture overview %}} + + + +[CloudStack](https://cloudstack.apache.org/) 是一种基于硬件虚拟化原则(传统 IaaS 概念)用来构建公有云和私有云的软件。要在 CloudStack 上部署 Kubernetes, +有几种可能性取决于正在使用的云以及可用的镜像。CloudStack 还提供了一个 vagrant 插件,因此 vagrant 可以使用现有的 shell 创建程序,或新的基于 Salt 的方法来部署 Kubernetes。 + + +CloudStack 的 [CoreOS](http://coreos.com) 模板会[每夜](http://stable.release.core-os.net/amd64-usr/current/)构建。 +CloudStack operators 需要在他们的云中 [注册](http://docs.cloudstack.apache.org/projects/cloudstack-administration/en/latest/templates.html)这个模板,然后才能继续执行 Kubernetes 部署的命令。 + + + +本指南只用到一个 [Ansible playbook](https://github.com/apachecloudstack/k8s),完全自动化,可以使用 CoreOS 镜像在基于 CloudStack 的云上部署 Kubernetes。playbook 会创建 ssh 密钥对、创建安全组和相关规则,最后启动通过 cloud-init 配置的 CoreOS 实例。 + +{{% /capture %}} + +{{% capture body %}} + + + +## 先决条件 + +```shell +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: + +```shell +yum install libselinux-python +``` + + +[_cs_](https://github.com/exoscale/cs) 是 CloudStack API 的 python 模块。 + + +设置所使用的 CloudStack 端点、API 键和 HTTP 方法。 + + +你可以将它们定义为环境变量:`CLOUDSTACK_ENDPOINT`、`CLOUDSTACK_KEY`、`CLOUDSTACK_SECRET` 和 `CLOUDSTACK_METHOD`。 + + +或者创建一个 `~/.cloudstack.ini` 文件: + +```none +[cloudstack] +endpoint = +key = +secret = +method = post +``` + + +我们需要使用 http POST 方法将 _large_ userdata 传递给 coreOS 实例。 + + + +### 复制 playbook + +```shell +git clone https://github.com/apachecloudstack/k8s +cd kubernetes-cloudstack +``` + + + +### 创建一个 Kubernetes 集群 + + +你只需要运行 playbook 即可。 + +```shell +ansible-playbook k8s.yml +``` + + +可以在 `k8s.yml` 文件中编辑某些变量。 + +```none +vars: + ssh_key: k8s + k8s_num_nodes: 2 + k8s_security_group_name: k8s + k8s_node_prefix: k8s2 + k8s_template: + k8s_instance_type: +``` + + +这将启动一个 Kubernetes 主节点和一些计算节点(默认情况下为 2)。 +`instance_type` 和`模板`是特定的,编辑它们可以指定特定于 CloudStack 云的模板和实例类型(即服务提供)。 + + +如果您想修改任何内容,请检查 `roles/k8s` 中的任务和模板。 + + +一旦副本完成,它将打印出 Kubernetes 主节点的IP: + +```none +TASK: [k8s | debug msg='k8s master IP is {{ k8s_master.default_ip }}'] ******** +``` + + +使用创建的密钥和 _core_ 用户 SSH 到它。 + +```shell +ssh -i ~/.ssh/id_rsa_k8s core@ +``` + + +您可以列出群集中的计算机: + +```shell +fleetctl list-machines +``` + +```none +MACHINE IP METADATA +a017c422... role=node +ad13bf84... role=master +e9af8293... role=node +``` + + + +## 支持级别 + + + +IaaS 供应商 | 配置管理 | 操作系统 | 网络 | 文档 | 合规 | 支持级别 +-------------------- | ------------ | ------ | ---------- | --------------------------------------------- | ---------| ---------------------------- +CloudStack | Ansible | CoreOS | flannel | [文档](/docs/setup/on-premises-vm/cloudstack/) | | 社区 ([@Guiques](https://github.com/ltupin/)) + + + +有关所有解决方案的支持级别信息,请查看[解决方案](/docs/setup/pick-right-solution/# Table -of-solutions)图表。 + +{{% /capture %}}