我已在我的GCP帐户上分配了静态IP。然后,我更新了我的应用程序的服务定义,以便在负载均衡器中使用它,如下所示:
kind: Service
apiVersion: v1
metadata:
# Unique key of the Service instance
name: my-app-service
spec:
ports:
# Accept traffic sent to port 80
- name: http
port: 80
targetPort: 5000
selector:
# Loadbalance traffic across Pods matching
# this label selector
app: web
# Create an HA proxy in the cloud provider
# with an External IP address - *Only supported
# by some cloud providers*
type: LoadBalancer
# Use the static IP allocated
loadBalancerIP: 35.186.xxx.xxx
如果我注释掉最后一行并让GKE分配一个短暂的公共IP,那么该服务就可以了。我有什么想法吗?
根据答案中的建议,我创建了一个Ingress
,如下所示:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: myapp
annotations:
kubernetes.io/ingress.global-static-ip-name: "myapp"
spec:
backend:
serviceName: my-app-service
servicePort: 80
现在,我看到Ingress
被分配了正确的静态IP。但是,我的Service
也会被分配一个(不同的)公共IP。 Ingress
和Service
未连接。如果我注释掉type: LoadBalancer
行,Service
未分配公共IP,但Ingress
仍然无法连接。在点击静态IP时我收到default backend - 404
响应。我尝试过以不同的顺序创建服务和入口,但也没有帮助。
如果我把它留下足够长的时间,静态IP会将流量路由到我的服务,但服务本身仍然停留在外部IP分配中:
$ kubectl get service my-app-service
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
my-app-service 10.x.x.x <pending> 80:31432/TCP 12m
答案 0 :(得分:1)
您需要创建Ingress
并使用Ingress for Kubernetes上的kubernetes.io/ingress.global-static-ip-name: "name-of-your-ip"
注释才能找到它。
您可以在此处找到教程:https://github.com/kelseyhightower/ingress-with-static-ip#tutorial