未创建Kubectl吊舱

时间:2020-07-31 02:14:52

标签: kubernetes google-kubernetes-engine

尝试在GKE的群集中创建Pod。有一个包含一些python代码的docker容器,以及一个可访问sql数据库的sidecar容器。之前该部署工作正常,但是几周后,我尝试使用kubectl apply -f file_name.yaml重新部署。

吊舱暂时处于“待处理”状态,并在15秒后消失。每次都会发生。我无法访问日志。 15秒后,kubectl get pods也不会返回任何内容。 不确定从这里去哪里...任何帮助将不胜感激!

apiVersion: v1
kind: Pod
metadata:
  annotations:
    kubernetes.io/limit-ranger: 'LimitRanger plugin set: cpu request for container
      pyxy-web-v1'
  creationTimestamp: "2020-05-14T00:38:09Z"
  labels:
    run: pyxy-web-v1
  name: pyxy-web-v1
  namespace: default
  resourceVersion: "1215073"
  selfLink: /api/v1/namespaces/default/pods/pyxy-web-v1
  uid: *omitted
spec:
  containers:
  - image: gcr.io/my-project-{*omitted}/pyxy-web:latest
    imagePullPolicy: Always
    name: pyxy-web-v1
    ports:
    - containerPort: 8080
      protocol: TCP
    env:
    - name: DB_USER
      valueFrom:
        secretKeyRef:
          name: cloudsql-db-credentials
          key: *omitted
    - name: DB_PASS
      valueFrom:
        secretKeyRef:
          name: cloudsql-db-credentials
          key: *omitted
    resources:
      requests:
        cpu: 100m
    terminationMessagePath: /dev/termination-log
    terminationMessagePolicy: File
    volumeMounts:
    - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
      name: default-token-94bct
      readOnly: true

  - name: cloudsql-proxy
    image: gcr.io/cloudsql-docker/gce-proxy:1.16
    command: ["/cloud_sql_proxy",
              "-instances=my-project-{*omitted}:us-central1:routing-app-v1=tcp:3306",
              # If running on a VPC, the Cloud SQL proxy can connect via Private IP. See:
              # https://cloud.google.com/sql/docs/mysql/private-ip for more info.
              # "-ip_address_types=PRIVATE",
              "-credential_file=/secrets/cloudsql/credentials.json"]
    # [START cloudsql_security_context]
    securityContext:
      runAsUser: 2  # non-root user
      allowPrivilegeEscalation: false
    volumeMounts:
    - name: cloudsql-instance-credentials
      mountPath: /secrets/cloudsql
      readOnly: true

  dnsPolicy: ClusterFirst
  enableServiceLinks: true
  nodeName: gke-pyxy-cluster-default-pool-{*omitted}
  priority: 0
  restartPolicy: Always
  schedulerName: default-scheduler
  securityContext: {}
  serviceAccount: default
  serviceAccountName: default
  terminationGracePeriodSeconds: 180
  tolerations:
  - effect: NoExecute
    key: node.kubernetes.io/not-ready
    operator: Exists
    tolerationSeconds: 300
  - effect: NoExecute
    key: node.kubernetes.io/unreachable
    operator: Exists
    tolerationSeconds: 300
  volumes:
  - name: default-token-94bct
    secret:
      defaultMode: 420
      secretName: default-token-94bct
  - name: cloudsql-instance-credentials
    secret:
      secretName: cloudsql-instance-credentials

在15秒的待审核期间,kubectl描述吊舱返回了以下内容。

Name:         pyxy-web-v1
Namespace:    default
Priority:     0
Node:         gke-pyxy-cluster-default-pool-{*omitted}/
Labels:       run=pyxy-web-v1
Annotations:  kubernetes.io/limit-ranger: LimitRanger plugin set: cpu request for container cloudsql-proxy
Status:       Pending
IP:           
IPs:          <none>
Containers:
  pyxy-web-v1:
    Image:      gcr.io/my-project-{*omitted}/pyxy-web:latest
    Port:       8080/TCP
    Host Port:  0/TCP
    Requests:
      cpu:  100m
    Environment:
      DB_USER:  <set to the key '*omitted' in secret 'cloudsql-db-credentials'>  Optional: false
      DB_PASS:  <set to the key '*omitted' in secret 'cloudsql-db-credentials'>  Optional: false
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-94bct (ro)
  cloudsql-proxy:
    Image:      gcr.io/cloudsql-docker/gce-proxy:1.16
    Port:       <none>
    Host Port:  <none>
    Command:
      /cloud_sql_proxy
      -instances=my-project-{*omitted}:us-central1:routing-app-v1=tcp:3306
      -credential_file=/secrets/cloudsql/credentials.json
    Requests:
      cpu:        100m
    Environment:  <none>
    Mounts:
      /secrets/cloudsql from cloudsql-instance-credentials (ro)
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-94bct (ro)
Volumes:
  default-token-94bct:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-94bct
    Optional:    false
  cloudsql-instance-credentials:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  cloudsql-instance-credentials
    Optional:    false
QoS Class:       Burstable
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300s
                 node.kubernetes.io/unreachable:NoExecute for 300s
Events:          <none>

但是在这段时间之后,它将返回 “在默认名称空间中找不到资源。”

1 个答案:

答案 0 :(得分:1)

答案

Pod规范的节点名称已不再存在于集群中(由于升级)。也就是说pod.spec.nodeName是错误的。

来自kubectl explain pod.spec

   nodeName <string>
     NodeName is a request to schedule this pod onto a specific node. If it is
     non-empty, the scheduler simply schedules this pod onto that node, assuming
     that it fits resource requirements.

在大约15秒的窗口中,Pod处于待处理状态,以下错误日志指出了解决方法:

Error from server (NotFound): pods "gke-pyxy-cluster-default-pool-94aa0302-pm35" not found