Closed zzz-Uzi closed 1 year ago
只是crds
的资源丢失吗
etcd 有没有持久化数据呢
etcd 有没有持久化数据呢
这是指??是指定crd资源的压缩包进行按安装的
这是指??是指定crd资源的压缩包进行按安装的
karmada etcd 的数据有没有持久化,我记得默认是没有持久化的
karmada etcd 的数据有没有持久化,我记得默认是没有持久化的
给个链接,别吓我 :)
karmada etcd 的数据有没有持久化,我记得默认是没有持久化的
给个链接,别吓我 :)
init
安装默认就是没有持久化,helm安装好像也是,我回去看看
只有init
默认没持久化,可以改下。
哪里设置的初始化,给个链接?
哪里设置的初始化,给个链接?
pkg/karmadactl/cmdinit/cmdinit.go
flags.StringVarP(&opts.EtcdStorageMode, "etcd-storage-mode", "", "emptyDir",
fmt.Sprintf("etcd data storage mode(%s). value is PVC, specify --storage-classes-name", strings.Join(kubernetes.SupportedStorageMode(), ",")))
我觉得这是个 good first issue
,你觉得呢 @RainbowMango
怎么改,你在这里说下,可以请@zzz-Uzi 确认一下能不能解决。
这个init模式没有持久化有点可怕啊,重启之后是不是只能重装了?通过init模式已经装过的在运行的集群,有什么补救方法吗? @prodanlabs
先不要着急,谁可以在开发环境把这个问题复现出来,并验证上面的方案是否可行?
etcdStorageModeHostPath = "hostPath"
先不要着急,谁可以在开发环境把这个问题复现出来,并验证上面的方案是否可行?
我们这边可以在一台机器上重新部署测试一下,但是修改karmada源码后的镜像不一定能构建成功,服务器无法连接外网
但是修改karmada源码后的镜像不一定能构建成功,服务器无法连接外网
感谢, 有基础image(alpine:3.15.1
)就可以本地构建.
但是修改karmada源码后的镜像不一定能构建成功,服务器无法连接外网
感谢, 有基础image(
alpine:3.15.1
)就可以本地构建.
好的,我今天或者明天来测试一下,有结果我会在这下面回复
这个init模式没有持久化有点可怕啊,重启之后是不是只能重装了?通过init模式已经装过的在运行的集群,有什么补救方法吗? @prodanlabs
有,先把正在运行的etcd数据备份出来,然后修改etcd statefulsets 持久化数据,最后再把数据还原就好了。
因为etcd的镜像里没有tar命令,没办法通过 kubectl cp
命令备份的文件复制出来。所以我们需要先创建一个 etcdctl 的pod
cat >etcdctl.yaml << EOF
apiVersion: v1
kind: Pod
metadata:
name: etcdctl
namespace: karmada-system
spec:
containers:
- name: etcdctl
image: anldisr/etcdctl:latest
command:
- sleep
- "6000"
imagePullPolicy: IfNotPresent
volumeMounts:
- mountPath: /etc/kubernetes/pki
name: karmada-cert
readOnly: true
restartPolicy: Always
volumes:
- name: karmada-cert
secret:
defaultMode: 420
secretName: karmada-cert
EOF
kubectl create -f etcdctl.yaml
进入 etcdctl
pod
kubectl -n karmada-system exec -it etcdctl -- bash
执行备份数据命令
export ETCDCTL_API=3
etcdctl --endpoints etcd-0.etcd.karmada-system.svc.cluster.local:2379 \
--cacert=/etc/kubernetes/pki/ca.crt \
--cert=/etc/kubernetes/pki/etcd-client.crt \
--key=/etc/kubernetes/pki/etcd-client.key \
snapshot save snapshot.db
现在,可以把备份的数据拷贝出来了。
kubectl -n karmada-system cp etcdctl:/snapshot.db ./snapshot.db
修改 etcd statefulsets , 根据实际情况,加入持久化声明
kubectl edit sts -n karmada-system etcd
进入 etcdctl
pod 还原数据
export ETCDCTL_API=3
etcdctl --endpoints etcd-0.etcd.karmada-system.svc.cluster.local:2379 \
--cacert=/etc/kubernetes/pki/ca.crt \
--cert=/etc/kubernetes/pki/etcd-client.crt \
--key=/etc/kubernetes/pki/etcd-client.key \
snapshot restore snapshot.db --data-dir=/var/lib/etcd-tmp
@zzz-Uzi @luoMonkeyKing @RainbowMango 可以先在测试环境测试,然后再改。正式环境可以先备份了。
有问题call我
我的错,还原数据哪一步有问题。我再试试另一种办法。
有一个问题,上午 @zzz-Uzi 帮忙在一台新的服务器上重新部署了karmada,然后重启了服务器,发现karmada的crd还在,但是在其他的环境上已经遇到过两次crd资源丢失的问题了。 测试环境配置: 节点数:1个 karmada版本:1.2 安装命令:kubectl karmada init --crds /$HOME/crds.tar.gz
kubectl karmada init --crds /$HOME/crds.tar.gz
现在默认是 emptyDir
--etcd-storage-mode string etcd data storage mode(emptyDir,hostPath,PVC). value is PVC, specify --storage-classes-name (default "emptyDir")
kubectl karmada init --crds /$HOME/crds.tar.gz
现在默认是 emptyDir
--etcd-storage-mode string etcd data storage mode(emptyDir,hostPath,PVC). value is PVC, specify --storage-classes-name (default "emptyDir")
是的,看了下etcd的配置是 emptyDir,但是服务器重启之后,crd竟然还在,和之前的环境出现的情况不一样
但是服务器重启之后,crd竟然还在
有点奇怪,按理说重启服务器后,用emptyDir存储的pod数据应该是丢失的才对。
我测试了几次,没复现
但是服务器重启之后,crd竟然还在
有点奇怪,按理说重启服务器后,用emptyDir存储的pod数据应该是丢失的才对。
我测试了几次,没复现
是的,但是我们的另外两套环境,已经遇到过两次crd丢失问题,和 @zzz-Uzi 讨论了下,好像区别就是,之前遇到问题的k8s环境,都是1个以上的节点,然后etcd是跑在node节点上的,我们今天测试的环境只有一个节点,不知道和这个有没有关系,你测试的环境几个节点
你测试的环境几个节点
我在一个节点和6个节点集群上都测试了,没复现
之前遇到问题的k8s环境,都是1个以上的节点,然后etcd是跑在node节点上的
是不是etcd所在的node节点没有重启过呢
奇怪了!!我们有问题的环境现在不方便重启,不然可以再定位下,我看etcd的配置都一样的
之前遇到问题的k8s环境,都是1个以上的节点,然后etcd是跑在node节点上的
是不是etcd所在的node节点没有重启过呢
master和node都重启了
那就有些奇怪了。 容器运行时是一样的吗
那就有些奇怪了。 容器运行时是一样的吗
都一样的,同一个脚本部署的k8s
etcd没有持久化数据的重要,还是先备份下数据,数据安全第一。
都一样的,同一个脚本部署的k8s
那就很奇怪了。
化数据的重要,还是先备份下数据,数据安全第一。
嗯,好的,先备份下,如果还复现不了的话,等后面我们那个环境能够重启了,我们再试下,到时候再发出来
@luoMonkeyKing 默认应该是hostPath,你可以提个PR改下吗
@luoMonkeyKing 默认应该是hostPath,你可以提个PR改下吗
@luoMonkeyKing 默认应该是hostPath,你可以提个PR改下吗
好的
thank.
/assign @luoMonkeyKing
@prodanlabs @luoMonkeyKing Does #2191 fix this issue?
And @zzz-Uzi Can you help to confirm it?
@prodanlabs @luoMonkeyKing Does #2191 fix this issue?
And @zzz-Uzi Can you help to confirm it?
no reproduction
no reproduction
OK, I would take that as fixed. Thanks for reaching us though. /close
@RainbowMango: Closing this issue.
@prodanlabs @luoMonkeyKing Does #2191 fix this issue?
yes
What happened: 重启服务器之后,,karmada下的crds 资源都丢失了 What you expected to happen:
How to reproduce it (as minimally and precisely as possible):
Anything else we need to know?:
Environment:
kubectl-karmada version
orkarmadactl version
):