[英]Kubernetes Service NodePort not connected
我在 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 部分的錯誤在哪里。 任何想法,請。
您的 Service 的targetPort
與您的 Pod 的containerPort
不匹配。
您的服務聲明表示,集群中任何節點上的nodePort
31000,或集群內特殊主機名blog-app-svc.default.svc.cluster.local
上的port
8080,將轉發到具有app: blog-pod
某個 pod 中的targetPort
80 app: blog-pod
標簽。 您有那個 pod,但它正在偵聽端口 8080 和 3306 而不是端口 80。
如果您交換port
和targetPort
port
,那么服務上的默認 HTTP 端口 80 將轉發到您的 pod 中的端口 8080,這可能是您所追求的。
看來您的 NodePort 配置是正確的。 一些故障排除建議是,這可能是由 Kubernetes 工作節點上運行的防火牆引起的。
因此,請確保 31000 已打開,並且您應該能夠從 Kubernetes API 服務器解析該 IP。
其次,您應該考慮將
LoadBalancer 控制器添加到您的集群中,這樣您就不必使用 NodePorts。
除了調試之外,它們並沒有真正用於任何其他用途。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.