쿠버네티스(kubernetes)의 imagePullPolicy

Kubernetes|2019. 12. 22. 12:11

쿠버네티스의 기본 이미지 가져오기 정책(image pull policy)은 IfNotPresent다. 따라서 이미지가 이미 있으면 레지스트리에서 이미지를 가져오지 않고 로컬 이미지를 사용한다.

항상 레지스트리에서 이미지를 가져오게 하고 싶으면 다음과 같이 한다.

  • 컨테이너 구성(spec)의 imagePullPolicyAlways로 설정한다.
  • 컨테이너 구성에서 imagePullPolicy 항목을 없애고 태그가 :latest인 이미지를 사용한다. Always 정책이 적용된다.
  • 컨테이너 구성에서 imagePullPolicy 항목을 없애고 태그를 생략한 이미지를 사용한다. Always 정책이 적용된다.
  • AlwaysPullImages 어드미션 컨트롤러(Admission Controller)를 활성화한다.

lastest 태그는 상용 환경(production)에선 사용하지 않는 게 좋다. 어떤 이미지를 사용 중인지 알 수 없고 롤백 또한 어렵다.

이미지에 대한 더 다양한 내용은 다음 링크를 참고한다.

 

도움이 됐다면 공감 버튼을 클릭해 주세요. 감사합니다.

댓글()

minikube -The system cannot find the path specified..

Kubernetes|2019. 1. 7. 08:13

윈도우(Windows)에서 minikube start 명령을 실행했을 때 다음과 같은 오류가 발생하는 경우가 있다.

D:\tmp>minikube start --bootstrapper kubeadm --memory 4096
Starting local Kubernetes v1.12.4 cluster...
Starting VM...
Downloading Minikube ISO
 178.88 MB / 178.88 MB [============================================] 100.00% 0s
E0104 10:20:54.727967   15524 start.go:187] Error starting host: Error creating host: Error executing step: Creating VM.
: open /Users/daniel/.minikube/cache/iso/minikube-v0.32.0.iso: The system cannot find the path specified..

 Retrying.
E0104 10:20:54.732965   15524 start.go:193] Error starting host:  Error creating host: Error executing step: Creating VM.
: open /Users/daniel/.minikube/cache/iso/minikube-v0.32.0.iso: The system cannot find the path specified.
================================================================================
An error has occurred. Would you like to opt in to sending anonymized crash
information to minikube to help prevent future errors?
To opt out of these messages, run the command:
        minikube config set WantReportErrorPrompt false
================================================================================
Please enter your response [Y/n]:

이럴 때는 MINIKUBE_HOME 환경 변수를 설정하면 된다.

minikube를 Chocolatey로 설치했다면 다음과 같이 설정한 후 다시 minikube start 명령을 실행한다.

D:\tmp>set MINIKUBE_HOME=C:\ProgramData\chocolatey\lib\Minikube\tools
D:\tmp>minikube start --bootstrapper kubeadm --memory 4096

EOF

태그 : kubernetes

댓글()

윈도(Windows)에서 도커 IP 주소 조회

Kubernetes|2018. 6. 20. 18:05

Docker Quickstart Terminal을 실행하고, 다음과 같이 명령을 실행한다.

$ docker-machine url
tcp://192.168.99.100:2376

예를 들면, Postgres를 실행하면서 다음과 같이 5432 포트를 호스트의 5432 포트와 매핑한 경우.

$ docker run -d -p 5432:5432 --name postgres postgres:alpine

192.168.99.100:5432로 DB에 접속할 수 있다.


EOF


태그 : docker

댓글()

쿠버네티스 네임스페이스(namespace)의 이름 제약

Kubernetes|2018. 6. 11. 18:13
  • 최대 63자(characters)
  • 알파벳 소문자와 숫자, 하이픈(-)만 허용
  • 하이픈(-)은 맨 앞이나 뒤에 올 수 없음
  • 이름이 틀렸을 경우 다음과 같은 오류 메시지가 나옴(유효성 체크를 위한 regex가 포함됨!)
