POD에서 Ansible을 이용해서 WOL을 동작 시킬 수 있는 backend 앱을 구현한다음.
원격 부팅을 날리면 L2 layer가 아니라 부팅이 되지 않는다. mac주소를 이용하는데 당연히 일반적인설정으로는 pod에서 는 안되는 것인데…
POD에서 host의 network대역으로 brodcast를 날리려면 deployment에 hostNetwork를 적용하는 방법이 있다.
해당 옵션을 적용하게되면 pod는 node의 ip를 갖고 동작하게되고, istio-injection으로 사이드카를 넣어주던 것이 동작하지 않게 되는 문제가 함께 발생한다.
아무튼 pod에서 wol을 날리려면 추가 권한도 필요한데 pod에서 커널 수준의 권한이 필요해서 발생하는 문제가 나온다.
그래서 container부분에 권한 설정도 추가해주어야한다.
https://kubernetes.io/docs/concepts/security/pod-security-standards
spec.template.spec.hostNetwork: true
spec.template.spec.containers.securityContext.privileged: truehostpid 설정으로 모든 프로세스가 나오지 않게 할수도있음.

root@k8s-worker02:~# cat /proc/sys/kernel/cap_last_cap
40
root@k8s-worker02:~# capsh --print
Current: =ep
Bounding set =cap_chown,cap_dac_override,cap_dac_read_search,cap_fowner,cap_fsetid,cap_kill,cap_setgid,cap_setuid,cap_setpcap,cap_linux_immutable,cap_net_bind_service,cap_net_broadcast,cap_net_admin,cap_net_raw,cap_ipc_lock,cap_ipc_owner,cap_sys_module,cap_sys_rawio,cap_sys_chroot,cap_sys_ptrace,cap_sys_pacct,cap_sys_admin,cap_sys_boot,cap_sys_nice,cap_sys_resource,cap_sys_time,cap_sys_tty_config,cap_mknod,cap_lease,cap_audit_write,cap_audit_control,cap_setfcap,cap_mac_override,cap_mac_admin,cap_syslog,cap_wake_alarm,cap_block_suspend,cap_audit_read,cap_perfmon,cap_bpf,cap_checkpoint_restore
Ambient set =
Current IAB:
Securebits: 00/0x0/1'b0
secure-noroot: no (unlocked)
secure-no-suid-fixup: no (unlocked)
secure-keep-caps: no (unlocked)
secure-no-ambient-raise: no (unlocked)
uid=0(root) euid=0(root)
gid=0(root)
groups=0(root)
Guessed mode: UNCERTAIN (0)또 문제가 하나더 발생하는데 dns기본설정이 동작하지 않아서 Kubernetes FQDN이 안되는 문제가생긴다.
ingress 도메인으로 변경하면 동작은 하게되는데 istio 설정도 깨지고 커널 레벨까지 건드려야되는 문제가있어서 다시 원래 셋팅으로 되돌리는게 나을 것 같다.
POD에서 WakeOnLan을 사용하는 대체방법
POD의 Ansible에서 Bastion으로 Wol 명령을 보내서 동작하도록 하는 방법으로 다시 변경 하였다.