默认容器“container-1”来自:container-1、container-2

Pra*_*een 4 volumes kubernetes minikube

在 K8s 中我正在练习示例6.1。具有两个共享相同卷的容器的 Pod:来自《kubernetes in Action》一书的Fortune-pod.yaml 。在卷概念中,我的 Pod 包含 2 个容器,其中一个容器未运行,请指导我哪里做错了。成功运行 Pod。在检查容器的日志时,我收到以下错误:

Defaulted container "fortune-cont" out of: fortune-cont, web-server 
Run Code Online (Sandbox Code Playgroud)

但在 pod 描述事件中,它看起来像这样。

Events:
  Type     Reason     Age                  From               Message
  ----     ------     ----                 ----               -------
  Normal   Scheduled  40m                  default-scheduler  Successfully assigned book/vol-1-fd556f5dc-8ggj6 to minikube
  Normal   Pulled     40m                  kubelet            Container image "nginx:alpine" already present on machine
  Normal   Created    40m                  kubelet            Created container web-server
  Normal   Started    40m                  kubelet            Started container web-server
  Normal   Created    39m (x4 over 40m)    kubelet            Created container fortune-cont
  Normal   Started    39m (x4 over 40m)    kubelet            Started container fortune-cont
  Normal   Pulled     38m (x5 over 40m)    kubelet            Container image "xxxx/fortune:v1" already present on machine
  Warning  BackOff    25s (x188 over 40m)  kubelet            Back-off restarting failed container
Run Code Online (Sandbox Code Playgroud)

这是我的部署文件

apiVersion: apps/v1
kind: Deployment
metadata:
  name: vol-1
  namespace: book
spec:
  replicas: 1
  selector:
    matchLabels:
      name: fortune-vol-1
      type: volume
  template:
    metadata:
      labels:
        name: fortune-vol-1
        type: volume
    spec:
      containers:
      - image: ****/fortune:v1
        name: fortune-cont
        volumeMounts:
        - name: html 
          mountPath: /var/htdocs
      - image: nginx:alpine
        name: web-server
        volumeMounts:
        - name: html
          mountPath: /usr/share/nginx/html
          readOnly: true
        ports:
        - containerPort: 80
          protocol: TCP
      volumes:
        - name: html
          emptyDir: {}
Run Code Online (Sandbox Code Playgroud)

这是我对容器的 pod 描述。

Containers:
  fortune-cont:
    Container ID:   docker://3959e47a761b670ee826b2824efed09d8f5d6dfd6451c4c9840eebff018a3586
    Image:          prav33n/fortune:v1
    Image ID:       docker-pullable://prav33n/fortune@sha256:671257f6387a1ef81a293f8aef27ad7217e4281e30b777a7124b1f6017a330f8
    Port:           <none>
    Host Port:      <none>
    State:          Waiting
      Reason:       CrashLoopBackOff
    Last State:     Terminated
      Reason:       Completed
      Exit Code:    0
      Started:      Thu, 24 Nov 2022 02:05:26 +0530
      Finished:     Thu, 24 Nov 2022 02:05:26 +0530
    Ready:          False
    Restart Count:  17
    Environment:    <none>
    Mounts:
      /var/htdocs from html (rw)
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-spdq4 (ro)
  web-server:
    Container ID:   docker://37d831a2f7e97abadb548a21ecb20b5c784b5b3d6102cf8f939f2c13cdfd08c0
    Image:          nginx:alpine
    Image ID:       docker-pullable://nginx@sha256:455c39afebd4d98ef26dd70284aa86e6810b0485af5f4f222b19b89758cabf1e
    Port:           80/TCP
    Host Port:      0/TCP
    State:          Running
      Started:      Thu, 24 Nov 2022 01:02:55 +0530
    Ready:          True
    Restart Count:  0
    Environment:    <none>
    Mounts:
      /usr/share/nginx/html from html (ro)
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-spdq4 (ro)
Conditions:
  Type              Status
  Initialized       True 
  Ready             False 
  ContainersReady   False 
  PodScheduled      True 
Volumes:
  html:
    Type:       EmptyDir (a temporary directory that shares a pod's lifetime)
    Medium:     
    SizeLimit:  <unset>
  kube-api-access-spdq4:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  3607
    ConfigMapName:           kube-root-ca.crt
    ConfigMapOptional:       <nil>
    DownwardAPI:             true
QoS Class:                   BestEffort
Node-Selectors:              <none>
Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                             node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
  Type     Reason   Age                    From     Message
  ----     ------   ----                   ----     -------
  Warning  BackOff  4m20s (x281 over 64m)  kubelet  Back-off restarting failed container
Run Code Online (Sandbox Code Playgroud)

lar*_*sks 11

您的Podvol-1两个容器

  • 一位名叫fortune-cont
  • 一位名叫web-server

如果您运行kubectl logs vol-1,Kubernetes 不知道您正在询问哪个容器,因此它必须选择一个,并告诉您:

默认容器“fortune-cont”来自:fortune-cont、web-server

您可以使用以下选项显式选择容器-c

kubectl logs vol-1 -c web-server
Run Code Online (Sandbox Code Playgroud)