我有此网络服务器配置:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: webserver
spec:
replicas: 1
template:
metadata:
labels:
app: webserver
spec:
containers:
- name: webserver
image: nginx:alpine
ports:
- containerPort: 80
volumeMounts:
- name: hostvol
mountPath: /usr/share/nginx/html
volumes:
- name: hostvol
hostPath:
path: /home/docker/vol
和此Web服务配置:
apiVersion: v1
kind: Service
metadata:
name: web-service
labels:
run: web-service
spec:
type: NodePort
ports:
- port: 80
targetPort: 80
protocol: TCP
selector:
app: webserver
我希望能够使用此配置通过http://192.168.99.100:80
连接到Web服务器,但是Chrome给了我ERR_CONNECTION_REFUSED
。
我尝试了minikube service --url web-service
,它给出了http://192.168.99.100:30276
,但是它也有一个ERR_CONNECTION_REFUSED
。
还有其他建议吗?
更新
我将端口/ targetPort更新为80。
但是,我现在得到:
ERR_CONNECTION_REFUSED
for http://192.168.99.100:80/
和
用于http://192.168.99.100:31540/的nginx 403
答案 0 :(得分:0)
在您的服务中,您没有指定targetPort,因此该服务使用port
值作为targetPort,但是您的容器正在侦听80。向该服务中添加一个targetPort: 80
。
答案 1 :(得分:0)
NodePort端口范围介于30000-32767(默认)之间。当您在未指定端口的情况下公开服务时,kubernetes将从上述范围内随机选择一个端口并为您提供服务。
您可以通过键入以下命令来检查端口
kubectl get svc
在您的情况下-该应用程序已端口转发到31540。您的问题似乎是niginx配置。检查nginx日志。
答案 2 :(得分:0)
在您的服务中,您可以定义一个nodePort
apiVersion: v1
kind: Service
metadata:
name: web-service
labels:
run: web-service
spec:
type: NodePort
ports:
- port: 80
targetPort: 80
nodePort: 32700
protocol: TCP
selector:
app: webserver
现在,您将可以在http://:32700
上对其进行访问请注意端口80。理想情况下,您将在端口80上运行一个nginx入口控制器,所有流量都将通过该端口进行路由。使用端口80作为nodePort会破坏您的部署。
答案 3 :(得分:0)
请检查已安装卷 / home / docker / vol
的权限要解决此问题,必须使安装的目录及其内容公开可读:
chmod -R o + rX / home / docker / vol