Pobieranie obrazów z prywatnego rejestru w Kubernetes
Zbudowałem 4-węzłowy klaster kubernetes z wieloma kontenerami działającymi na CoreOS. Obrazy pochodzą z repozytoriów publicznych i prywatnych. W tej chwili muszę zalogować się do każdego węzła i ręcznie ściągnąć obrazy za każdym razem, gdy je aktualizuję. Chciałbym móc je pociągnąć automatycznie.
- próbowałem uruchomić docker login na każdym serwerze i umieścić .plik dockercfg w /root i / core
- zrobiłem również powyższe z .docker / config.json
- I dodano secret do kube master i dodano imagePullSecrets:
- Nazwa: docker.io do pliku konfiguracyjnego Pod.
Podczas tworzenia pod dostaję komunikat o błędzie:
image <user/image>:latest not found
Jeśli zaloguję się i uruchomię docker pull to pociągnie obrazek. Próbowałem tego za pomocą docker.io oraz quay.io.
5 answers
Kubernetes obsługuje specjalny typ tajemnicy, który można utworzyć, który będzie używany do pobierania obrazów do strąków. Więcej szczegółów tutaj .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-23 17:35:49
Aby dodać do tego, co powiedział @rob, od Dockera 1.7, użycie .dockercfg został wycofany i teraz używa~/.docker / config.plik json. Istnieje wsparcie dla tego typu tajnego w kube 1.1, ale musisz go utworzyć za pomocą różnych kluczy / konfiguracji typu w yaml:
Po pierwsze, base64 koduje Twoje ~/.docker/config.json
:
cat ~/.docker/config.json | base64 -w0
Zauważ, że kodowanie base64 powinno pojawić się w jednej linii, więc za pomocą-W0 wyłączamy zawijanie.
Następnie utwórz yaml plik:
my-secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: registrypullsecret
data:
.dockerconfigjson: <base-64-encoded-json-here>
type: kubernetes.io/dockerconfigjson
-
$ kubectl create -f my-secret.yaml && kubectl get secrets
NAME TYPE DATA
default-token-olob7 kubernetes.io/service-account-token 2
registrypullsecret kubernetes.io/dockerconfigjson 1
Następnie, w Twoim yaml musisz odwołać się do registrypullsecret
lub utworzyć kontroler replikacji:
apiVersion: v1
kind: Pod
metadata:
name: my-private-pod
spec:
containers:
- name: private
image: yourusername/privateimage:version
imagePullSecrets:
- name: registrypullsecret
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-08 13:27:32
Jeśli chcesz pobrać obraz z prywatnego repozytorium Docker Hub, możesz użyć poniższej opcji.
Utwórz swój tajny klucz
kubectl create secret docker-registry myregistrykey --docker-server=DOCKER_REGISTRY_SERVER --docker-username=DOCKER_USER --docker-password=DOCKER_PASSWORD --docker-email=DOCKER_EMAIL
Utworzono Tajny "myregistrykey".
Następnie dodaj nowo utworzony klucz do konta usługi Kubernetes.
Pobieranie bieżącego konta usługi
kubectl get serviceaccounts default -o yaml > ./sa.yaml
Edit sa.yaml i dodaj ImagePullSecret po sekrety
imagePullSecrets:
- name: myregistrykey
Aktualizacja konta serwisu
kubectl replace serviceaccount default -f ./sa.yaml
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-03 17:22:52
Dla centos7, plik konfiguracyjny Dockera znajduje się w /root/.dockercfg
- echo $(cat / root/.dockercfg) / base64-w 0
-
Skopiuj i wklej wynik do tajnego YAML na podstawie starego formatu:
apiVersion: v1 kind: Secret metadata: name: docker-secret type: kubernetes.io/dockercfg data: .dockercfg: <YOUR_BASE64_JSON_HERE>
I zadziałało dla mnie, mam nadzieję, że to również może pomóc.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-19 05:28:54
Mogę potwierdzić, że imagePullSecrets nie działa z wdrożeniem , ale możesz
kubectl create secret docker-registry myregistrykey --docker-server=DOCKER_REGISTRY_SERVER --docker-username=DOCKER_USER --docker-password=DOCKER_PASSWORD --docker-email=DOCKER_EMAIL
kubectl edit serviceaccounts default
Dodaj
imagePullSecrets:
- name: myregistrykey
Do i po Secrets
, Zapisz i zakończ.
I jego dzieł. Testowane z Kubernetes 1.6.7
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-14 09:01:23