कुबेरनेट्स के साथ डॉकर रजिस्ट्री बनाने के लिए मैं इस उदाहरण का अनुसरण कर रहा हूं: https://robertbrem.github.io/Microservices_with_Kubernetes/03_Docker_registry/01_Setup_registry/

मैं मिनिक्यूब का उपयोग कर रहा हूं, इस तरह से शुरू किया गया

 minikube start --vm-driver=none

और यह काम करता है, मैं इसे minikubeNode:30500 से एक्सेस कर सकता हूं।

अब मैं उस कंप्यूटर को पुनरारंभ करता हूं जहां minikube स्थापित है, और मैं अब और docker registry तक नहीं पहुंच सकता, भले ही POD चल रहा हो, और सेवा परिभाषा पहले की तरह ही है।

मेरी सेवा:

apiVersion: v1
kind: Service
metadata:
  name: registro
  labels:
    name: registro
spec:
  ports:
  - port: 5001
    targetPort: 5000
    nodePort: 30500
  selector:
    apl: registro
  type: NodePort

मेरा परिनियोजन:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: registro
spec:
  replicas: 1
  selector:
    matchLabels:
      apl: registro
  template:
    metadata:
      labels:
        apl: registro
    spec:
      containers:
      - resources:
        name: registry
        image: registry:2
        ports:
        - name: registry-port
          containerPort: 5000
        volumeMounts:
        - mountPath: /var/lib/registry
          name: img
        - mountPath: /certs
          name: certs
        - mountPath: /auth
          name: auth
        env:
        - name: REGISTRY_AUTH
          value: "htpasswd"
        - name: REGISTRY_AUTH_HTPASSWD_REALM
          value: "Registry Realm"
        - name: REGISTRY_AUTH_HTPASSWD_PATH
          value: /auth/htpasswd
        - name: REGISTRY_HTTP_TLS_CERTIFICATE
          value: /certs/fullchain.pem
        - name: REGISTRY_HTTP_TLS_KEY
          value: /certs/privkey.pem
      volumes:
      - name: img
        hostPath:
          path: /home/ema/adm/docker/registro/img
      - name: certs
        hostPath:
          path: /home/ema/adm/docker/registro/certs
      - name: auth
        hostPath:
          path: /home/ema/adm/docker/registro/auth

वर्तमान क्लस्टर आईपी:

# kubectl cluster-info
Kubernetes master is running at https://10.129.3.44:8443
KubeDNS is running at https://10.129.3.44:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

मेरा पीओडी:

# kubectl describe pods
Name:               registro-6b657796b-fx9jf
Namespace:          default
Priority:           0
PriorityClassName:  <none>
Node:               minikube/10.129.3.44
Start Time:         Fri, 18 Jan 2019 10:17:04 +0100
Labels:             apl=registro
                    pod-template-hash=6b657796b
Annotations:        <none>
Status:             Running
IP:                 172.17.0.4
Controlled By:      ReplicaSet/registro-6b657796b
Containers:
  registry:
    Container ID:   docker://1b8ab87d5fd7602ee671abc1a6ebffdbcdc4c6d8892c174f83dea8cd4ee722a9
    Image:          registry:2
    Image ID:       docker-pullable://registry@sha256:1cd9409a311350c3072fe510b52046f104416376c126a479cef9a4dfe692cf57
    Port:           5000/TCP
    Host Port:      0/TCP
    State:          Running
      Started:      Fri, 18 Jan 2019 13:03:25 +0100
    Last State:     Terminated
      Reason:       Error
      Exit Code:    137
      Started:      Fri, 18 Jan 2019 10:17:06 +0100
      Finished:     Fri, 18 Jan 2019 13:02:55 +0100
    Ready:          True
    Restart Count:  1
    Environment:
      REGISTRY_AUTH:                  htpasswd
      REGISTRY_AUTH_HTPASSWD_REALM:   Registry Realm
      REGISTRY_AUTH_HTPASSWD_PATH:    /auth/htpasswd
      REGISTRY_HTTP_TLS_CERTIFICATE:  /certs/fullchain.pem
      REGISTRY_HTTP_TLS_KEY:          /certs/privkey.pem
    Mounts:
      /auth from auth (rw)
      /certs from certs (rw)
      /var/lib/registry from img (rw)
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-9b46l (ro)
Conditions:
  Type              Status
  Initialized       True 
  Ready             True 
  ContainersReady   True 
  PodScheduled      True 
