[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, 폐쇄망)]
망분리 환경에서 proxy등을 통한 외부 연결이 가능하거나, 망 내부적으로 proxy를 통해 통신하는 경우 proxy 설정이 필요하다.
linux OS 레벨에서는 .bash_profile 등에 proxy 변수를 등록하는 것으로 처리가 가능하지만 docker 런타임은 별도로 proxy 정보를 정의해 줘야 한다
이 포스트의 작업은 쿠버네티스 클러스터에 포함하는 모든 노드에서 수행해야 한다.
Docker Proxy 설정
서비스 설정 (docker login 등의 작업 에 사용된다.)
[haedong@haedong:~:]$ sudo /lib/systemd/system/docker.service 전략... # [service] 섹션에 아래 추가 Environment="HTTP_PROXY=http://120.121.122.123:8080" Environment="HTTPS_PROXY=https://120.121.122.123:8080" Environment="NO_PROXY=.haedong.net,localhost,127.0.0.1/8,192.168.0.0/16,.local"
[haedong@haedong:~:]$ sudo systemctl daemon-reload [haedong@haedong:~:]$ sudo systemctl restart docker.service
컨테이너 설행 시 변수로 전달
[haedong@haedong:~]$ docker run \ -e http_proxy=http://120.121.122.123:8080 \ -e https_proxy https://120.121.122.123:8080 \ -e no_proxy .haedong.net,localhost,127.0.0.1/8,192.168.0.0/16,.local \ CONTAINER_NAME
이미지 빌드 시 포함
ENV PATH /home/haedong/bin:$PATH ENV LD_LIBRARY_PATH /lib:/lib64:$LD_LIBRARY_PATH ...중략... # 아래 내용 추가 ENV http_proxy http://120.121.122.123:8080 ENV https_proxy https://120.121.122.123:8080 ENV no_proxy .haedong.net,localhost,127.0.0.1/8,192.168.0.0/16,.local
Docker root directory 변경
pull 한 image나 컨테이너 임시 데이터 등이 저장되는 디렉토리이다. 기본 값은 /var/lib/docker 인데, /var directory가 포함된 파티션의 크기가 작거나 하는 경우 disk full 로 인해 문제를 야기할 수 있다.
현재 docker root 확인
docker info | grep "Docker Root Dir" Docker Root Dir: /var/lib/docker #docker volume inspect my-vol
준비
docker root dirctory로 사용할 디스크를 확정하고 파티션 생성, 마운트 등의 작업을 마친다.
sudo systemctl stop docker.service 명령으로 서비스를 중지하고(시간이 걸릴 수 있다. 프로세스가 완전히 사라졌는지 확인하도록 하자) 이전의 docker 파일들을 대상 디렉토리로 복사한다.
mkdir /data cp -rp /var/lib/docker /data
서비스 수정
sudo vi /usr/lib/systemd/system/docker.service # Service 섹션에 ExecStart= 로 시작하는 줄을 수정한다. # ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --data-root=/data
sudo systemctl daemon-reload sudo systemctl restart docker.service
cgroup driver 변경
현재 상태 확인
sudo docker info | grep cgroup Cgroup Driver: cgroupfs
서비스 수정
sudo vi /etc/systemd/system/docker.service # ExecStart 로 시작하는 줄에 --exec-opt native.cgroupdriver=systemd 추가 # ExecStart=/usr/bin/dockerd -g /home/data/ -H fd:// --containerd=/run/containerd/containerd.sock ExecStart=/usr/bin/dockerd -g /home/data/ -H fd:// --containerd=/run/containerd/containerd.sock --exec-opt native.cgroupdriver=systemd
sudo systemctl daemon-reload sudo systemctl restart docker.service