Рейтинг:0

Calicoctl отклоняет сертификат при новой установке k3s

флаг de

У меня есть свежая установка Ubuntu, свежая установка k3s и свежая загрузка calicoctl. Я установил его следующим образом.

curl -sfL https://get.k3s.io | K3S_KUBECONFIG_MODE="644"\
        INSTALL_K3S_EXEC="--flannel-backend=none --cluster-cidr=192.168.0.0/16\
        --disable-network-policy --disable=traefik" sh -

kubectl create -f https://docs.projectcalico.org/manifests/tigera-operator.yaml
kubectl create -f https://docs.projectcalico.org/manifests/custom-resources.yaml

curl -o calicoctl -O -L "https://github.com/projectcalico/calicoctl/releases/download/v3.20.2/calicoctl"

Когда я запускаю kubectl, все работает нормально. Когда я запускаю calicoctl, я получаю ошибки сертификата.

# calicoctl применить -f V000_000-host-policy.yaml 
Не удалось получить информацию о кластере для проверки несоответствия версий: получить «https://127.0.0.1:6443/apis/crd.projectcalico.org/v1/clusterinformations/default»: x509: сертификат, подписанный неизвестным центром
Используйте --allow-version-mismatch для переопределения.

я скопировал запрос-заголовок-ca.crt, клиент-ca.crt и сервер-ca.crt сертификаты от /var/lib/rancher/k3s/сервер/tls к /usr/local/share/ca-сертификаты и применил их с обновление-ca-сертификаты. Я могу подтвердить, что сертификаты перечислены в /etc/ssl/certs/ca-certificates.crt.

Кроме того, мой ~/.кубе/конфиг файл имеет следующее содержимое (я делаю регулярные переустановки, ничего из этого не является конфиденциальным, я надеюсь - поправьте меня, если я ошибаюсь)

апиВерсия: v1
кластеры:
- кластер:
    данные центра сертификации: LS0t...LS0K
    сервер: https://127.0.0.1:6443
  имя: по умолчанию
контексты:
- контекст:
    кластер: по умолчанию
    пользователь: по умолчанию
  имя: по умолчанию
текущий контекст: по умолчанию
вид: Конфигурация
предпочтения: {}
пользователи:
- имя: по умолчанию
  пользователь:
    данные сертификата клиента: LS0t...LS0K
    клиент-ключ-данные: LS0t...LQo=

И у меня есть следующая конфигурация в /etc/cni/net.d/calico-kubeconfig

# Файл Kubeconfig для плагина Calico CNI. Установил calico/node.
апиВерсия: v1
вид: Конфигурация
кластеры:
- название: местное
  кластер:
    сервер: https://10.43.0.1:443
    данные центра сертификации: "LS0t...tLS0K"
пользователи:
- название: бязь
  пользователь:
    токен: eyJhb...tk4Q
контексты:
- название: бязь-контекст
  контекст:
    кластер: локальный
    Пользователь: Калико
текущий контекст: ситцевый контекст

Я изменил адрес в calico-kubeconfig с 10.43.0.1:443 к 127.0.0.1:6443 но это не имело значения.

Кто-нибудь знает, как обойти это? Является ли ошибка сертификата, которую я вижу, следствием CA или токенов? Curl по тому же адресу также жалуется на CA, поэтому я думаю, что это не связано с токеном.

Рейтинг:1
флаг de

Установив уровень журнала calicoctl для отладки (например, calicctl -l отлаживать получение узлов) Я обнаружил, что происходит.

По умолчанию calicoctl читает /etc/calico/calicoctl.cfg. Этот файл не будет существовать, если вы установите calicoctl так, как я.Таким образом, клиент возвращается к использованию ~/.кубе/конфиг. Который содержит некоторую информацию, но не всю информацию.

В рамках информации журнала отладки также отображается загруженная конфигурация. Я смог сделать вывод, что свойства конфигурации немного отличались от свойств в документация.

Я создал следующее /etc/calico/calicoctl.cfg файл (формат yaml)

apiVersion: projectcalico.org/v3
вид: CalicoAPIConfig
метаданные:
спецификация:
  datastoreType: "кубернетес"
  kubeconfig: "/home/user/.kube/config"
  K8sAPIToken: "eyJh...xQHA"
  K8sCAFile: "/var/lib/rancher/k3s/server/tls/server-ca.crt"

Где K8sAPIToken я взял из /etc/cni/net.d/calico-kubeconfig. Это должен быть тот же токен, что и в вопросе, я не уверен, почему он изменился (обновил?). В любом случае, описанный выше метод решает проблему (по крайней мере, временно).

Рейтинг:0
флаг it

У меня похожая установка (кроме к3с работающий внутри непривилегированного контейнера Ubuntu LXD) с k3s.service начал использовать:

ExecStart=/usr/local/bin/k3s \
    сервер --snapshotter=родной \
    --kubelet-arg=feature-gates=KubeletInUserNamespace=true \
    --kube-controller-manager-arg=feature-gates=KubeletInUserNamespace=true \
    --kube-apiserver-arg=feature-gates=KubeletInUserNamespace=true,RemoveSelfLink=false \
    --disable=servicelb --disable=traefik --flannel-backend=none --disable-network-policy \
    --cluster-cidr=192.168.0.0/16 --cluster-init

Мне не нужно было копировать никакие сертификаты — достаточно было просто:

ln -s /etc/rancher/k3s/k3s.yaml ~/.kube/config

введите описание изображения здесь

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.