Volumes:
  img:
    Type:          HostPath (bare host directory volume)
    Path:          /home/ema/adm/docker/registro/img
    HostPathType:  
  certs:
    Type:          HostPath (bare host directory volume)
    Path:          /home/ema/adm/docker/registro/certs
    HostPathType:  
  auth:
    Type:          HostPath (bare host directory volume)
    Path:          /home/ema/adm/docker/registro/auth
    HostPathType:  
  default-token-9b46l:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-9b46l
    Optional:    false
...

मेरी सेवा:

# kubectl describe service registro
Name:                     registro
Namespace:                default
Labels:                   name=registro
Annotations:              <none>
Selector:                 apl=registro
Type:                     NodePort
IP:                       10.101.157.80
Port:                     <unset>  5001/TCP
TargetPort:               5000/TCP
NodePort:                 <unset>  30500/TCP
Endpoints:                172.17.0.4:5000
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>

पॉड आईपी काम कर रहा है:

# कर्ल 172.17.0.04:5000

क्लस्टर आईपी शिकायत नहीं करता लेकिन अटका रहता है:

# कर्ल 10.101.157.80:5001

नोड पोर्ट आईपी काम नहीं करता:

# कर्ल 10.129.3.44:30500 कर्ल: (7) 10.129.3.44:30500 . से कनेक्ट करने में विफल

मैं अपनी सेवा को नोड से एक्सेस क्यों नहीं कर सकता?

क्या हो रहा है इसका निदान कैसे करें?

अपडेट 1

minikube को इस तरह से शुरू करते समय:

minikube start --vm-driver none

मुझे निम्नलिखित चेतावनियां मिलती हैं:

[WARNING Hostname]: hostname "minikube" could not be reached
[WARNING Hostname]: hostname "minikube" lookup minikube on 10.126.20.16:53: server misbehaving
[WARNING DirAvailable--data-minikube]: /data/minikube is not empty
....    
Error creating PKI assets: failed to write certificate "apiserver-kubelet-client": certificate apiserver-kubelet-client is not signed by corresponding CA
....    
.: exit status 1

मुझे नहीं पता कि वे अर्थपूर्ण हैं या नहीं, लेकिन मुझे exit status 1 पसंद नहीं है।

0
david.perez 21 जिंदा 2019, 14:30

2 जवाब

सबसे बढ़िया उत्तर

कुछ परीक्षण और त्रुटि के बाद, मेरा समाधान यहां है:

  • मिनीक्यूब 0.33.1 . में अपग्रेड करें
  • Daud:
    • मिनीक्यूब मिटाएं
    • मिनीक्यूब स्टार्ट --vm-driver=none
0
david.perez 24 जिंदा 2019, 13:05

minikube start --vm-driver=none के साथ पोर्ट-फ़ॉरवर्डिंग को ठीक से काम करने के लिए आपको socat इंस्टॉल करना होगा। बस स्क्रिप्ट का अनुसरण करने का प्रयास करें, यह मेरे लिए ठीक काम कर रहा है।

  • Kubectl, socat और docker इंस्टॉल करें।
apt-get update && apt-get install -y apt-transport-https
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb http://apt.kubernetes.io/ kubernetes-xenial main
EOF
apt-get update
apt-get install -y kubectl socat docker.io --allow-unauthenticated
  • नवीनतम मिनीक्यूब डाउनलोड करें
curl -Lo minikube https://storage.googleapis.com/minikube/releases/v0.33.0/minikube-linux-amd64 && chmod +x minikube && sudo cp minikube /usr/local/bin/ && rm minikube
  • मिनिक्यूब क्लस्टर प्रारंभ करें।
minikube config set embed-certs true
minikube start --vm-driver none

आपको minikube start --vm-driver none को केवल रूट यूजर के साथ चलाना है।

3
Dharman 19 फरवरी 2020, 00:11