我有一个在端口 80 上提供内容的工作 GKE 集群。如何让负载均衡器服务在外部(区域保留)静态 IP 111.222.333.123 上提供内容?
我看到kubectl get service
表明外部静态IP注册成功。外部 IP 确实响应 ping 请求。
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.16.0.1 <none> 443/TCP 17h
myapp-cluster NodePort 10.16.5.168 <none> 80:30849/TCP 84m
myapp-service LoadBalancer 10.16.9.255 111.222.333.123 80:30879/TCP 6m20s
此外,Google Cloud Platform 控制台显示转发规则已建立并正确引用 GKE 目标池。
我正在使用的部署和服务清单如下所示:
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
labels:
app: myapp
spec:
replicas: 2
selector:
matchLabels:
app: myapp
environment: sandbox
template:
metadata:
labels:
app: myapp
environment: sandbox
spec:
containers:
- name: myapp
image: myapp
imagePullPolicy: Always
ports:
- containerPort: 8080
restartPolicy: Always
---
apiVersion: v1
kind: Service
metadata:
name: myapp-service
spec:
selector:
app: myapp
environment: sandbox
ports:
- port: 80
targetPort: 8080
type: LoadBalancer
loadBalancerIP: "111.222.333.123"
相关的 skaffold 配置文件供参考:
apiVersion: skaffold/v2beta18
kind: Config
metadata:
name: myapp
build:
artifacts:
- image: myapp
context: .
docker: {}
deploy:
kubectl:
manifests:
- gcloud_k8_staticip_deployment.yaml
使用 Google Cloud Code 运行此配置时,我缺少什么以允许流量到达 GKE 集群?
抱歉,如果以前有人问过这个问题。如果我错过了复习问题的正确解决方案,我很乐意提供指点。