目标:在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
感谢您的时间
答案 0 :(得分:0)
@Quentin指出,AWS Network Load Balancer现在支持K8s
https://aws.amazon.com/blogs/opensource/network-load-balancer-support-in-kubernetes-1-9/
我在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