본문 바로가기

kubernetes

Ubuntu 22.04에 k3s설치하기

음...왜? k3s를 설치했는데...

노드(node)가 없지???

 

$ kubectl get node
No resources found

 

참조 : https://kubernetes.io/blog/2018/07/18/11-ways-not-to-get-hacked/

음..왜 노드가 없나?

위 그림이 복잡하지만 핵심은 Node가 없으면 아무것도 할 수 없다는 점~~~!

 

 

user $ curl -sfL https://get.k3s.io | sh -
[INFO]  Finding release for channel stable
[INFO]  Using v1.24.4+k3s1 as release
[INFO]  Downloading hash https://github.com/k3s-io/k3s/releases/download/v1.24.4+k3s1/sha256sum-amd64.txt
[INFO]  Downloading binary https://github.com/k3s-io/k3s/releases/download/v1.24.4+k3s1/k3s
[INFO]  Verifying binary download
[INFO]  Installing k3s to /usr/local/bin/k3s
[INFO]  Skipping installation of SELinux RPM
[INFO]  Creating /usr/local/bin/kubectl symlink to k3s
[INFO]  Creating /usr/local/bin/crictl symlink to k3s
[INFO]  Skipping /usr/local/bin/ctr symlink to k3s, command exists in PATH at /usr/bin/ctr
[INFO]  Creating killall script /usr/local/bin/k3s-killall.sh
[INFO]  Creating uninstall script /usr/local/bin/k3s-uninstall.sh
[INFO]  env: Creating environment file /etc/systemd/system/k3s.service.env
[INFO]  systemd: Creating service file /etc/systemd/system/k3s.service
[INFO]  systemd: Enabling k3s unit
Created symlink /etc/systemd/system/multi-user.target.wants/k3s.service → /etc/systemd/system/k3s.service.
[INFO]  systemd: Starting k3s
test@test:/etc$ kubectl get nodes
WARN[0000] Unable to read /etc/rancher/k3s/k3s.yaml, please start server with --write-kubeconfig-mode to modify kube config permissions 
error: error loading config file "/etc/rancher/k3s/k3s.yaml": open /etc/rancher/k3s/k3s.yaml: permission denied
test@test:/etc$ sudo kubectl get nodes
No resources found
user $ curl -sfL https://get.k3s.io | sh -

 

이렇게 설치 하면 노드가 보이질 않는다;;;;

 

그런데 참 희한하다 

--docker 옵션을 추가해주면 된다.

 

--docker
root@test:~# curl -sfL https://get.k3s.io | sh -s - --docker
[INFO]  Finding release for channel stable
[INFO]  Using v1.24.4+k3s1 as release
[INFO]  Downloading hash https://github.com/k3s-io/k3s/releases/download/v1.24.4+k3s1/sha256sum-amd64.txt
[INFO]  Downloading binary https://github.com/k3s-io/k3s/releases/download/v1.24.4+k3s1/k3s
[INFO]  Verifying binary download
[INFO]  Installing k3s to /usr/local/bin/k3s
[INFO]  Skipping installation of SELinux RPM
[INFO]  Creating /usr/local/bin/kubectl symlink to k3s
[INFO]  Creating /usr/local/bin/crictl symlink to k3s
[INFO]  Skipping /usr/local/bin/ctr symlink to k3s, command exists in PATH at /usr/bin/ctr
[INFO]  Creating killall script /usr/local/bin/k3s-killall.sh
[INFO]  Creating uninstall script /usr/local/bin/k3s-uninstall.sh
[INFO]  env: Creating environment file /etc/systemd/system/k3s.service.env
[INFO]  systemd: Creating service file /etc/systemd/system/k3s.service
[INFO]  systemd: Enabling k3s unit
Created symlink /etc/systemd/system/multi-user.target.wants/k3s.service → /etc/systemd/system/k3s.service.
[INFO]  systemd: Starting k3s
root@test:~# kubectl get nodes
NAME   STATUS     ROLES    AGE   VERSION
test   NotReady   <none>   0s    v1.24.4+k3s1
--docker 인자를 추가하니까
이제서야 노드가 보입니다. 
# kubectl get nodes
NAME   STATUS     ROLES    AGE   VERSION
test   NotReady   <none>   0s    v1.24.4+k3s1

드디어 node가 보입니다. 

시간이 지나니...ready 상태로 변경되었구요

root@test:~# kubectl get nodes
NAME   STATUS   ROLES                  AGE     VERSION
test   Ready    control-plane,master   2m11s   v1.24.4+k3s1

 

그런데 일반 유저권한으로는 kubectl이 실행이 안되네요;;

test@test:/$ kubectl get notes
WARN[0000] Unable to read /etc/rancher/k3s/k3s.yaml, please start server with --write-kubeconfig-mode to modify kube config permissions 
error: error loading config file "/etc/rancher/k3s/k3s.yaml": open /etc/rancher/k3s/k3s.yaml: permission denied

/etc/rancher/k3s/k3s.yaml

파일을 읽지 못하여 에러 발생!!!

서버 시작할때 

 --write-kubeconfig-mode

를 지정하라고 한다.

 

 

그런데 다음과 같이 

/etc/systemd/system/k3s.service.env 

에 

 K3S_KUBECNFIG_MODE=\"644\" 

을 추가하고

root@test:~# echo K3S_KUBECNFIG_MODE=\"644\" >> /etc/systemd/system/k3s.service.env
test@test:/$ sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config \
&& chown $USER ~/.kube/config \
&& chmod 600 ~/.kube/config \
&& echo 'export KUBECONFIG=~/.kube/config' >> ~/.bashrc \
&& source ~/.bashrc
[sudo] test 암호: "
test@test:/$ kubectl get node
NAME   STATUS   ROLES                  AGE    VERSION
test   Ready    control-plane,master   137m   v1.24.4+k3s1

~/.kube/config 파일을 만들고

현재 사용자가 잘 접근할 수 있도록 권한 설정해면

유저권한으로도 kubectl 이 잘 실행된다는!!!