kubespray多云部署实战:AWS/Azure/GCE/OpenStack全攻略
【免费下载链接】kubespray 项目地址: https://gitcode.com/gh_mirrors/kub/kubespray
多云部署痛点与解决方案
企业IT架构正从单一云平台向多云架构演进,但多云环境下的Kubernetes部署面临基础设施差异、网络配置复杂、资源管理分散等挑战。Kubespray作为开源的Ansible自动化部署工具,支持在AWS、Azure、GCE、OpenStack等主流云平台快速构建一致的Kubernetes集群。本文将通过实战案例,详解在四大云平台部署Kubernetes的关键步骤与最佳实践。
多云部署架构概览
Kubespray通过统一的Ansible Playbook实现跨云平台部署,核心架构包含:
- 基础设施层:各云平台计算/网络/存储资源
- 自动化层:Ansible Playbook与动态 inventory
- Kubernetes层:跨平台一致的集群组件
AWS部署实战
环境准备
-
IAM权限配置
需创建"kubernetes-master"和"kubernetes-node"角色,策略文件位于contrib/aws_iam/。 -
资源标签设置
- 所有资源需添加标签
kubernetes.io/cluster/$cluster_name - 外部ELB子网添加
kubernetes.io/role/elb标签
- 所有资源需添加标签
配置文件修改
编辑group_vars/all.yml:
cloud_provider: 'aws'
动态Inventory配置
export AWS_ACCESS_KEY_ID="xxxxx"
export AWS_SECRET_ACCESS_KEY="yyyyy"
export AWS_REGION="us-east-2"
cp contrib/aws_inventory/kubespray-aws-inventory.py inventory/
部署命令
ansible-playbook -i inventory/kubespray-aws-inventory.py cluster.yml
Azure部署实战
关键参数配置
| 参数 | 说明 | 获取命令 |
|---|---|---|
| azure_tenant_id | 租户ID | az account show |
| azure_subscription_id | 订阅ID | az account show |
| azure_resource_group | 资源组名称 | az group list |
服务主体创建
az ad app create --display-name kubernetes --password CLIENT_SECRET
az ad sp create --id AppId
az role assignment create --role "Owner" --assignee http://kubernetes --subscription SUBSCRIPTION_ID
网络配置
确保路由表附加到子网,修改group_vars/all/all.yml:
cloud_provider: 'azure'
azure_vnet_name: 'kubespray-vnet'
azure_subnet_name: 'kubespray-subnet'
GCE部署要点
云提供商配置
编辑group_vars/all/gcp.yml:
cloud_provider: gce
gce_node_tags: k8s-lb
控制器配置
Kube-controller-manager需添加:
--cloud-provider=gce
--cloud-config=/etc/kubernetes/cloud-config
负载均衡设置
创建Service时指定type=LoadBalancer,GCE云提供商会自动创建公网IP和防火墙规则。
OpenStack部署指南
环境变量配置
source openstack-rc
export OS_AUTH_URL=https://openstack:5000/v3
export OS_USERNAME=username
export OS_PASSWORD=password
网络配置
对于Calico/Kube-router等L3 CNI,需配置Neutron端口允许Pod网段:
openstack port set <port-id> --allowed-address ip-address=10.233.0.0/18
Terraform自动化部署
使用Terraform模块快速 provision 基础设施:
cp -LRp contrib/terraform/openstack/sample-inventory inventory/mycluster
cd inventory/mycluster
terraform -chdir="../../contrib/terraform/openstack" apply -var-file=cluster.tfvars
跨平台部署通用步骤
- 集群初始化
git clone https://gitcode.com/gh_mirrors/kub/kubespray
cd kubespray
pip install -r requirements.txt
- 生成Inventory
cp -r inventory/sample inventory/mycluster
- 执行部署
ansible-playbook -i inventory/mycluster/hosts cluster.yml -b
最佳实践与注意事项
- 资源标签:所有云平台资源需统一标签便于管理
- 安全组:开放6443、2379等必要端口,参考docs/port-requirements.md
- 高可用:控制平面节点建议部署3+,etcd节点数为奇数
- 动态扩缩容:使用
scale.ymlPlaybook实现节点扩容
总结与展望
Kubespray通过Ansible实现了多云环境下Kubernetes部署的标准化与自动化,企业可根据业务需求选择合适的云平台组合。未来随着边缘计算与混合云的发展,跨平台部署工具将在资源调度、成本优化等方面发挥更大价值。
下期预告
- Kubespray离线环境部署方案
- 多云集群网络互联实战
【免费下载链接】kubespray 项目地址: https://gitcode.com/gh_mirrors/kub/kubespray
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考




