Kubernetes: kubectl์ด ๊ฐœ์ธ ์ €์žฅ์†Œ์—์„œ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค

์— ๋งŒ๋“  2017๋…„ 02์›” 16์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: kubernetes/kubernetes

์ด๊ฒƒ์€ ๋ฒ„๊ทธ ๋ณด๊ณ ์ž…๋‹ˆ๊นŒ ์•„๋‹ˆ๋ฉด ๊ธฐ๋Šฅ ์š”์ฒญ์ž…๋‹ˆ๊นŒ?: ๋ฒ„๊ทธ

Kubernetes ๋ฒ„์ „(kubectl ๋ฒ„์ „ ์‚ฌ์šฉ):

Client Version: version.Info{Major:"1", Minor:"5", GitVersion:"v1.5.2", GitCommit:"08e099554f3c31f6e6f07b448ab3ed78d0520507", GitTreeState:"clean", BuildDate:"2017-01-12T04:57:25Z", GoVersion:"go1.7.4", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"5", GitVersion:"v1.5.3", GitCommit:"029c3a408176b55c30846f0faedf56aae5992e9b", GitTreeState:"clean", BuildDate:"2017-02-15T06:34:56Z", GoVersion:"go1.7.4", Compiler:"gc", Platform:"linux/amd64"}

ํ™˜๊ฒฝ:

ํด๋ผ์šฐ๋“œ ๊ณต๊ธ‰์ž ๋˜๋Š” ํ•˜๋“œ์›จ์–ด ๊ตฌ์„ฑ: 2GB RAM/50GB HDD VM
OS(์˜ˆ: /etc/os-release):
NAME="์šฐ๋ถ„ํˆฌ"
VERSION="16.04 LTS(์ œ๋‹ˆ์–ผ ์ œ๋ฃจ์Šค)"
์•„์ด๋””=์šฐ๋ถ„ํˆฌ
ID_LIKE=๋ฐ๋น„์•ˆ
PRETTY_NAME="์šฐ๋ถ„ํˆฌ 16.04 LTS"
VERSION_ID="16.04"
ํ™ˆ_URL=" http://www.ubuntu.com/ "
SUPPORT_URL=" http://help.ubuntu.com/ "
BUG_REPORT_URL=" http://bugs.launchpad.net/ubuntu/ "
UBUNTU_CODENAME=์ œ๋‹ˆ์–ผ

์ปค๋„(์˜ˆ: uname -a):
Linux ubuntu 4.4.0-21-generic #37-Ubuntu SMP ์›”์š”์ผ 4์›” 18์ผ 18:33:37 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
๋„๊ตฌ ์„ค์น˜: kubeadm, kubectl, docker
๊ธฐํƒ€ :NA
์ผ์–ด๋‚œ ์ผ: ๊ฐœ์ธ ์ €์žฅ์†Œ์—์„œ ๊ฐ€์ ธ์˜ค๋Š” ๋™์•ˆ ImagePullBackOff

์˜ˆ์ƒํ–ˆ๋˜ ์ผ: ๋น„๊ณต๊ฐœ ์ €์žฅ์†Œ์—์„œ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค.

์žฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•(๊ฐ€๋Šฅํ•œ ํ•œ ์ตœ์†Œํ•œ์œผ๋กœ ๊ทธ๋ฆฌ๊ณ  ์ •ํ™•ํ•˜๊ฒŒ):

  • ๊ฐœ์ธ ์ €์žฅ์†Œ์šฉ ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ณ  ๋…ธ๋“œ(๋งˆ์Šคํ„ฐ ๋ฐ ์Šฌ๋ ˆ์ด๋ธŒ) ๋ชจ๋‘์—์„œ ๋„์ปค๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
    root<strong i="5">@ubuntu</strong>:~# vi /etc/systemd/system/docker.service.d/private-registry.conf
        [Service]
        ExecStart=
        ExecStart=/usr/bin/dockerd --insecure-registry 123.456.789.0:9595
  • ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋„์ปค ๋กœ๊ทธ์ธ
    docker login 123.456.789.0:9595
  • ๋„์ปค ์ •๋ณด
    ์ปจํ…Œ์ด๋„ˆ: 87
    ๋‹ฌ๋ฆฌ๊ธฐ: 18
    ์ผ์‹œ์ค‘์ง€: 0
    ์ค‘์ง€๋จ: 69
    ์ด๋ฏธ์ง€: 175
    ์„œ๋ฒ„ ๋ฒ„์ „: 1.12.3
    ์ €์žฅ ๋“œ๋ผ์ด๋ฒ„: aufs
    ๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ: /var/lib/docker/aufs
    ๋ฐฑ์—… ํŒŒ์ผ ์‹œ์Šคํ…œ: extfs
    ๋””๋ ‰ํ† ๋ฆฌ: 384
    Dirperm1 ์ง€์›: true
    ๋กœ๊น… ๋“œ๋ผ์ด๋ฒ„: json-file
    Cgroup ๋“œ๋ผ์ด๋ฒ„: cgroupfs
    ํ”Œ๋Ÿฌ๊ทธ์ธ:
    ๋ณผ๋ฅจ: ๋กœ์ปฌ
    ๋„คํŠธ์›Œํฌ: ํ˜ธ์ŠคํŠธ ๋ธŒ๋ฆฌ์ง€ ๋„ ์˜ค๋ฒ„๋ ˆ์ด
    ๋ฌด๋ฆฌ: ๋น„ํ™œ์„ฑ
    ๋Ÿฐํƒ€์ž„: runc
    ๊ธฐ๋ณธ ๋Ÿฐํƒ€์ž„: runc
    ๋ณด์•ˆ ์˜ต์…˜: apparmor seccomp
    ์ปค๋„ ๋ฒ„์ „: 4.4.0-21-์ผ๋ฐ˜
    ์šด์˜ ์ฒด์ œ: ์šฐ๋ถ„ํˆฌ 16.04 LTS
    OS ์œ ํ˜•: ๋ฆฌ๋ˆ…์Šค
    ์•„ํ‚คํ…์ฒ˜: x86_64
    CPU: 1
    ์ด ๋ฉ”๋ชจ๋ฆฌ: 1.937GiB
    ์ด๋ฆ„: ์šฐ๋ถ„ํˆฌ
    ID: FXD7: JQJZ:HO3R :D2NK: RWYL:7DCY :PC2M:43PM:MA7C: QSPN:4RGS :5W6H
    ๋„์ปค ๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ: /var/lib/docker
    ๋””๋ฒ„๊ทธ ๋ชจ๋“œ(ํด๋ผ์ด์–ธํŠธ): false
    ๋””๋ฒ„๊ทธ ๋ชจ๋“œ(์„œ๋ฒ„): false
    ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ: https://index.docker.io/v1/
    ๊ฒฝ๊ณ : ์Šค์™‘ ์ œํ•œ ์ง€์› ์—†์Œ
    ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ:
    123.456.789.0:9595
    127.0.0.0/8

  • ๋„์ปค -v
    Docker ๋ฒ„์ „ 1.12.3, ๋นŒ๋“œ 6b644ec

  • ๋งˆ์Šคํ„ฐ์—์„œ kubeadm ์‹œ์ž‘
    kubeadm ์ดˆ๊ธฐํ™” --token 123456.1234567890123456 --api-advertise-addresses 192.168.91.133

  • ์ฟ ๋ฒ„๋„ค์ดํŠธ ์‹œํฌ๋ฆฟ ์ƒ์„ฑ
    kubectl ๋น„๋ฐ€ ๋„์ปค ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์ƒ์„ฑ my-secret --docker-server=123.456.789.0 --docker-username=admin --docker-password=XXXX [email protected]
  • ์œ„๋ธŒ ๋„คํŠธ์›Œํฌ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

    kubectl ์ ์šฉ -f https://git.io/weave-kube

  • ์Šฌ๋ ˆ์ด๋ธŒ์—์„œ ๋งˆ์Šคํ„ฐ ๋„คํŠธ์›Œํฌ์— ์ฐธ์—ฌ
    kubeadm ์กฐ์ธ --token=123456.1234567890123456 192.168.91.133
  • ํฌ๋“œ ์ •์˜
apiVersion: v1
kind: Pod
metadata:
  name: test-pod
  labels:
    name: test