The Namespace "p.k.t" is invalid: metadata.name: Invalid value: "p.k.t": a DNS-1123 label must consist of lower case alphanumeric characters or '-', and must start and end with an alphanumeric character (e.g. 'my-name',  or '123-abc', regex used for validation is '[a-z0-9]([-a-z0-9]*[a-z0-9])?')


EOF

태그 : kubernetes

댓글()

도커(docker) 이미지의 내용이 궁금할 때

Kubernetes|2018. 5. 5. 14:12

도커(docker) 이미지가 어떻게 만들어졌는지 궁금한데 소스가 없는 경우에는 어떻게 할까? 이럴 때는 docker inspect 명령을 사용한다.

면저 분석하려는 이미지를 pull한다.

$ docker pull tensorflow/tensorflow:latest-gpu
latest-gpu: Pulling from tensorflow/tensorflow
d3938036b19c: Pull complete
a9b30c108bda: Pull complete
67de21feec18: Pull complete
817da545be2b: Pull complete
d967c497ce23: Pull complete
5ddeb439bad8: Pull complete
c6496427ad3b: Pull complete
360fde1360ca: Pull complete
1c3227e49e63: Pull complete
ec2edd14d4b6: Pull complete
96c7a24a6f0c: Pull complete
dee49a23eeb6: Pull complete
3c5ca73fbac5: Pull complete
50f4e1802dc1: Pull complete
316fabb600d5: Pull complete
62c1e601d7a6: Pull complete
Digest: sha256:d31c50ce2d31a21cb5396be59fcab4f8dba405dda2fcaf0f747a407ca277c9f0
Status: Downloaded newer image for tensorflow/tensorflow:latest-gpu

inspect 명령으로 상세한 내용을 살펴본다.

$ docker inspect tensorflow/tensorflow:latest-gpu
[
    {
        "Id": "sha256:e93ab8001bbf2743d82ed90e3735e44615aafd23e794f5561cb510379c8ad869",
        "RepoTags": [
            "tensorflow/tensorflow:latest-gpu"
        ],
        "RepoDigests": [
            "tensorflow/tensorflow@sha256:d31c50ce2d31a21cb5396be59fcab4f8dba405dda2fcaf0f747a407ca277c9f0"
        ],
        "Parent": "",
        "Comment": "",
        "Created": "2018-04-28T00:40:03.186381907Z",
        "Container": "e26d7da89405f94fa446e4f03d45a43cbf09e7c26ba544ade272f5570aeab553",
        "Config": {
            "Env": [
                "PATH=/usr/local/nvidia/bin:/usr/local/cuda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "CUDA_VERSION=9.0.176",
                "CUDA_PKG_VERSION=9-0=9.0.176-1",
                "LD_LIBRARY_PATH=/usr/local/cuda/extras/CUPTI/lib64:/usr/local/nvidia/lib:/usr/local/nvidia/lib64",
                "NVIDIA_VISIBLE_DEVICES=all",
                "NVIDIA_DRIVER_CAPABILITIES=compute,utility",
                "NVIDIA_REQUIRE_CUDA=cuda>=9.0"
            ],
            "Cmd": [
                "/run_jupyter.sh",
                "--allow-root"
            ],
            "ArgsEscaped": true,
            "Image": "sha256:3dda217166b30645da5f5a71aad7d1e895b86a2235b62856f54494e9b23f2de4",
            "Volumes": null,
            "WorkingDir": "/notebooks",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": {
                "com.nvidia.build.id": "63756748",
                "com.nvidia.build.ref": "2b1c8edf8d79830ad811baff9630adb3bcb5db46",
                "com.nvidia.cuda.version": "9.0.176",
                "com.nvidia.volumes.needed": "nvidia_driver",
                "maintainer": "Craig Citro <craigcitro@google.com>"
            }
        },
        "Metadata": {
            "LastTagTime": "0001-01-01T00:00:00Z"
        }
    }
]

비록 소스 파일(Dockerfile)을 얻을 수 있는 건 아니지만 출력된 내용을 잘 보면 충분히 유추가 가능한다.


EOF

태그 : docker

댓글()