Redhat
Kubernetes-calico 服務只能從部署 pod 的地方訪問
我在過去 3 天都面臨這個問題,但仍然無法弄清楚為什麼我無法使用 NodePort 服務類型訪問 k8s 集群之外的 NodePort。
基本上我已經在 rhel8 中建立了一個 3 節點集群,我按照本教程https://www.tecmint.com/install-a-kubernetes-cluster-on-centos-8/但在 weavenet 網路中遇到了一些問題,這就是為什麼我’我又做了一次,但這次是和印花布一起做的。
我為網路外掛安裝了 calico 最新版本,你可以看到所有 kube pod 都執行良好。
現在這是我的部署文件
apiVersion: apps/v1 kind: Deployment metadata: name: hello-k8s spec: selector: matchLabels: app: hello-k8s replicas: 1 template: metadata: labels: app: hello-k8s spec: containers: - name: spring-boot image: fuzzy28/hello-k8s:v3 ports: - containerPort: 8080 --- apiVersion: v1 kind: Service metadata: name: hello-k8s-svc spec: selector: app: hello-k8s ports: - protocol: TCP port: 8080 targetPort: 8080 type: NodePort
我部署了它,它在下面突出顯示的節點中執行良好。
如果我們檢查服務,它執行在 32020 埠。
我使用以下命令打開了所有節點中的埠
firewall-cmd --permanent --add-port=30000-32767/tcp
所以關鍵時刻,在 k8s 集群外的瀏覽器上檢查後,它就無法訪問了。我在所有節點的 IP 地址中都試過了,但無法訪問。
奇怪的是,該 URL 只能在部署它的 pod 內部訪問。
我真的不明白這裡發生了什麼,這是我的網路介面,以防你想看。
我花了一段時間才找出問題的最可能原因。事實證明,由於 RHEL 8 版本
iptables
已被棄用,並且nftables
是它的新替代品。38.2. 何時使用 firewalld、nftables 或 iptables
iptables
:該iptables
實用程序在 Red Hat Enterprise Linux 8 中已棄用。請改用nftables
。Kubernetes 網路使用
iptables
並且不兼容nftables
.我試圖通過禁用
firewalld
and來解決您的問題nftables
,並強制 rhel8 改用 iptables,但它仍然沒有解決集群中的所有連接問題。似乎目前您能做的最好的事情就是使用舊的 rhel 版本。如果您還有其他問題,請告訴我。