我已经为静态网站创建了 k8s 部署和服务 yaml。外部 IP 地址也在 kubernetes 服务中解析。但是当我尝试通过 curl 或浏览器访问该网站时,它返回连接超时。
Dockerfile:
FROM nginx:alpine
COPY . /usr/share/nginx/html
K8s部署yml:
apiVersion: apps/v1
kind: Deployment
metadata:
name: ohno-website
labels:
app: ohno-website
spec:
replicas: 1
selector:
matchLabels:
app: ohno-website
template:
metadata:
labels:
app: ohno-website
spec:
containers:
- name: ohno-website
image: gkganeshr/ohno-website:v0.1
imagePullPolicy: Always
ports:
- containerPort: 80
k8s service yml:
apiVersion: v1
kind: Service
metadata:
name: ohno-website
spec:
type: LoadBalancer
ports:
- protocol: TCP
port: 80
targetPort: 9376
selector:
app: ohno-website
ohno_fooserver@cloudshell:~ (fourth-webbing-279817)$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.16.0.1 <none> 443/TCP 8h
ohno-website LoadBalancer 10.16.12.162 34.70.213.174 80:31977/TCP 7h4m
答案1
欢迎加入 Stack!您targetPort
正在将流量导向端口 9376,但您的部署 pod 正在监听端口 80。请targetPort
在您的服务上将端口更改为 80。
下面快速回顾一下 Kubernetes 中哪个端口可以做什么:
港口在集群内指定端口上公开 Kubernetes 服务。集群内的其他 pod 可以通过指定端口与此服务器进行通信。
目标端口是服务将向其发送请求的端口,您的 pod 将监听该端口。容器中的应用程序也需要监听此端口。
节点端口通过目标节点 IP 地址和 NodePort 向集群外部公开服务。如果未指定端口字段,则 NodePort 是默认设置。
如果有帮助的话请告诉我。