Вопрос или проблема
Я установил Canonical Kubernetes из Snap с помощью:
$ sudo snap install k8s --classic
И я могу использовать его так:
$ sudo k8s kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-5869d7778c-r87sf 1/1 Running 0 14h
Как я могу использовать его без sudo
и команды k8s
, например:
$ kubectl get pods
Command 'kubectl' not found, did you mean:
command 'kubectx' from deb kubectx (0.9.5-1ubuntu0.2)
Try: sudo apt install <deb name>
Также я хотел бы подход, который может поддерживать автодополнение bash.
Я думал об использовании переменной окружения KUBECONFIG
, но похоже, что kubectl
неизвестен моей командной строке, и я также не знаю правильный путь для KUBECONFIG
.
Кроме того, я думал добавить своего пользователя в группу, как это можно сделать с microk8s, но не было группы k8s
.
Похоже, вы можете определить псевдоним для команды k8s kubectl
, как это:
alias kubectl="k8s kubectl"
Я не уверен, как sudo
играет здесь роль, но если он нужен, его можно добавить в псевдоним:
alias kubectl="sudo k8s kubectl"
Хорошее место для размещения определений псевдонимов – это ~/.bash_aliases
.
Псевдонимы обычно хорошо подходят для некоплексных и нескриптовых команд, которые предназначены для запуска из CLI для получения результата.
Также посмотрите здесь.
Чтобы псевдонимы работали с автодополнением, посмотрите здесь.
Ответ или решение
Чтобы использовать Canonical Kubernetes, установленный через Snap, без применения sudo
и без использования команды k8s
, важно сначала понять, как Snap управляет приложениями и какие права необходимы для управления Kubernetes.
Теория
Snap — это пакетный менеджер, который обеспечивает упрощенную установку и обновление приложений на системах Linux. Когда вы устанавливаете приложение через Snap, оно, как правило, запускается в контейнеризированной среде с ограниченным доступом, что может требовать использования sudo
для выполнения некоторых команд.
Для работы с Kubernetes без sudo
, вам нужно убедиться, что ваше окружение настроено так, чтобы предоставлять необходимые привилегии:
-
Права доступа: Убедитесь, что у вас есть необходимые права для выполнения команд Kubernetes. Это обычно включает доступ к конфигурационному файлу
kubeconfig
, который определяет как ваша утилитаkubectl
взаимодействует с кластером. -
Установление пути для
kubectl
: Убедитесь, что бинарные файлыkubectl
доступны в вашем пути без необходимости указыватьk8s
. Это может требовать создания символической ссылки или изменения конфигурации пути. -
Автодополнение: Для комфортной работы и повышения продуктивности рекомендуется настроить автодополнение для команд
kubectl
.
Пример
-
Конфигурация PATH:
- Чтобы сделать
kubectl
доступным безk8s
, вам может потребоваться создать символическую ссылку в одном из каталогов, указанных в переменной окруженияPATH
:sudo ln -s /snap/bin/k8s /usr/local/bin/kubectl
Это создаст символическую ссылку
kubectl
, которая будет обращаться к/snap/bin/k8s
, предоставляя возможность использовать команду напрямую.
- Чтобы сделать
-
Использование переменной
KUBECONFIG
:- Посмотрите, где к Snap-снапу сохраняется файл
kubeconfig
. Обычно это может быть расположено в домашнем каталоге пользователя или специальной директории Snap:export KUBECONFIG=~/snap/k8s/current/.kube/config
Установив переменную
KUBECONFIG
, вы указываетеkubectl
, где искать файл конфигурации, даже если вы перемещаете его в другое место.
- Посмотрите, где к Snap-снапу сохраняется файл
-
Настройка автодополнения:
- Для активизации автодополнения для
kubectl
, добавьте следующее в ваш~/.bashrc
или~/.bash_profile
:source <(kubectl completion bash)
- Если вы хотите использовать автодополнение с алиасами, добавьте следующий код:
alias k=kubectl complete -F __start_kubectl k
- Для активизации автодополнения для
Применение
В практическом применении, когда вы настроили алиасы и автодополнение, вы сможете использовать kubectl
напрямую без необходимости использования sudo
каждый раз. Это значительно упростит работу с Kubernetes и повысит вашу продуктивность.
Вот полный пример того, как могут выглядеть ваши алиасы и автодополнения в ~/.bashrc
:
# Алиас для kubectl, если используется snapped версия
alias kubectl='k8s kubectl'
# Автодополнение для kubectl
source <(kubectl completion bash)
# Автодополнение для алиаса k
complete -F __start_kubectl kubectl
Эти изменения позволят вам не только запускать команды Kubernetes без sudo
, но и легко дополнить их до нужного формата с помощью клавиши Tab
.
Это все сделает вашу работу с Kubernetes через Snap более управляемой и быстрой без необходимости постоянно использовать привилегии суперпользователя, минимизируя риск случайного внесения критических изменений в кластер. Тщательная настройка этих инструментов позволит вам сосредоточиться на разработке и поддержке вашего кластера, не отвлекаясь на тонкости управления доступом.