使用aws上的k8s为LoadBalancer服务分配静态IP

时间:2017-10-22 06:40:02

标签: amazon-ec2 kubernetes

目标:在AWS上创建一个k8s LoadBalancer服务,其IP是静态的

通过预先分配静态IP并通过#include<stdio.h> #include<string.h> int main(){ char buffer[5]="1234"; //5 for '\0' char ch; int indxtomove = 1; printf ("%s\n", buffer); while(1){ scanf(" %c",&ch); memmove(buffer, &buffer[indxtomove], strlen(buffer) - indxtomove); buffer[3]=ch; printf("%s\n",buffer); } return 0; } 属性传递它,我在GKE上完成此任务没有任何问题:

loadBalancerIP

但在AWS中执行相同会导致$ kubectl apply -f - <<EOF apiVersion: v1 kind: Service metadata: name: dave loadBalancerIP: 17.18.19.20 ...etc... 卡住externalIP<pending>历史记录中出现错误

删除Events值允许k8s旋转经典LB:

loadBalancerIP

但是AWS明确警告我,IP是短暂的(有时候是2),而经典IP似乎不支持附加静态IP

感谢您的时间

1 个答案:

答案 0 :(得分:0)

@Quentin指出,AWS Network Load Balancer现在支持K8s

https://aws.amazon.com/blogs/opensource/network-load-balancer-support-in-kubernetes-1-9/

Kubernetes中的网络负载平衡

我在Kubernetes 1.9发行版中添加了对将新的网络负载平衡器与Kubernetes服务一起使用的支持。这是一个Alpha级功能,到目前为止,还不能用于生产集群或工作负载,因此请确保在尝试之前也请阅读NLB上的文档。通过NLB公开服务的唯一要求是添加批注service.beta.kubernetes.io/aws-load-balancer-type,其值为nlb。

完整的示例如下:

apiVersion: v1
kind: Service
metadata:
  name: nginx
  namespace: default
  labels:
    app: nginx
  annotations:
    service.beta.kubernetes.io/aws-load-balancer-type: "nlb"
spec:
  externalTrafficPolicy: Local
  ports:
  - name: http
    port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
type: LoadBalancer