Kubernetes 部署metrics服务器时,结果显示ImagePullBackOff

Kubernetes 部署metrics服务器时,结果显示ImagePullBackOff,kubernetes,Kubernetes,当我计划在k8s集群上部署metrics服务器时,出现了一个问题。 我使用此命令应用kubectl apply-fhttps://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml 然后我kubectl得到pod-A,结果如下: NAMESPACE NAME READY STATUS

当我计划在k8s集群上部署metrics服务器时,出现了一个问题。 我使用此命令应用
kubectl apply-fhttps://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
然后我
kubectl得到pod-A
,结果如下:

NAMESPACE     NAME                                 READY   STATUS             RESTARTS   AGE
default       nginx-deployment-66d55c84b9-6vcxb    1/1     Running            0          8h
default       nginx-deployment-66d55c84b9-b5jfh    1/1     Running            0          8h
default       nginx-deployment-66d55c84b9-gwlnp    1/1     Running            0          8h
kube-system   coredns-7f89b7bc75-jppjj             1/1     Running            556        38d
kube-system   coredns-7f89b7bc75-qrtxq             1/1     Running            560        38d
kube-system   etcd-k8s-master                      1/1     Running            6          38d
kube-system   kube-apiserver-k8s-master            1/1     Running            10         38d
kube-system   kube-controller-manager-k8s-master   1/1     Running            1          2d22h
kube-system   kube-flannel-ds-4cwgp                1/1     Running            1          8h
kube-system   kube-flannel-ds-dxnjt                1/1     Running            1          8h
kube-system   kube-flannel-ds-wtqcc                1/1     Running            1          8h
kube-system   kube-proxy-4gq2k                     1/1     Running            2          38d
kube-system   kube-proxy-k658x                     1/1     Running            2          38d
kube-system   kube-proxy-mhzjk                     1/1     Running            6          38d
kube-system   kube-scheduler-k8s-master            1/1     Running            1          2d22h
kube-system   metrics-server-76f8d9fc69-t7mdr      0/1     ImagePullBackOff   0          22m

然后我描述这个豆荚

Events:
  Type     Reason     Age                   From               Message
  ----     ------     ----                  ----               -------
  Normal   Scheduled  3m55s                 default-scheduler  Successfully assigned kube-system/metrics-server-76f8d9fc69-t7mdr to k8s-node1
  Normal   Pulling    108s (x4 over 3m55s)  kubelet            Pulling image "k8s.gcr.io/metrics-server/metrics-server:v0.4.2"
  Warning  Failed     93s (x4 over 3m40s)   kubelet            Failed to pull image "k8s.gcr.io/metrics-server/metrics-server:v0.4.2": rpc error: code = Unknown desc = Error response from daemon: Get https://k8s.gcr.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
  Warning  Failed     93s (x4 over 3m40s)   kubelet            Error: ErrImagePull
  Normal   BackOff    66s (x6 over 3m39s)   kubelet            Back-off pulling image "k8s.gcr.io/metrics-server/metrics-server:v0.4.2"
  Warning  Failed     55s (x7 over 3m39s)   kubelet            Error: ImagePullBackOff
我认为这可能是由网络引起的,所以我手动拉取图像并将其像请求一样标记为components.yaml,并将imagePullPolicy修改为
IfNotPresent
,我删除了之前的部署,并再次
kubectl apply-f components.yaml
,但这个问题再次出现!最新的components.yaml如下所示

apiVersion: v1
kind: ServiceAccount
metadata:
  labels:
    k8s-app: metrics-server
  name: metrics-server
  namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  labels:
    k8s-app: metrics-server
    rbac.authorization.k8s.io/aggregate-to-admin: "true"
    rbac.authorization.k8s.io/aggregate-to-edit: "true"
    rbac.authorization.k8s.io/aggregate-to-view: "true"
  name: system:aggregated-metrics-reader
rules:
- apiGroups:
  - metrics.k8s.io
  resources:
  - pods
  - nodes
  verbs:
  - get
  - list
  - watch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  labels:
    k8s-app: metrics-server
  name: system:metrics-server
rules:
- apiGroups:
  - ""
  resources:
  - pods
  - nodes
  - nodes/stats
  - namespaces
  - configmaps
  verbs:
  - get
  - list
  - watch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  labels:
    k8s-app: metrics-server
  name: metrics-server-auth-reader
  namespace: kube-system
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: extension-apiserver-authentication-reader
subjects:
- kind: ServiceAccount
  name: metrics-server
  namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  labels:
    k8s-app: metrics-server
  name: metrics-server:system:auth-delegator
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: system:auth-delegator
subjects:
- kind: ServiceAccount
  name: metrics-server
  namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  labels:
    k8s-app: metrics-server
  name: system:metrics-server
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: system:metrics-server
subjects:
- kind: ServiceAccount
  name: metrics-server
  namespace: kube-system
---
apiVersion: v1
kind: Service
metadata:
  labels:
    k8s-app: metrics-server
  name: metrics-server
  namespace: kube-system
spec:
  ports:
  - name: https
    port: 443
    protocol: TCP
    targetPort: https
  selector:
    k8s-app: metrics-server
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    k8s-app: metrics-server
  name: metrics-server
  namespace: kube-system
spec:
  selector:
    matchLabels:
      k8s-app: metrics-server
  strategy:
    rollingUpdate:
      maxUnavailable: 0
  template:
    metadata:
      labels:
        k8s-app: metrics-server
    spec:
      containers:
      - args:
        - --cert-dir=/tmp
        - --secure-port=4443
        - --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
        - --kubelet-use-node-status-port
        - --kubelet-insecure-tls
        image: registry.cn-shenzhen.aliyuncs.com/carp/metrics-server-amd64:v0.4.2
        imagePullPolicy: IfNotPresent
        livenessProbe:
          failureThreshold: 3
          httpGet:
            path: /livez
            port: https
            scheme: HTTPS
          periodSeconds: 10
        name: metrics-server
        ports:
        - containerPort: 4443
          name: https
          protocol: TCP
        readinessProbe:
          failureThreshold: 3
          httpGet:
            path: /readyz
            port: https
            scheme: HTTPS
          periodSeconds: 10
        securityContext:
          readOnlyRootFilesystem: true
          runAsNonRoot: true
          runAsUser: 1000
        volumeMounts:
        - mountPath: /tmp
          name: tmp-dir
      nodeSelector:
        kubernetes.io/os: linux
      priorityClassName: system-cluster-critical
      serviceAccountName: metrics-server
      volumes:
      - emptyDir: {}
        name: tmp-dir
---
apiVersion: apiregistration.k8s.io/v1
kind: APIService
metadata:
  labels:
    k8s-app: metrics-server
  name: v1beta1.metrics.k8s.io
spec:
  group: metrics.k8s.io
  groupPriorityMinimum: 100
  insecureSkipTLSVerify: true
  service:
    name: metrics-server
    namespace: kube-system
  version: v1beta1
  versionPriority: 100


我该怎么办?

部署中的
映像来自某个不是k8s.gcr的注册表

registry.cn深圳.aliyuncs.com/carp/metrics-server-amd64:v0.4.2

如果计划从私人回购中提取,则需要在部署中创建
imagePullSecret
,并创建docker注册表密钥。这是你如何做到的