当前位置: 首页 > 知识库问答 >
问题:

Redis sentinel在kubernetes HELM图中删除吊舱后不再通信

巫马山
2023-03-14
127.0.0.1:6379> get b
Error: Server closed the connection

共有1个答案

东郭弘方
2023-03-14

redis图有很多问题,但同时端口转发也有很多问题,所以问题似乎是双重复杂的。许多从事端口转发工作的人注意到,端口转发明显比通过服务连接到pod慢,命令在几分钟后就停止了。所以我建议您不要将它用于生产系统。

正如我们在正式的Kubernetes文档中看到的,应该谨慎地执行StatefulSet的手动强制删除pod,因为它最多可能违反StatefulSet固有的一个语义。StatefulSets可用于运行分布式和集群应用程序,这些应用程序需要稳定的网络标识和稳定的存储。这些应用程序通常具有依赖于具有固定身份的固定数量的成员的组合的配置。拥有多个具有相同身份的成员可能是灾难性的,并可能导致数据丢失(例如基于仲裁的系统中的分裂大脑场景)

删除pod后,pod的序号,主机名、SRV记录和A记录名称没有改变,但与pod相关联的IP地址改变了。在本教程使用的集群中,它们有。这就是为什么重要的是不要配置其他应用程序以按IP地址的StatefulSet连接到POD。

您也可以使用代理代替端口转发,例如:

$ kubectl proxy  --port=6379

如果您使用kubectl代理,就有可能到达不同的POD,正如预期的那样。端口转发最初被设计为附加到一个pod上,用于调试和其他目的。引入了有助于服务发现的新特性,因此,如果您不关心附加到哪个pod名称,如果您有多个合格的pod名称,那么您就不需要首先查找pod名称。端口转发启用http连接,目标是不应用应用程序级负载平衡,并且不支持多个活动endpoint。如果激活的pod终止,则有一个重新附加的单独功能请求。

您还可以默认构建端口转发,在pod配置文件中添加以下行:

export YOURAPP_POD=$(kubectl get pods -n $NAMESPACE | grep your-app | awk '{print $1;}')
kubectl port-forward -n $YOUR_NAMESPACE $YOURAPP_POD 8080
 类似资料:
  • 我有一个后端nodeJS应用程序运行在kubernetes集群。现在我想运行两个cron作业计划每个月。cron作业在一个JS文件中。如何使用库伯内特斯创建一个作业,在每个月运行该服务的pod中运行这些JS文件? 此链接提供了对其工作原理的基本理解,但我对如何为特定服务和特定Pod运行它有点困惑 https://kubernetes.io/docs/concepts/workloads/contr

  • 当我将触发helm install命令时,helm将读取所有的yml,因此将尝试一次部署所有的pods,这是我不想要的。我希望我的工作首先成功,然后只有其他的吊舱应该开始部署。当作业正在运行时,所有其他POD都应该等待或不应该启动,因为它们都依赖于作业的成功。 我怎样才能用Helm完成这个案子。请建议。我如何让其他豆荚等待,让他们知道工作已经成功地完成了。

  • 我试图创建和运行一个豆荚使用气流kubernetes豆荚操作员。下面的命令被尝试并确认有效,我正试图在本地使用kubernetes pod操作符复制相同的命令 有没有办法将serviceaccount标志传递给airflow kubernetes操作员? 谢了!

  • 我在minikube上运行kubernetes,我在一个代理后面,所以我设置了env变量(HTTP_代理) pod从未启动,我得到了错误 运行良好

  • 我已经在一组运行Centos7的VM上安装了Kubernetes V1.13.10。当我部署吊舱时,它们可以相互连接,但不能连接到集群之外的任何东西。CoreDNS吊舱在日志中有以下错误: IPs 10.20.10.51和10.20.10.52是内部DNS服务器,可以从节点访问。我从DNS服务器捕获了Wireshark数据,我看到流量来自CoreDNS pod IP地址172.21.0.33。DN