У меня есть кластер Kubernetes кластер на локальной машине и один Raspberry Pi. Чтобы протестировать кластер, я создал развертывание nginx и сервис, к которому я хочу получить доступ как NodePort. Но Бог знает почему, я не могу получить доступ к указанному сервису. Ниже приведены мои файлы развертывания и обслуживания.
kubectl get nodes
NAME STATUS ROLES AGE VERSION
anima Ready master 7d5h v1.16.1
bahamut Ready <none> 7d4h v1.16.1
Мои файлы обслуживания и развертывания:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
spec:
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
resources:
limits:
memory: "128Mi"
cpu: "500m"
ports:
- containerPort: 80
nodeSelector:
kubernetes.io/hostname: bahamut
apiVersion: v1
kind: Service
metadata:
name: nginx
spec:
selector:
app: nginx
ports:
- port: 3030
targetPort: 80
type: NodePort
После kubectl get pods -o wide
:
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-67c8c4b564-6x7g5 1/1 Running 0 6m21s 10.244.1.13 bahamut <none> <none>
Мои развертывания, kubectl get deployments -o wide
:
NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
nginx 1/1 1 1 7m55s nginx nginx:latest app=nginx
Мои услуги, kubectl get svc -o wide
:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 7d5h <none>
nginx NodePort 10.102.203.77 <none> 3030:30508/TCP 8m54s app=nginx
И, наконец, kubectl get endpoints -o wide
:
NAME ENDPOINTS AGE
kubernetes 192.168.25.4:6443 7d5h
nginx 10.244.1.13:80 9m41s
Мой локальный IP-адрес мастера Kubernetes - 192.168.25.4
, а мой малиновый IP - 192.168.25.6
. После развертывания службы я попытался:
curl 192.168.25.6:3030
curl: (7) Failed to connect to 192.168.25.6 port 3030: Connection refused
curl 192.168.25.6:80
curl: (7) Failed to connect to 192.168.25.6 port 80: Connection refused
curl 192.168.25.6:30508 (hangs)
Также попытался использовать IP главного узла, IP-адрес службы и указанный IP-адрес кластера, но ничего не работает.
РЕДАКТИРОВАТЬ
Это работает, если я использую hostNetwork=true
при развертывании и получаю доступ к нему, используя локальный IP-адрес узла на порту контейнера, но, очевидно, это не то, что я хочу. Я хочу понять, почему Kubernetes не позволяет мне получить доступ к контейнеру через сервис.