我在Digital Ocean上有一个集群。 1个主节点和2个节点。 我正在将Nginx控制器与Digital Ocean Load Balancer一起使用。 我的Ingress服务中的三个项目运行正常。我使用Nginx的第四个不使用。 有人知道为什么吗?
这里是配置。我忽略了正在运行的第1到第3部署的Ingress服务。我可以根据需要添加它们。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: hello-kubernetes-ingress
annotations:
kubernetes.io/ingress.class: nginx
spec:
rules:
- host: hw1.example.com
http:
paths:
- backend:
serviceName: hello-kubernetes-first
servicePort: 80
- host: hw2.example.com
http:
paths:
- backend:
serviceName: hello-kubernetes-second
servicePort: 80
- host: hw3.example.com
http:
paths:
- backend:
serviceName: hello-kubernetes-third
servicePort: 80
- host: hw4.example.com
http:
paths:
- backend:
serviceName: hello-kubernetes-fourth
servicePort: 80
apiVersion: v1
kind: Service
metadata:
name: hello-kubernetes-fourth
spec:
type: ClusterIP
ports:
- port: 80
targetPort: 8080
selector:
app: hello-kubernetes-fourth
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-kubernetes-fourth
spec:
replicas: 3
selector:
matchLabels:
app: hello-kubernetes-fourth
template:
metadata:
labels:
app: hello-kubernetes-fourth
spec:
containers:
- name: nginx
image: nginx:1.8
ports:
- containerPort: 8080
答案 0 :(得分:1)
首先,如果您使用nginx映像,则容器Port应该是该映像的Dockerfile公开的端口。 对于nginx映像,ContainerPort应该为端口80 https://hub.docker.com/layers/nginx/library/nginx/stable/images/sha256-cab8e4374e1e32bac58a8c7ae96c252cadcb1049545ed4bb3e3bfd5d087983b9
现在您应该通过从minikube节点访问podip:containerPort来测试nginx是否可用:
kubectl get po -o wide
hello-kubernetes-fourth-cb4fb668c-7tkd4 1/1 Running 0 25m 172.17.0.12
curl 172.17.0.12
此后,您应该修改服务的端口:targetPort应该与containerPort(80)和8080端口匹配 现在通过服务URL访问Nginx:
kubectl describe svc hello-kubernetes-fourth
curl ClusterIP:8080
如果确定,请同时修改入口的servicePort以匹配Service Port。不要忘记启用入口,因为在minikube上默认禁用该入口:
minikube addons enable ingress
* ingress was successfully enabled
启动入口Pod,并在您的主机中的/ etc / hosts中添加MINIKUBEIP hw4.example.com之后,您应该可以从主机进行卷曲了:
curl hw4.example.com
答案 1 :(得分:0)
部署配置不正确。如下所示更新YAML
apiVersion: v1
kind: Service
metadata:
name: hello-kubernetes-fourth
spec:
type: ClusterIP
ports:
- port: 80
targetPort: 80
selector:
app: hello-kubernetes-fourth
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-kubernetes-fourth
spec:
replicas: 3
selector:
matchLabels:
app: hello-kubernetes-fourth
template:
metadata:
labels:
app: hello-kubernetes-fourth
spec:
containers:
- name: nginx
image: nginx:1.8
ports:
- containerPort: 80
进入nginx pod并确认您能够访问该服务并获得响应
卷曲http://hello-kubernetes-fourth
这时您应该可以从入口获得服务。