我一直试图使用以下内容将我的应用程序公开到公共IP。这是在Azure上完成的。生成了公共IP,但是当我浏览到该IP时却一无所获。
这是一个在端口8000上运行容器的Django应用。该服务目前在端口80上运行,但是即使我将该服务配置为在端口8000上运行,它仍然无法工作。
我的服务定义方式有问题吗?
apiVersion: v1
kind: Service
metadata:
name: web
labels:
app: hmweb
spec:
ports:
- port: 80
selector:
app: hmweb
tier: frontend
type: LoadBalancer
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: hmweb-deployment
labels:
app: hmweb
spec:
replicas: 1
selector:
matchLabels:
app: hmweb
template:
metadata:
labels:
app: hmweb
spec:
containers:
- name: hmweb
image: nw_webimage
envFrom:
- configMapRef:
name: new-config
command: ["/bin/sh","-c"]
args: ["gunicorn saleor.wsgi -w 2 -b 0.0.0.0:8000"]
ports:
- containerPort: 8000
imagePullSecrets:
- name: key
kubectl输出描述服务网络(服务名称:)
Name: web
Namespace: default
Labels: app=hmweb
Annotations: kubectl.kubernetes.io/last-applied-configuration={"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"labels":{"app":"hmweb"},"name":"web","namespace":"default"},"spec":{"ports":[{"port":...
Selector: app=hmweb
Type: LoadBalancer
IP: 10.0.86.131
LoadBalancer Ingress: 13.69.127.16
Port: <unset> 80/TCP
TargetPort: 8000/TCP
NodePort: <unset> 31827/TCP
Endpoints: 10.244.0.112:8000
Session Affinity: None
External Traffic Policy: Cluster
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal EnsuringLoadBalancer 8m service-controller Ensuring load balancer
Normal EnsuredLoadBalancer 7m service-controller Ensured load balancer
答案 0 :(得分:0)
其背后的原因是您的服务具有两个选择器app: hmweb
和tier: frontend
,并且您的部署Pod仅具有一个名为app: hmweb
的标签。因此,在创建服务时,它找不到具有标签且未连接到任何吊舱的吊舱。另外,如果您的容器在8000
端口上运行,则必须定义targetPort
,该值具有在其上运行容器的容器端口的值,否则它将同时占用targetPort
和{{1 }}的值与您在服务中定义的值相同,即port
适合您的部署的Yaml是:
port: 80
希望这会有所帮助。