我正嘗試在centos上使用kubernetes創建redis集羣。我有一臺主機上運行我的kubernetes master,兩臺主機上運行kubernetes slave。Kubernetes Redis集羣問題
etcdctl GET/KUBE-的CentOS/network/config中
{ "Network": "172.30.0.0/16", "SubnetLen": 24, "Backend": { "Type": "vxlan" } }
這裏是我的複製控制器
apiVersion: v1
kind: ReplicationController
metadata:
name: redis-master
labels:
app: redis
role: master
tier: backend
spec:
replicas: 6
template:
metadata:
labels:
app: redis
role: master
tier: backend
spec:
containers:
- name: master
image: redis
command:
- "redis-server"
args:
- "/redis-master/redis.conf"
ports:
- containerPort: 6379
volumeMounts:
- mountPath: /redis-master
name: config
- mountPath: /redis-master-data
name: data
volumes:
- name: data
emptyDir: {}
- name: config
configMap:
name: redis-config
items:
- key: redis-config
path: redis.conf
kubectl創建-f rc.yaml
NAME READY STATUS RESTARTS AGE IP NODE
redis-master-149tt 1/1 Running 0 8s 172.30.96.4 centos-minion-1
redis-master-14j0k 1/1 Running 0 8s 172.30.79.3 centos-minion-2
redis-master-3wgdt 1/1 Running 0 8s 172.30.96.3 centos-minion-1
redis-master-84jtv 1/1 Running 0 8s 172.30.96.2 centos-minion-1
redis-master-fw3rs 1/1 Running 0 8s 172.30.79.4 centos-minion-2
redis-master-llg9n 1/1 Running 0 8s 172.30.79.2 centos-minion-2
Redis的-config文件中使用
appendonly yes
cluster-enabled yes
cluster-config-file /redis-master/nodes.conf
cluster-node-timeout 5000
dir /redis-master
port 6379
我用下面的命令來創建kubernetes服務。
kubectl暴露RC Redis的主--name = Redis的服務--port = 6379 --target端口= 6379 --type = NodePort
Name: redis-service
Namespace: default
Labels: app=redis
role=master
tier=backend
Selector: app=redis,role=master,tier=backend
Type: NodePort
IP: 10.254.229.114
Port: <unset> 6379/TCP
NodePort: <unset> 30894/TCP
Endpoints: 172.30.79.2:6379,172.30.79.3:6379,172.30.79.4:6379 + 3 more...
Session Affinity: None
No events.
現在我所有的豆莢和服務正在運行。我正在使用redis-trib pod創建redis羣集。
kubectl EXEC - 它redis的-TRIB的bash
./redis-trib.rb創建--replicas 1 172.30.79.2:6379 172.30.79.3:6379 172.30.79.4:6379 172.30.96.2:6379 172.30.96.3:6379 172.30.96.4:6379
Redis集羣按照預期創建並帶有以下消息。現在
[OK] All 16384 slots covered.
我應該能夠到我的網絡中的任何主機的訪問kubernetes節點的IP(192.168.240.116)和nodePort(30894)我的Redis集羣。當我從一個kubernetes節點執行下面的命令時,一切都按預期工作。
redis的-CLI -p 30894 -h 192.168.240.116 -c
192.168.240.116:30894> set foo bar
-> Redirected to slot [12182] located at 172.30.79.4:6379
OK
172.30.79.4:6379>
當我在同一網絡內運行從不同(非kubernetes)相同的命令節點,我看到連接超時錯誤。
Redis的-CLI -c -p 30894 -h 192.168.240.116
192.168.240.116:30894> set foo bar
-> Redirected to slot [12182] located at 172.30.79.4:6379
Could not connect to Redis at 172.30.79.4:6379: Connection timed out
是沒可能訪問kubernetes集羣網絡之外Redis的集羣使用NodePort服務公開時類型?
另外我不能使用LoadBalancer服務類型,因爲我沒有託管它在雲上。
我一直堅持這個問題很長一段時間。有人可以建議我應該用什麼方法訪問我的網絡之外的redis集羣?
感謝
是kube-proxy運行,還是拋出任何錯誤? – jaxxstorm