【发布时间】:2021-10-14 02:19:27
【问题描述】:
我使用 Ansible 将我的容器化应用程序部署到 google kubernetes 引擎。
我使用部署为应用程序创建了一个 pod,我还将 containerPort 指定为 8080。这似乎工作正常。
- name: Create k8s pod for nginx
kubernetes.core.k8s:
state: present
definition:
apiVersion: v1
kind: Deployment
metadata:
name: "{{ app }}"
namespace: "{{ namespace }}"
labels:
app: "{{ app }}"
spec:
replicas: 1
selector:
matchLabels:
app: "{{ app }}"
template:
metadata:
labels:
app: "{{ app }}"
spec:
containers:
- name: hello-dashboard
image: "{{ image_name }}"
# This app listens on port 8080 for web traffic by default.
ports:
- containerPort: 8080
env:
- name: PORT
value: "8080"
跟踪部署
kubectl get deployments --namespace=nginx
显示部署已就绪且可用
NAME READY UP-TO-DATE AVAILABLE AGE
nginx 1/1 1 1 34m
检查部署创建的 pod
kubectl get pods --namespace=nginx
这也表明 pod 已创建
NAME READY STATUS RESTARTS AGE
nginx-cb894bfc5-trnrk 1/1 Running 0 33m
现在,当我检查 LoadBalancer 服务时
kubectl get services --namespace=nginx
该服务也被创建并分配了一个外部IP
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nginx LoadBalancer 10.99.240.181 35.242.130.109 80:31005/TCP 33m
但问题是我无法使用 LoadBalancer 中的外部 IP 访问已部署的应用程序,浏览器告诉我无法访问它。
【问题讨论】:
-
似乎firewall rules 应用不正确。检查您的防火墙规则,并确保将防火墙应用于端口 31005(nodePort),因为这是接受来自负载均衡器的流量的端口。
标签: ansible google-kubernetes-engine gke-networking