首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在同一个K8S集群上安装多个redis?

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

Stack Overflow用户
提问于 2021-07-14 17:17:24
回答 1查看 126关注 0票数 0

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

我通过Helm和命名空间redis2并使用端口6380,26380在同一个K8S集群中安装了另一个redis。

redis1工作正常,但出现redis2错误:

代码语言:javascript
复制
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使用同样的方法。

请告诉我该怎么做。

EN

回答 1

Stack Overflow用户

发布于 2021-07-15 17:07:00

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

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

下面是一个简单的例子来说明可以有两个(或更多)服务在同一个端口( 80端口)上侦听。

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

代码语言:javascript
复制
$ 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   

最后,我们可以检查它是否如预期的那样工作:

代码语言:javascript
复制
$ 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>
...
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68375303

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档