我在Windows 10上使用minikube。并且我生成kubernetes NodePort服务以从客户端Web浏览器进行访问。首先,以下代码是资源配置文件。
apiVersion: v1
kind: Pod
metadata:
name: blog-system
labels:
app: blog-pod
spec:
containers:
- name: blog-app
image: app:latest
imagePullPolicy: Never
ports:
- containerPort: 8080
args: ["-t", "-i"]
- name: blog-mysql
image: mysql:latest
env:
- name: MYSQL_ROOT_PASSWORD
value: password
- name: MYSQL_PASSWORD
value: password
- name: MYSQL_DATABASE
value: test
ports:
- containerPort: 3306
---
apiVersion: v1
kind: Service
metadata:
name: blog-app-svc
spec:
type: NodePort
selector:
app: blog-pod
ports:
- name: http
port: 8080
protocol: TCP
targetPort: 80
nodePort: 31000
Kubernetes容器和服务已成功生成。
> kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
blog-app-svc NodePort 10.100.32.119 <none> 8080:31000/TCP 79s
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 5m54s
> minikube service blog-app-svc --url
http://192.168.5.25:31000
但是,即使使用所有这些URL,也会拒绝对此kubernetes节点端口服务的访问。
http://10.100.32.119:31000
http://10.100.32.119:8080
http://192.168.5.25:31000
我不知道错误在资源配置文件,服务部分或Pod部分上。任何想法,请。
将targetPort
你的服务不匹配containerPort
您的吊舱。
您的服务声明说,nodePort
群集中任何节点上的31000或群集中port
特殊主机名上的8080 blog-app-svc.default.svc.cluster.local
,将targetPort
在带有app: blog-pod
标签的某个Pod中转发到80 。您具有该Pod,但它正在监听端口8080和3306,而不是端口80。
如果您进行交换port
,targetPort
则服务上的默认HTTP端口80将转发到pod中的端口8080,这很可能就是您想要的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句