如何在同一个K8S集群上安装多个redis



我已经通过命名空间为redis1的Helm并使用端口637926379在K8S集群中安装了redis。

我通过Helm在相同的K8S集群中安装了另一个redis,命名空间为redis2,使用端口638026380。

redis1工作,但redis2错误:

Events:
Type     Reason     Age                   From               Message
----     ------     ----                  ----               -------
Normal   Scheduled  30m                   default-scheduler  Successfully assigned redis2/redis-redis-ha-server-0 to worker3
Normal   Pulled     30m                   kubelet            Container image "redis:v5.0.6-alpine" already present on machine
Normal   Created    30m                   kubelet            Created container config-init
Normal   Started    30m                   kubelet            Started container config-init
Normal   Pulled     29m                   kubelet            Container image "redis:v5.0.6-alpine" already present on machine
Normal   Created    29m                   kubelet            Created container redis
Normal   Started    29m                   kubelet            Started container redis
Normal   Killing    28m (x2 over 29m)     kubelet            Container sentinel failed liveness probe, will be restarted
Normal   Pulled     28m (x3 over 29m)     kubelet            Container image "redis:v5.0.6-alpine" already present on machine
Normal   Created    28m (x3 over 29m)     kubelet            Created container sentinel
Normal   Started    28m (x3 over 29m)     kubelet            Started container sentinel
Warning  Unhealthy  14m (x25 over 29m)    kubelet            Liveness probe failed: dial tcp xx.xxx.x.xxx:26380: connect: connection refused
Warning  BackOff    4m56s (x85 over 25m)  kubelet            Back-off restarting failed container

我以前在同一个集群中以同样的方式安装过rabbitmq。所以我希望我可以对redis使用同样的方法。

请告知应该做什么。

由于@David Maze在评论部分解决了这个问题,我决定提供一个社区Wiki答案,以便更好地了解其他社区成员。

Kubernetes中的服务允许应用程序接收流量,并且可以以不同的方式公开,因为存在不同类型的Kubernete服务(请参阅:KubernetesServices概述(。在默认ClusterIP类型的情况下,它在群集中的内部IP(每个服务也有自己的IP地址(上公开服务,并使服务只能从群集中访问。每个服务都有自己的IP地址,所以如果它们在同一个端口上侦听(但每个都在自己的IP上(也没关系。


下面是一个简单的示例,说明在同一端口(80端口(上侦听两个(或多个(服务是可能的。

我已经创建了两个部署(app1app2(,并使用相同的端口号向ClusterIP服务公开了它:

$ kubectl create deploy app-1 --image=nginx
deployment.apps/app-1 created
$ kubectl create deploy app-2 --image=nginx
deployment.apps/app-2 created
$ kubectl expose deploy app-1 --port=80
service/app-1 exposed
$ kubectl expose deploy app-2 --port=80
service/app-2 exposed
$ kubectl get pod,svc
NAME                         READY   STATUS    RESTARTS   
pod/app-1-5d9ccdb595-x5s55   1/1     Running   0          
pod/app-2-7747dcb588-trj8d   1/1     Running   0          
NAME                 TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)   
service/app-1        ClusterIP   10.8.12.54    <none>        80/TCP    
service/app-2        ClusterIP   10.8.11.181   <none>        80/TCP   

最后,我们可以检查它是否按预期工作:

$ kubectl run test --image=nginx
pod/test created
$ kubectl exec -it test -- bash
root@test:/# curl 10.8.12.54:80
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
...
root@test:/# curl 10.8.11.181:80
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
...

最新更新