Google Kubernetes Engine LoadBalancer服务在使用Google Cloud Code ItelliJ时如何接收外部流量?
How to Make Google Kubernetes Engine LoadBalancer Service Receive External Traffic When Using Google Cloud Code ItelliJ?
我有一个工作的 GKE 集群在端口 80 提供内容服务。如何让负载均衡器服务在外部(区域保留)静态 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 云平台控制台显示转发规则已建立并正确引用 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 集群?
如果之前有人问过这个问题,我们深表歉意。如果我错过了正确的解决方案复习问题,很高兴得到指点。
据我所知,只要图像指向可访问的位置,这个问题中引用的配置实际上应该有效。我已经确认此配置可以在完全没有 IDE 的情况下使用玩具设置工作,只需使用 gcloud shell 并且一切正常。
问题源于 Google Cloud Code 在 运行 配置中配置上下文切换时更改 kubectl context 而没有任何额外警告。
我复制了您的设置并遇到了与您相同的问题(能够 ping 服务 IP 但无法从浏览器连接到它)。
然后我将 Deployment 容器端口更改为 80,将服务目标端口更改为 80,将服务端口更改为 8080,它起作用了,然后我能够使用服务 IP 从浏览器连接到部署。
部署清单文件:
服务清单文件:
我有一个工作的 GKE 集群在端口 80 提供内容服务。如何让负载均衡器服务在外部(区域保留)静态 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 云平台控制台显示转发规则已建立并正确引用 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 集群?
如果之前有人问过这个问题,我们深表歉意。如果我错过了正确的解决方案复习问题,很高兴得到指点。
据我所知,只要图像指向可访问的位置,这个问题中引用的配置实际上应该有效。我已经确认此配置可以在完全没有 IDE 的情况下使用玩具设置工作,只需使用 gcloud shell 并且一切正常。
问题源于 Google Cloud Code 在 运行 配置中配置上下文切换时更改 kubectl context 而没有任何额外警告。
我复制了您的设置并遇到了与您相同的问题(能够 ping 服务 IP 但无法从浏览器连接到它)。
然后我将 Deployment 容器端口更改为 80,将服务目标端口更改为 80,将服务端口更改为 8080,它起作用了,然后我能够使用服务 IP 从浏览器连接到部署。
部署清单文件:
服务清单文件: