Ich benutze private Docker registry addon in meinem kubernetes-Cluster, und ich möchte Port 5000 auf jedem Knoten offen legen, um Bild von localhost: 5000 leicht zu ziehen. Also legte ich eine Pod-Manifest-Datei /etc/kubernetes/manifests/kube-registry-proxy.manifest
auf jedem Knoten, um einen lokalen Proxy für Port 5000 zu starten. Es funktioniert, wenn ich Kubernetes auf Bare-Metal Ubuntu vor einigen Monaten manuell bereitgestellt, aber gescheitert, wenn ich Kargo versuchen, der Port 5000 nicht zu hören.kube-registry-proxy stellt Port 5000 auf keinem Knoten frei
Ich verwende kargo mit Kattun Netzwerk-Plugin, die Docker Registrierung der Konfigurationen sind:
kind: PersistentVolume
apiVersion: v1
metadata:
name: kube-system-kube-registry-pv
labels:
kubernetes.io/cluster-service: "true"
spec:
capacity:
storage: 500Gi
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
hostPath:
path: /registry
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: kube-registry-pvc
namespace: kube-system
labels:
kubernetes.io/cluster-service: "true"
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 500Gi
apiVersion: v1
kind: ReplicationController
metadata:
name: kube-registry-v0
namespace: kube-system
labels:
k8s-app: kube-registry
version: v0
kubernetes.io/cluster-service: "true"
spec:
replicas: 1
selector:
k8s-app: kube-registry
version: v0
template:
metadata:
labels:
k8s-app: kube-registry
version: v0
kubernetes.io/cluster-service: "true"
spec:
containers:
- name: registry
image: registry:2.5.1
resources:
# keep request = limit to keep this container in guaranteed class
limits:
cpu: 100m
memory: 100Mi
requests:
cpu: 100m
memory: 100Mi
env:
- name: REGISTRY_HTTP_ADDR
value: :5000
- name: REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY
value: /var/lib/registry
volumeMounts:
- name: image-store
mountPath: /var/lib/registry
ports:
- containerPort: 5000
name: registry
protocol: TCP
volumes:
- name: image-store
persistentVolumeClaim:
claimName: kube-registry-pvc
apiVersion: v1
kind: Service
metadata:
name: kube-registry
namespace: kube-system
labels:
k8s-app: kube-registry
kubernetes.io/cluster-service: "true"
kubernetes.io/name: "KubeRegistry"
spec:
selector:
k8s-app: kube-registry
ports:
- name: registry
port: 5000
protocol: TCP
Ich habe eine pod Manifest-Datei /etc/kubernetes/manifests/kube-registry-proxy.manifest
vor Lauf kargo erstellt:
apiVersion: v1
kind: Pod
metadata:
name: kube-registry-proxy
namespace: kube-system
spec:
containers:
- name: kube-registry-proxy
image: gcr.io/google_containers/kube-registry-proxy:0.3
resources:
limits:
cpu: 100m
memory: 50Mi
env:
- name: REGISTRY_HOST
value: kube-registry.kube-system.svc.cluster.local
- name: REGISTRY_PORT
value: "5000"
- name: FORWARD_PORT
value: "5000"
ports:
- name: registry
containerPort: 5000
hostPort: 5000
kube-Registry- Proxy läuft auf allen Knoten, aber nichts hört auf Port 5000. Einige Ausgabe:
[email protected]:~$ kubectl get all --all-namespaces | grep registry-proxy
kube-system po/kube-registry-proxy-k8s15m1 1/1 Running 1 1h
kube-system po/kube-registry-proxy-k8s15m2 1/1 Running 0 1h
kube-system po/kube-registry-proxy-k8s15s1 1/1 Running 0 1h
[email protected]:~$ docker ps | grep registry
756fcf674288 gcr.io/google_containers/kube-registry-proxy:0.3 "/usr/bin/run_proxy" 19 minutes ago Up 19 minutes k8s_kube-registry-proxy.bebf6da1_kube-registry-proxy-k8s15m1_kube-system_a818b22dc7210ecd31414e328ae28e43_7221833c
[email protected]:~$ docker logs 756fcf674288 | tail
waiting for kube-registry.kube-system.svc.cluster.local to come online
starting proxy
[email protected]:~$ netstat -ltnp | grep 5000
[email protected]:~$ curl -v localhost:5000/v1/
* Trying 127.0.0.1...
* connect to 127.0.0.1 port 5000 failed: Connection refused
* Failed to connect to localhost port 5000: Connection refused
* Closing connection 0
curl: (7) Failed to connect to localhost port 5000: Connection refused
[email protected]:~$ kubectl get po kube-registry-proxy-k8s15m1 --namespace=kube-system -o wide
NAME READY STATUS RESTARTS AGE IP NODE
kube-registry-proxy-k8s15m1 1/1 Running 3 1h 10.233.69.64 k8s15m1
[email protected]:~$ curl -v 10.233.69.64:5000/v1/
* Trying 10.233.69.64...
* Connected to 10.233.69.64 (10.233.69.64) port 5000 (#0)
> GET /v1/ HTTP/1.1
> Host: 10.233.69.64:5000
> User-Agent: curl/7.47.0
> Accept: */*
>
< HTTP/1.1 404 Not Found
< Content-Type: text/plain; charset=utf-8
< Docker-Distribution-Api-Version: registry/2.0
< X-Content-Type-Options: nosniff
< Date: Tue, 14 Mar 2017 16:41:56 GMT
< Content-Length: 19
<
404 page not found
* Connection #0 to host 10.233.69.64 left intact
danke!Ich benutze [private Docker Registrierungs-Addon] (https://github.com/kubernetes/kubernetes/blob/7ef585be224dae4ec5deae0f135653116e21a6e0/cluster/addons/registry/README.md#expose-the-registry-on-each-node) in mein Cluster, und ich möchte Port 5000 auf jedem Knoten freilegen, um Bild von localhost: 5000 leicht zu ziehen. Also habe ich eine Pod-Manifest-Datei '/ etc/kubernetes/manifests/kube-registry-proxy.manifest' auf jedem Knoten platziert, um einen lokalen Proxy für Port 5000 zu starten. Er funktioniert, wenn ich vor ein paar Monaten kubernetes auf bare metal ubuntu manuell implementiert habe, aber gescheitert, wenn ich Kargo versuche. Irgendeine Ahnung? –
Sie können [diese Frage] abonnieren (https://stackoverflow.com/questions/37533684/kubernetes-private-docker-registry-registry-proxy-doesnt-work) und [diese andere Frage] (https://stackoverflow.com/questions/36148216/kubernete-private-registry-doesnt-work) weil sie fast genau deine Frage sind. Das heißt, es scheint, CNI-Netzwerke haben keinen Zugriff auf das "Host" -Netzwerk, absichtlich; Siehe dieses [kubernetes GitHub-Problem] (https://github.com/kubernetes/kubernetes/issues/23920#issuecomment-217048099) für die blutigen Details –