spec:
  containers:
    - image: 123.456.789.0:9595/test
      name: test
      ports:
        - containerPort: 8443
  imagePullSecrets:
    - name: my-secret
  • ๊ทธ๋Ÿฐ ๋‹ค์Œ ํฌ๋“œ๋ฅผ ๋งŒ๋“ค๋ ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ตฌ์„ฑ๋œ ํฌ๋“œ ์ด๋ฏธ์ง€๋Š” nexus docker ์ €์žฅ์†Œ์— ์žˆ์Šต๋‹ˆ๋‹ค. ํฌ๋“œ๋ฅผ ์„ค๋ช…ํ•˜๋Š” ๋™์•ˆ ์•„๋ž˜ ์ถ”์ ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
Name:           test-pod
Namespace:      default
Node:           ubuntu-child/192.168.91.134
Start Time:     Thu, 16 Feb 2017 12:26:56 +0530
Labels:         name=test
Status:         Pending
IP:             10.44.0.2
Controllers:    <none>
Containers:
  test:
    Container ID:
    Image:              123.456.789.0:9595/test
    Image ID:
    Port:               8443/TCP
    State:              Waiting
      Reason:           ErrImagePull
    Ready:              False
    Restart Count:      0
    Volume Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-vkj94 (ro)
    Environment Variables:      <none>
Conditions:
  Type          Status
  Initialized   True
  Ready         False
  PodScheduled  True
Volumes:
  default-token-vkj94:
    Type:       Secret (a volume populated by a Secret)
    SecretName: default-token-vkj94
QoS Class:      BestEffort
Tolerations:    <none>
Events:
  FirstSeen     LastSeen        Count   From                    SubObjectPath                   Type            Reason          Message
  ---------     --------        -----   ----                    -------------                   --------        ------          -------
  9s            9s              1       {default-scheduler }                                    Normal          Scheduled       Successfully assigned test-pod to ubuntu-child
  7s            7s              1       {kubelet ubuntu-child}  spec.containers{test}   Normal          Pulling         pulling image "123.456.789.0:9595/test"
  7s            7s              1       {kubelet ubuntu-child}  spec.containers{test}   Warning         Failed          Failed to pull image "123.456.789.0:9595/test": Error: image test:latest not found
  7s            7s              1       {kubelet ubuntu-child}                                  Warning         FailedSync      Error syncing pod, skipping: failed to "StartContainer" for "test" with ErrImagePull: "Error: image test:latest not found"

  7s    7s      1       {kubelet ubuntu-child}  spec.containers{test}   Normal  BackOff         Back-off pulling image "123.456.789.0:9595/test"
  7s    7s      1       {kubelet ubuntu-child}                                  Warning FailedSync      Error syncing pod, skipping: failed to "StartContainer" for "test" with ImagePullBackOff: "Back-off pulling image \"123.456.789.0:9595/test\""

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

ํฌํŠธ ๋ฒˆํ˜ธ๋กœ ์ธํ•ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•œ ํ›„ ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

kubectl create secret docker-registry my-secret --docker-server=123.456.789.0:9595 --docker-username=admin --docker-password=XXXX [email protected]

๋ชจ๋“  3 ๋Œ“๊ธ€

์Šฌ๋ ˆ์ด๋ธŒ์™€ ๋งˆ์Šคํ„ฐ์—์„œ ๊ฐœ์ธ ์ €์žฅ์†Œ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํฌ๋“œ ์ •์˜์— ๋‚ด ๋น„๋ฐ€์„ ์ถ”๊ฐ€ํ–ˆ์ง€๋งŒ kubectl์ด ๊ฐœ์ธ ์ €์žฅ์†Œ์—์„œ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค๋ ค๊ณ  ํ•  ๋•Œ ๋ฌธ์ œ๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

ํฌํŠธ ๋ฒˆํ˜ธ๋กœ ์ธํ•ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•œ ํ›„ ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

kubectl create secret docker-registry my-secret --docker-server=123.456.789.0:9595 --docker-username=admin --docker-password=XXXX [email protected]

์‹ค์ œ ๋ฒ„๊ทธ๋Š” ์•„๋‹ˆ์—ˆ์ง€๋งŒ ์†”๋ฃจ์…˜์— ๋Œ€ํ•ด์„œ๋Š” http://stackoverflow.com/questions/42267164/kubectl-not-able-to-pull-the-image-from-private-repository๋ฅผ ์ฐธ์กฐ

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