簡體   English   中英

使用 docker 鏡像設置 kubernetes 進行本地測試的問題

[英]Issues with setting up kubernetes for local testing using docker image

我創建了我的應用程序的 docker 映像,該映像運行在 8080 上公開的內部服務器。然后我嘗試使用以下命令集創建本地 kubernetes 集群進行測試。

$ kubectl create deployment --image=test-image test-app
$ kubectl set env deployment/test-app DOMAIN=cluster
$ kubectl expose deployment test-app --port=8080 --name=test-service

我在 Windows 上使用 Docker-desktop 來運行運行 kubernetes。 這會將我的集群暴露給外部 IP localhost但我無法訪問我的應用程序。 我檢查了 Pod 的狀態並注意到了這個問題:

$ kubectl get pods
 NAME         READY   STATUS             RESTARTS   AGE
test-66-ps2   0/1     ImagePullBackOff   0          8h
test-6f-6jh   0/1     InvalidImageName   0          7h42m

我可以知道是什么導致了這個問題嗎? 我怎樣才能讓它在本地工作? 謝謝,期待建議!

我的 YAML 文件供參考:

apiVersion: apps/v1
kind: Deployment
metadata:
  annotations:
    deployment.kubernetes.io/revision: "4"
  creationTimestamp: "2021-10-13T18:00:15Z"
  generation: 4
  labels:
    app: test-app
  name: test-app
  namespace: default
  resourceVersion: "*****"
  uid: ************
spec:
  progressDeadlineSeconds: 600
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: test-app
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: test-app
    spec:
      containers:
      - env:
        - name: DOMAIN
          value: cluster
        image: C:\Users\test-image
        imagePullPolicy: Always
        name: e20f23453f27
        ports:
        - containerPort: 8080
          protocol: TCP
        resources: {}
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30
status:
  conditions:
  - lastTransitionTime: "2021-10-13T18:00:15Z"
    lastUpdateTime: "2021-10-13T18:00:15Z"
    message: Deployment does not have minimum availability.
    reason: MinimumReplicasUnavailable
    status: "False"
    type: Available
  - lastTransitionTime: "2021-10-13T18:39:51Z"
    lastUpdateTime: "2021-10-13T18:39:51Z"
    message: ReplicaSet "test-66" has timed out progressing.
    reason: ProgressDeadlineExceeded
    status: "False"
    type: Progressing
  observedGeneration: 4
  replicas: 2
  unavailableReplicas: 2
  updatedReplicas: 1
---
apiVersion: v1
kind: Service
metadata:
  creationTimestamp: "2021-10-13T18:01:49Z"
  labels:
    app: test-app
  name: test-service
  namespace: default
  resourceVersion: "*****"
  uid: *****************
spec:
  clusterIP: 10.161.100.100
  clusterIPs:
  - 10.161.100.100
  externalTrafficPolicy: Cluster
  ipFamilies:
  - IPv4
  ipFamilyPolicy: SingleStack
  ports:
  - nodePort: 41945
    port: 80
    protocol: TCP
    targetPort: 8080
  selector:
    app: test-app
  sessionAffinity: None
  type: LoadBalancer
status:
  loadBalancer:
    ingress:
    - hostname: localhost

您面臨ImagePullBackOffInvalidImageName問題的原因是您的應用程序映像不存在於您通過 docker 部署的 kubernetes 集群中,而是存在於您的本地機器上!

要解決此問題以進行測試,您可以做的是掛載項目工作區並在 kubernetes 集群上創建映像,然后在 k8s 集群上使用 docker 構建映像或將映像上傳到 docker hub,然后將部署設置為選擇圖片來自 docker hub!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM