kubernetes - Kubernetes Service NodePort 未连接
问题描述
我在 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 Pod 和服务已成功生成。
> 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 nodeport 服务。
http://10.100.32.119:31000
http://10.100.32.119:8080
http://192.168.5.25:31000
我不知道资源配置文件、服务部分或 pod 部分的错误在哪里。请有任何想法。
解决方案
您的targetPort
Service 与您的 Pod 不匹配containerPort
。
您的服务声明表明nodePort
集群中任何节点上的 31000 或集群内port
特殊主机名上的 8080blog-app-svc.default.svc.cluster.local
转发到targetPort
某个带有app: blog-pod
标签的 pod 中的 80。你有那个 pod,但它正在监听端口 8080 和 3306,而不是端口 80。
如果您交换port
,targetPort
然后服务上的默认 HTTP 端口 80 将转发到您的 pod 中的端口 8080,这可能就是您所追求的。
推荐阅读
- sql - 在 SQL 中查找事件之间的最小天数
- python - Python:获取时间序列线性图中曲线的开始和结束时间
- ruby-on-rails - 无法在 Cloudinary 上获取远程媒体
- julia - julia :术语“julia”不被识别为 cmdlet、函数、脚本文件或可运行程序的名称。检查名称的拼写,或者如果
- python - 使用 PIL Python 进行双色线性渐变定位
- javascript - 是否可以在打字稿/角度进行精确倒计时?
- javascript - 从会话 JavaScript 中保存值
- javascript - 如果没有等待并抛出异步函数,调用者代码也应该抛出吗?
- javascript - 编辑消息嵌入的一部分 (Discord.JS)
- ansible - 如何在 ansible playbook 中使用 set_fact 计算算术百分比值