Pu sh docker образ в реестр, установленный с помощью дополнения microk8s - PullRequest
1 голос
/ 18 января 2020

На моей рабочей станции работает многоузловой кластер k8s. Я создал виртуальную машину, используя многопроходность. Кластер K8s развертывается с использованием microk8s.

Microk8s предоставляет частный реестр в виде addon .

Он предоставляет 32000 в качестве порта узла для реестра.

Я хотел бы подключиться к этому кластеру удаленно и pu sh docker изображений в этот реестр.

Я добавил 172.**.44.***:32000 в качестве небезопасной регистрации в моих docker настройках на моем удаленном компьютере p c.

Примечание: 172.**.44.*** - это IP-адрес кластера (что-то, что вы получаете в kubectl cluster-info)

Но я не могу заставить его работать

docker build -t 172.**.44.***:32000/myapp:v1 .
docker push 172.**.44.***:32000/myapp:v1
Get http://172.**.44.***:32000/v2/: dial tcp 172.**.44.***:32000: connect: no route to host

Я не использовал microk8s для настройки кластера kubernetes раньше, но я делаю у меня такое ощущение, что ip of 172.xx.xx.xx - это неправильный IP, который вы не можете подключить с локального p c

Итак, каковы результаты следующих команд:

  1. Что такое IP-узлы, включая главные и рабочие узлы?
kubernetes get nodes -o wide
Что такое настройка службы?
kuberentes get services

Можете ли вы убедиться, что служба к этому частному порту сервера реестра настроена и может быть подключена.

проверьте свой собственный IP-адрес P C
# for windows
ipconfig

# for linux/macos
ifconfig

возможно, на выходе много IP-адресов, убедитесь, что вы получили правильный локальный IP-адрес для вашего P C.

Например, это что-то вроде 10.xx.xx.xx, тогда вы должны использовать аналогичные IP-адреса для подключения к этому частному серверу реестра, вам просто нужно это выяснить

проверьте, какой сетевой CNI вы используете, weav enet, фланель и т. Д. c.

IP-адрес 172.xx.xx.xx в основном используется этим сетевым провайдером CNI, он может использоваться в кластере kubernetes, но не на локальном хосте.

1 Ответ

0 голосов
/ 09 марта 2020

После включения реестра на microk8s, запустите этот скрипт

kubectl get svc -n container-registry

и вы увидите, что microk8s имеет перенаправленный порт службы реестра 32000 на 5000, затем я использую ingress для показа через HTTPS.

Сначала вы должны включить ingress на microk8s:

microk8s.enable ingress

, затем вам нужно создать tls sceret, если вы хотите использовать https:

openssl genrsa -aes128 -out server.key 2048

openssl req -newkey rsa:2048 -nodes -keyout server.key -x509 -days 3650 -out server.crt

kubectl create secret tls registry-secret-tls --cert=server.crt --key=server.key -n container-registry

, затем используйте kubectl apply -f, чтобы создать ingress для прокси службы registry.

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: registry
  namespace: container-registry
  annotations:
    nginx.ingress.kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/proxy-body-size: "500m"
    nginx.ingress.kubernetes.io/proxy-pass-headers: "Location"
spec:
  tls:
  - hosts:
    - ingress.local
    secretName: registry-secret-tls
  rules:
  - host: ingress.local
    http:
      paths:
      - path: /
        backend:
          serviceName: registry
          servicePort: 5000

, затем добавьте 127.0.0.1 ingress.local в /etc/hosts файл. Наконец, используйте buildah pu sh docker изображений до ingress.local.

buildah push --tls-verify=false 44c92e82c220 docker://ingress.local/datacenter-school

На этот раз все выглядит нормально. Но когда я пытаюсь вывести список изображений в microk8s, я не могу найти изображение, которое я только что нажал.

microk8s.ctr images ls -q |grep datacenter-school

Это тихо, странно!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...