공부/Kubernetes

k8s dockerhub imagePullSecrets 만들기 및 적용

토고미 2022. 2. 8. 14:12

아래와 같은 에러로 dockerhub에서 이미지를 받아오는데 실패하는 때가 있다.

toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limit

dockerhub는 IP기반으로(정확하진 않음) pull limit을 제한 한다.

 

정책은 아래와 같다.

출처: https://www.docker.com/pricing

로그인하지 않거나 따로 결제를 하지 않은 계정은 6시간에 200회 제한이 있다.

 

어쨌든 지불한 계정이 있다고 가정하고, 로그인을 해보자.

 

단순하게 docker 자체만 이용하는거면 docker login 명령어를 통해서 하면 되지만,

k8s의 CRI로서 사용하는 docker에서 docker login은 조금 다르다.

 

secret으로 dockerhub 계정을 만들고 이를 imagePullSecrets에 명시해줘야 한다.

 

secret은 아래 명령문으로 만든다.

kubectl create secret docker-registry docker-pull-secret \
--docker-server=https://index.docker.io/v1/ \
--docker-username=myid \
--docker-password=mypassword \
--docker-email=myemail@example.com

 

docker-server : https://index.docker.io/v1/

docker-username : 아이디

docker-password : 비밀번호

docker-email : 이메일

 

그리고 이 계정을 쓸 pod(혹은 deployment, statefulset 등등..) spec.imagePullSecrets에 넣어주면 된다.

apiVersion: v1
kind: Pod
metadata:
  name: whatever
spec:
  containers:
    - name: whatever
      image: DOCKER_USER/PRIVATE_REPO_NAME:latest
      imagePullPolicy: Always
      command: [ "echo", "SUCCESS" ]
  imagePullSecrets:
    - name: myregistrykey # 여기에 만든 secret 이름을 넣는다

 

secret이 만들어진 네임스페이스와 secret을 사용할 pod가 같은 네임스페이스에 있어야함을 주의하자.

'공부 > Kubernetes' 카테고리의 다른 글

Kubernetes Local PV  (0) 2022.03.07
ingress nginx controller port(tcp) based routing  (0) 2022.02.24
ubuntu에 특정 k8s, crio 버전 설치하기  (0) 2022.01.03
k8s QoS Class  (0) 2022.01.03
secret 생성 시 주의사항  (0) 2021.11.17