我试图在CentOS上使用kubernetes创建redis集群。我的kubernetes主服务器运行在一台主机上,而kubernetes从服务器运行在两台不同的主机上。
{ "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 create-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服务。
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.rb创建-副本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.3:6379 172.30.96.4:6379
Redis集群按预期创建,下面的消息。
[OK] All 16384 slots covered.
现在,我应该能够从网络中的任何主机访问kubernetes节点IP(192.168.240.116)和nodePort(30894)上的redis-cluster。当我从一个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
当使用NodePort服务类型公开时,是否不可能访问kubernetes集群网络之外的redis-cluster?
我为这个问题纠结了好一阵子了。有人能建议我应该使用什么方法来访问网络之外的redis-cluster吗?
谢谢
运行./redis-trib.rb create--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
对此设置没有意义。
端口6379
只能通过您使用的服务访问,而不能在尝试时直接访问。这就是为什么在尝试使用设置时会遇到问题。
您可以做的是使用每个POD自己的服务公开每个POD,并有一个额外的集群服务来加载平衡外部请求。如Kelsey Hightower的示例存储库所示。这样,POD可以通过内部公开的端口进行通信,(外部)客户端可以使用loadbalanced集群端口。这意味着每个POD都需要自己的副本集(或部署)。Kelsey在YouTube上有一个长篇大论,解释了这个设置--YouTube/SlideShare。
另一种选择是使用单个redis主程序,如其他示例所示。
第一次使用 kubectl 访问 如果您是第一次访问 Kubernetes API 的话,我们建议您使用 Kubernetes 命令行工具:kubectl。 为了访问集群,您需要知道集群的地址,并且需要有访问它的凭证。通常,如果您完成了入门指南那么这些将会自动设置,或者其他人为您部署的集群提供并给您凭证和集群地址。 使用下面的命令检查 kubectl 已知的集群的地址和凭证: $ kubectl
根据用户部署和暴露服务的方式不同,有很多种方式可以用来访问 kubernetes 集群。 最简单也是最直接的方式是使用 kubectl 命令。 其次可以使用 kubeconfig 文件来认证授权访问 API server。 通过各种 proxy 经过端口转发访问 kubernetes 集群中的服务 使用 Ingress,在集群外访问 kubernetes 集群内的 service
在服务器2上 当我用以下命令启动服务器1时:sudo service mysql start--wsrep-new-cluster它启动得很好,如果我打开mysql并检查wsrep的状态,它会说一切都启动并运行,这很好,但是当我试图在第二台服务器上启动sudo service mysql时,我在错误日志中得到以下结果: 我不知道为什么第二台服务器不能检测到集群正在启动和运行。这些机器可以很好地相互
问题内容: 我对SQL(Server2008)的较低层次的了解是有限的,现在我们的DBA对此提出了挑战。让我解释一下这种情况:(我已经提到一些明显的陈述,希望我是对的,但是如果您发现有问题,请告诉我)。 我们有一张桌子,上面放着人们的“法院命令”。创建表(名称:CourtOrder)时,我的创建方式如下: 然后,我将非聚集索引应用于主键(以提高效率)。我的理由是,这是一个唯一字段(主键),应该像我
Cluster Cluster.EdsClusterConfig Cluster.OutlierDetection Cluster.LbSubsetConfig Cluster.LbSubsetConfig.LbSubsetSelector Cluster.LbSubsetConfig.LbSubsetFallbackPolicy (Enum) Cluster.RingHashLbConfig C
一、负载均衡 负载均衡算法 转发实现 二、集群下的 Session 管理 Sticky Session Session Replication Session Server 一、负载均衡 集群中的应用服务器(节点)通常被设计成无状态,用户可以请求任何一个节点。 负载均衡器会根据集群中每个节点的负载情况,将用户请求转发到合适的节点上。 负载均衡器可以用来实现高可用以及伸缩性: 高可用:当某个节点故障