Kubernetes 部署metrics服务器时,结果显示ImagePullBackOff
当我计划在k8s集群上部署metrics服务器时,出现了一个问题。 我使用此命令应用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
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注册表密钥。这是你如何做到的