如何解决在 k3s 环境中每次运行 kubectl 都需要 sudo 的问题?
安装好了 k3s 以后每次运行 kubectl 系统可能会提示以下信息:
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
原因是 k3s 的配置文件放在了 /etc/rancher/k3s/k3s.yaml。这个位置需要 root 用户才能访问。我们可以把这个文件复制到当前用的 .kubeconfig 文件下。使用以下命令:
mkdir -p $HOME/.kube
sudo cp /etc/rancher/k3s/k3s.yaml $HOME/.kube/config
sudo chown $USER:$USER $HOME/.kube/config
然后运行下面的命令让 k3s 使用刚才设置的配置文件:
export KUBECONFIG=~/.kube/config
为了避免每次登录都需要运行以上命令。我们可以把上面的 export 命令加到 .bashrc 里。
结论
我们可以通过把 k3s 的配置文件设置到当前用户的目录下来避免每次运行 kubectl 命令都需要 sudo 的问题。