我正在使用 KubeSpray 的主分支。我使用 Terraform 使用 中的脚本配置 AWS 资源contrib/terraform/aws
。但是,默认情况下未启用 aws_cloud_provider。
这云cloud-provider=aws
文档说在 ansible playbook 命令中使用 来cluster.yaml
运行 playbook。但是,我也看到文档说cloud-provider
应该设置为external
。
cloud-provider
如果集群将在 AWS 上运行,最佳设置方法是什么?
答案1
我对这个问题有两个答案。
一- 将cloud-provider
选项添加到您的ansible-playbook
命令中,如下所示。
ansible-playbook \
-vvvvv \
-i ./inventory/hosts \
./cluster.yml \
-e ansible_user=centos \
-e cloud_provider=aws \
-e bootstrap_os=centos \
--become \
--become-user=root \
--flush-cache \
-e ansible_ssh_private_key_file=$PKI_PRIVATE_PEM \
| tee kubespray-cluster-$(date "+%Y-%m-%d_%H:%M").log
二
取消注释 group_vars/all.yml 中的 cloud_provider 选项并将其设置为“aws”
证明
我尝试了第一个答案。证据是AWS ELB脱离了待处理状态。
$ kubectl -n ingress-nginx get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ingress-nginx-controller LoadBalancer 10.233.57.196 aa....amazonaws.com 80:32111/TCP,443:31854/TCP 109s
ingress-nginx-controller-admission ClusterIP 10.233.11.133 <none> 443/TCP 109s