我已经通过命名空间为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
端口(上侦听两个(或多个(服务是可能的。
我已经创建了两个部署(app1
和app2
(,并使用相同的端口号向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>
...