microk8s 설치 중 calico-kube-controller 가 CrashLoopBackOff 상태에 머무르는 증상이 발생하여 네트워크 설정을 포함한 세팅 과정을 기록하였다.
시스템 날짜 세팅
$ sudo apt update
$ sudo timedatectl set-timezone 'Asia/Seoul'
# 변경 확인
$ date
cgroup enable
$ sudo vim /etc/default/grub
GRUB_CMDLINE_LINUX
에 다음 옵션을 추가한다.
cgroup_enable=memory cgroup_memory=1 systemd.unified_cgroup_hierarchy=0
- 작성 완료 예시
$ sudo cat /etc/default/grub
# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
# info -f grub -n 'Simple configuration'
GRUB_DEFAULT=0
GRUB_TIMEOUT_STYLE=hidden
GRUB_TIMEOUT=0
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX="cgroup_enable=memory cgroup_memory=1 systemd.unified_cgroup_hierarchy=0"
# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
\#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"
# Uncomment to disable graphical terminal (grub-pc only)
\#GRUB_TERMINAL=console
# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
\#GRUB_GFXMODE=640x480
# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
\#GRUB_DISABLE_LINUX_UUID=true
# Uncomment to disable generation of recovery mode menu entries
\#GRUB_DISABLE_RECOVERY="true"
# Uncomment to get a beep at grub start
\#GRUB_INIT_TUNE="480 440 1"
```
```bash
$ sudo update-initramfs -u
$ sudo update-grub
네트워크 세팅
$ cat << EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
$ sudo systemctl enable --now iptables
$ sudo iptables -P INPUT ACCEPT
$ sudo iptables -P FORWARD ACCEPT
$ sudo iptables -P OUTPUT ACCEPT
$ sudo iptables -F
$ sudo iptables --flush
$ sudo iptables -tnat --flush
microk8s 설치
# microk8s 설치
$ sudo snap install microk8s --classic
# 그룹추가, config 파일 권한 설정
$ sudo usermod -a -G microk8s $USER
$ sudo chown -f -R $USER ~/.kube
$ su – $USER
# core-dns, local-path-storage kube-dashboard 설치
# microk8s status 에서 enable 할 수 있는 목록을 확인할 수 있음
$ microk8s enable dns storage dashboard
$ microk8s stop
$ microk8s start
기타. bash alias & completion 설정
$ sudo apt install bash-completion
# k 는 'microk8s kubectl' mc 는 'microk8s' 로 세팅했다.
$ cat << EOF | sudo tee -a /etc/bash.bashrc
# microk8s
alias mc='microk8s'
alias k='microk8s kubectl'
alias kubectl='microk8s kubectl'
source <(microk8s kubectl completion bash)
complete -o default -F __start_kubectl k
source <(microk8s helm3 completion bash)
alias helm='microk8s helm3'
EOF