Full guide는 아니구... 단순히.. 방법만...
microk8s.enable helm 명령을 실행 하면 실제로는 /snap/microk8s/xxxx/actions/enable.helm.sh 가 실행된다.
문제는 /snap/microk8s/xxxx 가 그냥 디렉터리가 아니라 설치이미지가 read-only 으로 마운트된 디렉터리라 수정이 불가능하단 것이다.
처음에는 microk8s의 systemd mount관련 파일을 수정해서 해당 위치를 다른 디렉터리로 bind하고.. 참 별걸 다했었는데 이후 생각해보니 더 간단한 방법이 있었다.
그냥 해당 파일 하나만 bind 하는 것이다.
1. 미리 http://get.helm.sh/helm-$HELM_VERSION-linux-$(arch).tar.gz 을 다운받아 놓고 필요한 대로 수정 (image 경로를 local-registry 로 바꾼다는 등)해서 저장시켜 놓고 (e.g. /tmp/helm.tar.gz)
2. /snap/microk8s/xxxx/actions/enable.helm.sh 을 /tmp/enable.helm.sh 같은데 복사한 뒤 해당 파일에서 curl로 helm.tar.gz을 다운받는 대신에 /tmp/helm.tar.gz을 이용하도록 수정하고
3. chmod +x /tmp/enable.helm.sh 권한주는거 잊지 마시구..^^
4. mount -o bind /tmp/enable.helm.sh /snap/microk8s/xxxx/actions/enable.helm.sh
으로 해당 파일을 새로운 파일로 bind시켜준다.
이렇게 하면 microk8s.enable helm 을 하면 /tmp/enable.helm.sh 이 먹게 된다.
microk8s을 offline으로 설치하는 것은 참 복잡하다..
1. $ snap download microk8s
명령으로 microk8s 설치 파일을 미리 다운받아 놓고
2. 필요한 기본 이미지(pause, coredns, tiller, registry 등)들을 이미 다운받아 놓고 (ctr image pull => ctr image export)
# snap ack microk8s.assets
# snap install microk8s.snap
으로 microk8s을 설치한 뒤 다시 이미지를 임포트한다. (ctr image import)
3. 필요한 것들을 microk8s.enable 으로 설치하고 (deployment등은 이미 microk8s내에 존재해서 인터넷 연결이 불필요하지만 docker 이미지는 없기 때문에 필요한건 미리 import 해놓아야 한다.)
4. 쓰면 된다... :)
* 참고
필요한 이미지를 export 하기 위해서 리스트를 볼 때
$ sudo ctr -a /var/snap/microk8s/common/run/containerd.sock -n k8s.io images ls
이렇게 볼 수 있긴 하지만 이유는 모르겠으나 이러면 누락된게 생긴다.
위 방법을 통해 리스트를 1차로 뽑고 (아래 방법에서는 pause등이 나오지 않기 때문에 위 방법을 먼저 써야 한다.)
$ microk8s.kubectl get pods --all-namespaces -o yaml | grep "image:" | cut -d':' -f 2 | cut -c2- | uniq
이렇게 보면 실제 pod에서 쓰는 이미지 목록을 얻을 수 있다!
'개발 및 운영 > Kubernetes' 카테고리의 다른 글
Kubernetes Offline (네트워크 분리 망) 에서 사용 (1) | 2020.03.30 |
---|---|
Ceph 사용시 XFS 사용시 주의!! (0) | 2020.03.22 |
Kubernetes yaml 자동 생성기 (0) | 2019.11.09 |
Kubernetes 설치 (0) | 2019.09.24 |
Kubernetes Node가 계속해서 NotReady/Ready를 오가는 경우 (0) | 2019.06.03 |
댓글