티스토리 뷰
현상
Kollan-ansible을 통해 배포된 openstack환경에서 VM 생성 및 Snapshot 생성 등 몇몇 VM control시에 stuck 현상이 발생
분석결과
VM이 동작되는 host에 접근하여 docker ps 명령으로 동작되는 container를 확인해보면
root@compute003:~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dafe08adbdc8 deploy001:5000/kolla/ubuntu-source-fluentd:11.0.0 "dumb-init --single-…" 5 hours ago Up 5 hours fluentd
629af796954b deploy001:5000/kolla/ubuntu-source-neutron-metadata-agent:11.0.0 "dumb-init --single-…" 2 days ago Up 2 days (healthy) neutron_ovn_metadata_agent
306c5fd81474 deploy001:5000/kolla/ubuntu-source-ovn-controller:11.0.0 "dumb-init --single-…" 2 days ago Up 2 days ovn_controller
297be9d3ba8f deploy001:5000/kolla/ubuntu-source-openvswitch-vswitchd:11.0.0 "dumb-init --single-…" 2 days ago Up 2 days openvswitch_vswitchd
884c03bd17d4 deploy001:5000/kolla/ubuntu-source-openvswitch-db-server:11.0.0 "dumb-init --single-…" 2 days ago Up 2 days openvswitch_db
fb4b0aac61f1 deploy001:5000/kolla/ubuntu-source-nova-compute:11.0.0 "dumb-init --single-…" 2 days ago Up 2 days (healthy) nova_compute
23f56102428d deploy001:5000/kolla/ubuntu-source-nova-libvirt:11.0.0 "dumb-init --single-…" 2 days ago Up 2 days (unhealthy) nova_libvirt
2f5db426dac6 deploy001:5000/kolla/ubuntu-source-nova-ssh:11.0.0 "dumb-init --single-…" 2 days ago Up 2 days (healthy) nova_ssh
d4e13e44ab9a deploy001:5000/kolla/ubuntu-source-cron:11.0.0 "dumb-init --single-…" 2 days ago Up 5 hours cron
90a08073733f deploy001:5000/kolla/ubuntu-source-kolla-toolbox:11.0.0 "dumb-init --single-…" 2 days ago Up 5 hours kolla_toolbox
위와 깉이 nova-libivrt의 경우 unhealthy라는 상태정보를 확인할수 있고
실제 해당 container로 접근해서 process list를 확인해보면
root 679872 679866 0 14:57 ? 00:00:00 virsh version --daemon
root 680011 42365 0 14:58 ? 00:00:00 /bin/sh -c virsh version --daemon
root 680016 680011 0 14:58 ? 00:00:00 virsh version --daemon
root 680154 42365 0 14:59 ? 00:00:00 /bin/sh -c virsh version --daemon
root 680161 680154 0 14:59 ? 00:00:00 virsh version --daemon
root 680300 42365 0 15:00 ? 00:00:00 /bin/sh -c virsh version --daemon
root 680306 680300 0 15:00 ? 00:00:00 virsh version --daemon
root 680443 42365 0 15:01 ? 00:00:00 /bin/sh -c virsh version --daemon
root 680449 680443 0 15:01 ? 00:00:00 virsh version --daemon
root 680580 42365 0 15:02 ? 00:00:00 /bin/sh -c virsh version --daemon
root 680586 680580 0 15:02 ? 00:00:00 virsh version --daemon
root 680722 42365 0 15:03 ? 00:00:00 /bin/sh -c virsh version --daemon
root 680728 680722 0 15:03 ? 00:00:00 virsh version --daemon
root 680870 42365 0 15:04 ? 00:00:00 /bin/sh -c virsh version --daemon
root 680878 680870 0 15:04 ? 00:00:00 virsh version --daemon
root 681012 42365 0 15:05 ? 00:00:00 /bin/sh -c virsh version --daemon
root 681018 681012 0 15:05 ? 00:00:00 virsh version --daemon
root 681154 42365 0 15:06 ? 00:00:00 /bin/sh -c virsh version --daemon
root 681160 681154 0 15:06 ? 00:00:00 virsh version --daemon
위와 같이 다수의 virsh version --daemon 명령이 stuck된 상태로 남아 있는걸 확인할수 있다.
문제 당시에 약 2500여개의 명령이 남아 있었다.
(nova-libvirt)[root@compute001 /]# ps -ef | grep version | wc -l
2553
실제 container의 동작을 확인해보니 아래와 같이 healthcheck 항목이 추가되었고 이명령으로 인해 발생되었다.
root@compute003:~# docker inspect nova_libvirt
...
"Healthcheck": {
"Test": [
"CMD-SHELL",
"virsh version --daemon"
],
"Interval": 30000000000,
"Timeout": 30000000000,
"StartPeriod": 50000000000,
"Retries": 3
},
...
해결방법
우선 globals.yml 내에 아래와 같이 healthcheck을 no로 두고 재배포하면 이슈는 해결된다.
## healthcheck (new feature)
enable_container_healthchecks: "no"
healthcheck을 그대로 두고 싶다면 virsh -v 와 같은 가벼운 명령을 넣으면 될것으로 보인다.
해당 명령으로 확인해보지는 않았으나 daemon 형태로 동작시킬만큼 무거운 작업이 아니기에 간단한 명령이라면 stuck 현상이 발생되지 않을것으로 보이며 interval도 좀 늘리는것을 추천한다.
참고사이트
아래 릴리즈 노트에 나온것과 같이 healthcheck 기능이 들어갔음.
'Cloud > Private Cloud' 카테고리의 다른 글
label_replace , label_join in PromQL (0) | 2022.04.26 |
---|---|
cURL with OpenStack (0) | 2021.04.09 |
kolla-ansible with elasticsearch (0) | 2021.02.23 |
Packer on OpenStack (0) | 2021.02.19 |
gophercloud sdk (0) | 2021.02.08 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- macvlan
- jenkins
- openstacksdk
- kubernetes
- boundary ssh
- minikube
- nginx-ingress
- Helm Chart
- openstack backup
- DevSecOps
- wsl2
- mattermost
- Jenkinsfile
- open policy agent
- kubernetes install
- K3S
- aquasecurity
- kata container
- crashloopbackoff
- socket
- ceph
- ansible
- minio
- vmware openstack
- hashicorp boundary
- GateKeeper
- Terraform
- OpenStack
- azure policy
- metallb
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
글 보관함