我有一個在本地運行的minikube集羣(v0.17.1),有兩個部署:一個是Redis實例,另一個是試圖連接到Redis實例的自定義應用程序。我的配置或多或少從官方文檔和Kubernetes guestbook example複製/粘貼。Kubernetes不提供服務
服務定義和部署:
apiVersion: v1
kind: Service
metadata:
name: poller-redis
labels:
app: poller-redis
tier: backend
role: database
target: poller
spec:
selector:
app: poller
tier: backend
role: service
ports:
- port: 6379
targetPort: 6379
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: poller-redis
spec:
replicas: 1
template:
metadata:
labels:
app: poller-redis
tier: backend
role: database
target: poller
spec:
containers:
- name: poller-redis
image: gcr.io/jmen-1266/jmen-redis:a67b5f4bfd8ea8441ed66a8fcb6596f276017a1c
ports:
- containerPort: 6379
env:
- name: GET_HOSTS_FROM
value: dns
imagePullSecrets:
- name: gcr-json-key
應用程序部署:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: poller
spec:
replicas: 1
template:
metadata:
labels:
app: poller
tier: backend
role: service
spec:
containers:
- name: poller
image: gcr.io/jmen-1266/poller:a96a452292e894e46339309cc024cac67647cc25
imagePullPolicy: Always
imagePullSecrets:
- name: gcr-json-key
相關的(我希望)Kubernetes信息:
$ kubectl get services
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes 10.0.0.1 <none> 443/TCP 24d
poller-redis 10.0.0.137 <none> 6379/TCP 20d
$ kubectl get deployments
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
poller 1 1 1 1 12d
poller-redis 1 1 1 1 4d
$ kubectl get endpoints
NAME ENDPOINTS AGE
kubernetes 10.0.2.15:8443 24d
poller-redis 172.17.0.7:6379 20d
裏面的poller
吊艙(自定義應用程序),我爲Redis創建了環境變量:
# env | grep REDIS
POLLER_REDIS_SERVICE_HOST=10.0.0.137
POLLER_REDIS_SERVICE_PORT=6379
POLLER_REDIS_PORT=tcp://10.0.0.137:6379
POLLER_REDIS_PORT_6379_TCP_ADDR=10.0.0.137
POLLER_REDIS_PORT_6379_TCP_PORT=6379
POLLER_REDIS_PORT_6379_TCP_PROTO=tcp
POLLER_REDIS_PORT_6379_TCP=tcp://10.0.0.137:6379
但是,如果我嘗試連接到該端口,我不能。做類似:
nc -vz poller-redis 6379
失敗。
我注意到,我無法通過它的ClusterIP訪問Redis服務,但我可以通過運行Redis的pod的IP。
有什麼想法嗎?
如何設置你的redis?你是否正確設置了身份驗證?你有沒有嘗試使用Redis客戶端連接?在嘗試重現您的問題時,我發現'nc'不起作用,但redis客戶端可以正常工作,但返回'(錯誤)NOAUTH身份驗證要求。「 – Rod
您是否已經部署了集羣網絡?像織網,法蘭絨或類似的東西?你可以包含輸出'kubectl get pod,svc,ep,deploy,rc --all-namespaces'嗎?如果可以從另一個容器連接'10.0.0.137:6379'(不使用名稱),你還可以測試嗎? –