我在我的有状态集中使用了 redis:5.0.1-alpine,有状态集有 6 个 Pod,并且使用以下命令完成了 Redis 集群形成
redis-cli --cluster create {IPlist放在这里} --cluster-replicas 1
现在,如果 Pod 被意外删除或 AKS 停止服务,那么 AKS 恢复后创建的 Pod 将具有不同的 IP。
我尝试故意删除 Pod,当重新创建 Pod 时,集群状态更改为“失败”(集群最初创建时为“正常”)
此外,当我尝试将旧数据集放入集群时,会出现一条消息,告知“集群已关闭”
我已经显示了用于创建集群的 redis.conf 文件的代码
apiVersion: v1
kind: ConfigMap
metadata:
name: redis-cluster
namespace: redis
data:
update-node.sh: |
#!/bin/sh
REDIS_NODES="/data/nodes.conf"
sed -i -e "/myself/ s/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-
9]\{1,3\}/${POD_IP}/" ${REDIS_NODES}
exec "$@"
redis.conf: |+
cluster-enabled yes
cluster-require-full-coverage no
cluster-node-timeout 15000
cluster-config-file /data/nodes.conf
cluster-migration-barrier 1
appendonly yes
protected-mode no
Run Code Online (Sandbox Code Playgroud)
Redis 集群节点和槽位相关数据作为附加的 Redis 集群节点和槽位
根据https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.17/#statefulset-v1-apps,我没有看到将 configMap 作为卷安装在 statefulset 中的选项,只有 PVC 可以与“StatefulSet”相关联。但是 PVC 没有 configMaps 的选项。
PUT /apis/apps/v1/namespaces/{namespace}/statefulsets/{name}/scale
甚至尝试使用获取指定有状态集的规模数据
“GET /apis/apps/v1/namespaces/{namespace}/statefulsets/{name}/scale”
请求:curl -s -k -H“授权:承载$TOKEN”-X GET https://kubernetes.default.svc:443/apis/apps/v1/namespaces/$Namespace/$Kind/$PodNamePrefix/scale
给出错误:
"message": "statefulsets.apps "app-4x" 被禁止:用户 "system:serviceaccount::default" 无法在命名空间 ""","reason" 的 API 组 "apps" 中获取资源 "statefulsets/scale": “禁止”,
参考:https://v1-14.docs.kubernetes.io/docs/reference/ generated/kubernetes-api/v1.14/
有人可以帮我解决这个问题吗?
containers kubernetes microservices kubernetes-statefulset kubernetes-apiserver
我有几个状态集,一个依赖于另一个,在第二个状态集开始缩放之前,我需要第一个状态集中的Pod处于就绪状态。
我想看看是否有一种方法可以自动链接两个有状态集以实现此目的,而不是由我手动完成。我对部署也有同样的担忧。
目前,我不使用Helm或任何其他工具,而只是使用kubectl。