如何在AWS中将现有弹性IP分配给kops集群的主节点

时间:2020-10-12 03:15:52

标签: amazon-web-services kubernetes kops

我试图在不使用Route53 DNS配置的情况下在AWS环境中部署KOPS集群。我对KOPS还是很陌生,并且对网络拓扑没有足够的了解。在我的集群中,将有3个主节点。

根据我的要求,我需要从客户端(KOPS群集外部)访问此KOPS群集中运行的服务。因此,我想为所有主节点分配预先创建的弹性IP,因此我可以使用来自客户端的那些预先创建的弹性IP来访问KOPS集群中运行的服务。

我的问题是在KOPS集群创建过程中如何为所有主节点分配预先创建的弹性IP?

下面是我当前使用的用于创建KOPS集群的命令-

python Voiceassistance.py
  File "Voiceassistance.py", line 6
    driver = webdriver.Chrome('C:\Users\Ashok\Downloads\chromedriver_win32\chromedriver.exe')
                              ^
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape

cluster.yaml

kops create cluster \
    --state=${KOPS_STATE_STORE} \
    --master-zones=${MASTER_ZONES} \
    --zones=${ZONES} \
    --name=test-kops.k8s.local \
    --vpc=${VPC_ID} \
    --image="099720109477/ubuntu/images/hvm-ssd/ubuntu-focal-20.04-amd64-server-20200907" \
    --master-volume-size=40 \
    --master-count=${Master_Count} \
    --node-volume-size=40 \
    --node-count=${Node_Count} \
    --networking=amazon-vpc-routed-eni \
    --subnets=${SUBNET_IDS} \
    --utility-subnets=${SUBNET_IDS} \
    --network-cidr=${NETWORK_CIDR} \
    --ssh-public-key=~/.ssh/id_rsa.pub \
    --dry-run -oyaml > cluster.yaml

kops create -f cluster.yaml

kops create secret --name ${NAME} sshpublickey admin -i ~/.ssh/id_rsa.pub

kops update cluster test-kops.k8s.local --yes

1 个答案:

答案 0 :(得分:0)

由于控制平面节点在 ASG 中运行,因此您无法将弹性 IP 直接分配给 EC2 实例。您必须通过 ELB 才能访问它们。 ELB 也不能有弹性 IP。

另一种方法是使用 DNS 记录,但由于您也在使用上面的 gossip,这在此处不适用。

在 kOps 1.19 中,可以将 NLB 用于控制平面,但目前 kOps 不支持为其指定 EIP。由于您想使用 IP 访问 API 以外的其他服务,因此这也可能不是您想要的。

相关问题