작성
·
160
0
안녕하세요. etcd 백업/리스 투어 진행하고 있는데 정상적으로 etcd snapshot 생성 후 resore 시 etcd pod가 pending 상태를 유지합니다. 혹시 이류를 알 수 있을까요?
스냅샷 생성 명령어
$ ETCDCTL_API=3 etcdctl --endpoints https://127.0.0.1:2379 --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key --cacert=/etc/kubernetes/pki/etcd/ca.crt snapshot save /home/k8sadm/20240610.db
스냅샷 정상 확인
$ ETCDCTL_API=3 etcdctl --write-out=table snapshot status 20240610.db
Deprecated: Use etcdutl snapshot status
instead.
+----------+----------+------------+------------+
| HASH | REVISION | TOTAL KEYS | TOTAL SIZE |
+----------+----------+------------+------------+
| 1c359138 | 2024399 | 888 | 3.8 MB |
+----------+----------+------------+------------+
스냅샷 리스토어 명령어
ETCDCTL_API=3 etcdctl --data-dir /var/lib/etcd-backup snapshot restore 20240610.db
4. descirbe etcd podkubectl describe pod etcd-k8s-jyhyun -n kube-system
Name: etcd-k8s-jyhyun
Namespace: kube-system
Priority: 2000001000
Priority Class Name: system-node-critical
Node: k8s-jyhyun/
Labels: component=etcd
tier=control-plane
Annotations: kubeadm.kubernetes.io/etcd.advertise-client-urls: https://10.6.20.130:2379
kubernetes.io/config.hash: fa7fbc532f6755b3221eb69e85a2d135
kubernetes.io/config.mirror: fa7fbc532f6755b3221eb69e85a2d135
kubernetes.io/config.seen: 2024-06-10T11:30:54.682732539+09:00
kubernetes.io/config.source: file
Status: Pending
SeccompProfile: RuntimeDefault
IP:
IPs: <none>
Controlled By: Node/k8s-jyhyun
Containers:
etcd:
Image: registry.k8s.io/etcd:3.5.12-0
Port: <none>
Host Port: <none>
Command:
etcd
--advertise-client-urls=https://10.6.20.130:2379
--cert-file=/etc/kubernetes/pki/etcd/server.crt
--client-cert-auth=true
--data-dir=/var/lib/etcd
--experimental-initial-corrupt-check=true
--experimental-watch-progress-notify-interval=5s
--initial-advertise-peer-urls=https://10.6.20.130:2380
--initial-cluster=k8s-jyhyun=https://10.6.20.130:2380
--key-file=/etc/kubernetes/pki/etcd/server.key
--listen-client-urls=https://127.0.0.1:2379,https://10.6.20.130:2379
--listen-metrics-urls=http://127.0.0.1:2381
--listen-peer-urls=https://10.6.20.130:2380
--name=k8s-jyhyun
--peer-cert-file=/etc/kubernetes/pki/etcd/peer.crt
--peer-client-cert-auth=true
--peer-key-file=/etc/kubernetes/pki/etcd/peer.key
--peer-trusted-ca-file=/etc/kubernetes/pki/etcd/ca.crt
--snapshot-count=10000
--trusted-ca-file=/etc/kubernetes/pki/etcd/ca.crt
Requests:
cpu: 100m
memory: 100Mi
Liveness: http-get http://127.0.0.1:2381/health%3Fexclude=NOSPACE&serializable=true delay=10s timeout=15s period=10s #success=1 #failure=8
Startup: http-get http://127.0.0.1:2381/health%3Fserializable=false delay=10s timeout=15s period=10s #success=1 #failure=24
Environment: <none>
Mounts:
/etc/kubernetes/pki/etcd from etcd-certs (rw)
/var/lib/etcd from etcd-data (rw)
Volumes:
etcd-certs:
Type: HostPath (bare host directory volume)
Path: /etc/kubernetes/pki/etcd
HostPathType: DirectoryOrCreate
etcd-data:
Type: HostPath (bare host directory volume)
Path: /var/lib/etcd-backup
HostPathType: DirectoryOrCreate
QoS Class: Burstable
Node-Selectors: <none>
Tolerations: :NoExecute op=Exists
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Pulled 11m kubelet Container image "registry.k8s.io/etcd:3.5.12-0" already present on machine
Normal Created 11m kubelet Created container etcd
Normal Started 11m kubelet Started container etcd
Normal Killing 9m46s kubelet Stopping container etcd
답변 2
0
안녕하세요
etcd backup & restore는 쉽게 시작하는 쿠버네티스에서 다룬 주제긴 한데
그림 쿠버와도 연속성이 있어서 좀 살펴보았습니다.
그런데 인프라라는건 구성을 어떻게 하고 어떤 상태에서 어떤 것을 했는지 등등을 알아야 하는데...
적어주신 내용은 제가 제공해 드린 랩 환경이 아닌거 같아서 쉽게 답변드리기가 어렵습니다.
해당 부분은 내부적으로 구성하신 팀 또는 관련 엔지니어와 얘기해 보시는게 좋으실 것 같습니다.
물어보셔야 할 부분은 환경에 따라 여러가지가 있지만...
우선 이 부분부터 물어보시는게 좋으실 것 같습니다.
--listen-client-urls=https://127.0.0.1:2379,https://10.6.20.130:2379
해당 부분이 인증과 관련된 client 부분이기 때문입니다.
자세하게 설명하기에는 내용이 매우 많고 복잡해서 진행하지 않았지만,
간단하게 해당 부분과 관련해서 설명했던 영상을 참고하시는 것도 좋으실 것 같습니다.
의 07:00분에 구조는 간략하게 보여줍니다.
이와 함께 부분도 읽어보시면 좋을 것 같습니다.
https://etcd.io/docs/v3.1/op-guide/configuration/#--listen-client-urls
현재 제가 제공하고 있는 랩의 경우 다음과 같은 url을 바라봅니다.
root@cp-k8s:~# cat /etc/kubernetes/manifests/etcd.yaml | grep -i en-client-urls
- --listen-client-urls=https://127.0.0.1:2379,https://192.168.1.10:2379
그렇다고 해당 부분이 Pending의 원인이 아닐 수도 있습니다.
제가 말씀드리고자 하는건 제가 구성에 참여하지 않은 랩 환경은 단순하게 답변하기 어렵다는 뜻으로 바라봐 주시면 좋을 것 같습니다.
+restore 관련해서 쉽게 시작하는 쿠버네티스 영상 및 검색하시어 과정을 보시는게 좋을 것 같습니다. 위의 restore를 보면 인증서를 포함하거나 복구 과정 진행 중에 빠진 부분이 많이 있는거 같아서요.
그리고 describe 외에 logs를 보시는 것도 트러블슈팅에 도움이 되실 것 같습니다.
정리하자면,
구조를 다 제가 파악할 수 없으니 정확히 답변하기 어렵다.
restore하는거에 인증서가 없고, 그 외에 변경된 인증서와 etcd backup db를 etcd가 인식할 수 있도록 dir 경로 설정 (하셨으려나..)을 안 하신거 같다. 해당 내용은 그 전에 강의(쉽게 시작하는 쿠버네티스)에서 다룬 부분이어서 해당 영상을 참고하시는 것도 도움이 되실 것 같습니다.
describe 외에 logs를 보시는 것도 도움이 되실 것 같다.
입니다.
0
안녕하세요, 인프런 AI 인턴입니다.
백선호님의 etcd restore시 etcd static pod pending status와 관련하여 질문해주셔서 감사합니다. 이와 비슷한 상황을 다룬 이전 질문을 통해 도움을 드릴 수 있을 것 같습니다.
질문에서 etcd 백업 후 복원 과정을 진행 중 etcd pod가 pending 상태로 유지되는 문제에 대해 언급하셨습니다. 이와 유사한 상황에 대해 다룬 기존 답변을 참고하시면 유용할 것 같습니다:
위 링크는 팟이 펜딩 상태로 유지되는 문제와 관련 있으나, etcd특이성과 복원과정에서 발생하는 문제에 집중된 내용은 아닐 수 있습니다. 해당 상황에서 고려해야 할 가능성으로는, 복원 과정에서 etcd 데이터 디렉토리의 권한 문제, etcd 구성 오류, 네트워크 설정 문제 등이 있을 수 있습니다.
etcd 복원 과정에서 문제가 지속될 경우, 다음을 확인해보시는 것이 좋을 것 같습니다:
1. etcd의 로그 확인: 복원 과정에서 발생하는 구체적인 오류 메시지를 확인하여 문제의 원인을 파악할 수 있습니다.
2. etcd 데이터 디렉토리의 권한 설정 확인: 복원 명령어를 실행할 때, 올바른 권한으로 데이터 디렉토리에 액세스할 수 있어야 합니다.
3. etcd 구성 파일 확인: etcd 구성이 올바르게 설정되었는지, 특히 restore시 지정한 데이터 디렉토리 경로가 올바른지 확인합니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
etcd static pod의 설정은 kubeadm으로 설치후 수정 사항은 없습니다. 혹시 "--listen-client-urls=https://127.0.0.1:2379,https://10.6.20.130:2379" 을 봐야 한다고 하는데 어떤 이유로 위 세팅을 봐야 한다고 하시는 건가요?