Kubernetes #4. Kubernetes 클러스터 구축 – image pull (offline, 폐쇄망)

[Kubernetes #1. 사전작업 (offline, 폐쇄망)]
[Kubernetes #2-2. 사전작업 – 컨테이너 런타임 (offline, 폐쇄망)]
[Kubernetes #2-2. 사전작업 – docker 설정 (offline, 폐쇄망)]
[Kubernetes #3. Kubernetes 바이너리 설치 (offline, 폐쇄망)]
[Kubernetes #4. Kubernetes 클러스터 구축 – image pull (offline, 폐쇄망)]
[Kubernetes #4-2. Kubernetes 클러스터 구축 – 단일 마스터노드 생성 (offline, 폐쇄망)]
[Kubernetes #4-3. Kubernetes 클러스터 구축 – worker node join (offline, 폐쇄망)]

이전 포스트에서 설치한 kubeadm을 위해 클러스터를 생성할 때 필요한 몇 가지 이미지가 존재한다. 폐쇄망 환경에서는 해당 이미지를 가져올 수 없기 때문에 외부 네트워크 연결이 가능한 환경에서 이미지를 가져온(pull) 다음 클러스터를 생성할 곳에 넣어주는(push) 과정이 필요하다.

Image pull

  • image pull 외부 네트워크 연결이 가능한 환경에서 수행한다.
kubeadm config images pull
[config/images] Pulled k8s.gcr.io/kube-apiserver:v1.23.5
[config/images] Pulled k8s.gcr.io/kube-controller-manager:v1.23.5
[config/images] Pulled k8s.gcr.io/kube-scheduler:v1.23.5
[config/images] Pulled k8s.gcr.io/kube-proxy:v1.23.5
[config/images] Pulled k8s.gcr.io/pause:3.6
[config/images] Pulled k8s.gcr.io/etcd:3.5.1-0
[config/images] Pulled k8s.gcr.io/coredns/coredns:v1.8.6
  • 이미지 저장 위의 7개 이미지를 export하여 압축파일로 저장한다. (별도의 결과 메시지는 출력되지 않는다)
docker image save k8s.gcr.io/kube-apiserver:v1.23.5             > kube-apiserver.tgz
docker image save k8s.gcr.io/kube-controller-manager:v1.23.5    > kube-controller-manager.tgz
docker image save k8s.gcr.io/kube-scheduler:v1.23.5             > kube-scheduler.tgz         
docker image save k8s.gcr.io/kube-proxy:v1.23.5                 > kube-proxy.tgz                 
docker image save k8s.gcr.io/pause:3.6                          > pause.tgz                     
docker image save k8s.gcr.io/etcd:3.5.1-0                       > etcd.tgz
docker image save k8s.gcr.io/coredns/coredns:v1.8.6             > coredns.tgz 

이미지 추출이 완료되면 대상 SCP 명령 등을 이용하여 해당 파일들을 복사한다.

Image push

  • 대상 서버는 인터넷에 연결이 불가능하므로 복사한 image를 push 해줘야 한다.
docker load    <    kube-apiserve
docker load    <    kube-controll
docker load    <    kube-schedule
docker load    <    kube-proxy.tg
docker load    <    pause.tgz    
docker load    <    etcd.tgz     
docker load    <    coredns.tgz  
  Loaded image: k8s.gcr.io/kube-apiserver:v1.23.5  
  Loaded image: k8s.gcr.io/kube-controller-manager:
  Loaded image: k8s.gcr.io/kube-scheduler:v1.23.5  
  Loaded image: k8s.gcr.io/kube-proxy:v1.23.5      
  Loaded image: k8s.gcr.io/pause:3.6               
  Loaded image: k8s.gcr.io/etcd:3.5.1-0            
  Loaded image: k8s.gcr.io/coredns/coredns:v1.8.6
  • 확인
 docker images |grep k8s.gcr.io
k8s.gcr.io/kube-apiserver                                        v1.23.5            3fc1d62d6587   2 weeks ago    135MB
k8s.gcr.io/kube-proxy                                            v1.23.5            3c53fa8541f9   2 weeks ago    112MB
k8s.gcr.io/kube-controller-manager                               v1.23.5            b0c9e5e4dbb1   2 weeks ago    125MB
k8s.gcr.io/kube-scheduler                                        v1.23.5            884d49d6d8c9   2 weeks ago    53.5MB
k8s.gcr.io/etcd                                                  3.5.1-0            25f8c7f3da61   5 months ago   293MB
k8s.gcr.io/coredns/coredns                                       v1.8.6             a4ca41631cc7   6 months ago   46.8MB
k8s.gcr.io/pause                                                 3.6                6270bb605e12   7 months ago   683kB

 

모든 클러스터 적용

Master node 및 Worker node로 설정 될 모든서버에서 위 작업을 수행해준다.