https://appletreeworkplace.tistory.com/41
[์ฟ ๋ฒ๋คํฐ์ค] Kind + Cilium CNI ํด๋ฌ์คํฐ ๊ตฌ์ถ (1)
kind ๋๊ตฌ๋ฅผ ํ์ฉํ์ฌ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๋ฅผ ๋ก์ปฌ์์ ๋์ปค๋ก ๊ฐ๋จํ๊ฒ ์คํํ ์ ์๋ ํ๊ฒฝ์ ๊ตฌ์ถํด๋ณธ๋ค.๊ทผ๋ฐ ์ด์ ๋คํธ์ํฌ cni๋ cilium์ ๊ณ๋ค์ธ ๋ฒ์ ์ด๋ค.์ฌ์ ํ๊ฒฝ ์ ํ brew install orbstack ๋งฅ
appletreeworkplace.tistory.com
์ ํธ์์ ์์ฑํ kind ํด๋ฌ์คํฐ ์์ operator sdk๋ก ๋ง๋ ์ด๋ฏธ์ง๋ฅผ ๋ก์ปฌ๋ก ๋ฐฐํฌํด์ ์ ์์ ์ผ๋ก ๋์ํ๋์ง ํ์ธํด๋ณธ๋ค.
์ปจํ ์ด๋ ์ด๋ฏธ์ง ๋น๋
make docker-build IMG=localhost:5000/controller:1.0.0
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
localhost:5000/controller 1.0.0 f817d23c4901 18 minutes ago 70.1MB
๋ก์ปฌ ํ๊ฒฝ์ ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค์ด์ค๋ค.
Kind ํด๋ฌ์คํฐ์ ์ด๋ฏธ์ง ๋ก๋
kind load docker-image --name $MY_CLUSTER localhost:5000/controller:1.0.0
๋ก์ปฌ Docker์์ ๋น๋ํ ์ด๋ฏธ์ง๋ฅผ Kind ํด๋ฌ์คํฐ ๋ด๋ถ๋ก ๋ก๋ํ๋ ๊ณผ์ ์ด๋ค.
์ด ๊ณผ์ ์ ์ํํด์ฃผ๋ ์ด์ ๋ Kind๋ ์์ฒด์ ์ธ Docker ๋คํธ์ํฌ์์ ์คํ๋์ด docker push ์์ด kind load docker-image๋ก ์ด๋ฏธ์ง๋ฅผ ๋ฑ๋กํด์ผ ๋ง์๋์ ์ด๋ฏธ์ง๊ฐ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
Normal BackOff 23s kubelet Back-off pulling image "localhost:5000/controller:1.0.0"
Warning Failed 23s kubelet Error: ImagePullBackOff
Normal Pulling 9s (x2 over 24s) kubelet Pulling image "localhost:5000/controller:1.0.0"
Warning Failed 9s (x2 over 24s) kubelet Failed to pull image "localhost:5000/controller:1.0.0": failed to pull and unpack image "localhost:5000/controller:1.0.0": failed to resolve reference "localhost:5000/controller:1.0.0": failed to do request: Head "http://localhost:5000/v2/controller/manifests/1.0.0": dial tcp [::1]:5000: connect: connection refused
Warning Failed 9s (x2 over 24s) kubelet Error: ErrImagePull
๋ก๋๋ฅผ ๋ฐ๋ก ์ํ๋๋ ๊ณ์ ์ด๋ฏธ์ง๊ฐ ์๋ฌ๊ฐ ๋ ์ ์๊ฒ ๋์๋ค. ๐ฅฒ
Operator ๋ฐฐํฌ
make deploy IMG=localhost:5000/controller:1.0.0
๋์ ํ์ธ
k get po -A
omyo-meow-system omyo-meow-controller-manager-6fd85d76df-jzrrl 1/1 Running 0 2m21s
ํ๋๊ฐ ๋ฌ๋ ์ํ๋ก ๋ด๋ค.
๋ฆฌ์์ค๋ฅผ ๋ง๋ค์ด์ ์ปจํธ๋กค๋ฌ ๋ฆฌ์ปจ์ฌ์ผ ๋ถ๋ถ์ด ์ ์์ ์ผ๋ก ๋์ํ๋์ง ํ์ธํด๋ณด์๋ค.
๋ฆฌ์์ค ๋ฐฐํฌ
kubectl apply -f - <<EOF
apiVersion: omyo.test.io/v1alpha1
kind: OmyoTracker
metadata:
name: test-tracker
spec:
vmName: "vm-test"
hostNode: "node-1"
vmState: "Running"
EOF
์คํผ๋ ์ดํฐ ๋ก๊ทธ
kubectl logs -n omyo-meow-system deployment/omyo-meow-controller-manager -f
Operator๊ฐ ์ ์์ ์ผ๋ก ์คํ๋๋ค๊ฐ ์ข ๋ฃ๋ ๊ณผ์ ์ ์ดํด๋ณด๋๋ก ํ๋ค.
2025-03-08T13:20:11Z INFO setup starting manager
2025-03-08T13:20:11Z INFO controller-runtime.metrics Starting metrics server
2025-03-08T13:20:11Z INFO setup disabling http/2
2025-03-08T13:20:11Z INFO starting server {"name": "health probe", "addr": "[::]:8081"}
์คํผ๋ ์ดํฐ ์ปจํธ๋กค๋ฌ ๋งค๋์ ๊ฐ ์์๋๊ณ , ๋งคํธ๋ฆญ ์์ง์ ์ํ ๋งคํธ๋ฆญ ์๋ฒ๊ฐ ์์๋๋ค.
ํฌ์ค ์ฒดํฌ ์๋ฒ(Health Probe) ์์๋๋ฉด์ Operator์ ์ํ๋ฅผ ํ์ธํ๋ API๊ฐ Kubernetes๊ฐ Operator๊ฐ ์ ์ ์๋ํ๋์ง ๊ฐ์งํ๋ค.
I0308 13:20:11.747981 1 leaderelection.go:254] attempting to acquire leader lease omyo-meow-system/a9bae644.test.io...
I0308 13:20:11.757835 1 leaderelection.go:268] successfully acquired lease omyo-meow-system/a9bae644.test.io
2025-03-08T13:20:11Z DEBUG events omyo-meow-controller-manager-6fd85d76df-jzrrl_be888f8f-6e74-47af-ac2f-601937cd2dfb became leader {"type": "Normal", "object": {"kind":"Lease","namespace":"omyo-meow-system","name":"a9bae644.test.io","uid":"c53e7713-554d-4bce-b7b6-0ca5c67d50c1","apiVersion":"coordination.k8s.io/v1","resourceVersion":"351222"}, "reason": "LeaderElection"}
Operator๊ฐ ๋ฆฌ๋ ์ ์ถ์ ํ๋๋ฐ, ์ฟ ๋ฒ๋คํฐ์ค์์ ์ฌ๋ฌ Operator ์ธ์คํด์ค๋ฅผ ์คํํ ์ ์๊ธฐ ๋๋ฌธ์ ํ ๊ฐ์ ํ๋๋ง ๋ฆฌ๋ ์ญํ ์ ๋งก๋๋ก ์ ์ถํ๊ฒ ๋๋ค.
๋ฆฌ๋ ์ ์ถ์ด ์๋ฃ๋ ํ Reconcile ํจ์๊ฐ ์คํ๋ ์ค๋น๋ฅผ ํ๊ฒ ๋๋ค.
2025-03-08T13:20:11Z INFO Starting EventSource {"controller": "omyotracker", "controllerGroup": "omyo.test.io", "controllerKind": "OmyoTracker", "source": "kind source: *v1alpha1.OmyoTracker"}
2025-03-08T13:20:11Z INFO Starting Controller {"controller": "omyotracker", "controllerGroup": "omyo.test.io", "controllerKind": "OmyoTracker"}
2025-03-08T13:20:11Z INFO Starting workers {"controller": "omyotracker", "controllerGroup": "omyo.test.io", "controllerKind": "OmyoTracker", "worker count": 1}
2025-03-08T13:20:12Z INFO controller-runtime.metrics Serving metrics server {"bindAddress": ":8443", "secure": true}
OmyoTracker ๋ฆฌ์์ค๋ฅผ ๊ฐ์งํ๋ ์ด๋ฒคํธ ์์ค๊ฐ ํ์ฑํ๋๋ฉด์ ๋ฆฌ์์ค๋ฅผ ๊ฐ์งํ๊ฒ ๋๋ฉด Reconcile ํจ์๊ฐ ์คํ๋๋ค.
Reconcile ํจ์๋ฅผ ์คํํ๋ ์์ปค ํ๋ก์ธ์ค๊ฐ 1๊ฐ ํ์ฑํ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
2025-03-08T13:27:11Z INFO Host Node: {"controller": "omyotracker", "controllerGroup": "omyo.test.io", "controllerKind": "OmyoTracker", "OmyoTracker": {"name":"test-tracker"}, "namespace": "", "name": "test-tracker", "reconcileID": "1f0e593e-f32e-47c9-beb2-a5c341457d6a", "host": "node-1"}
Reconcile ํจ์ ๋ด๋ถ์ ๋ฆฌ์์ค ๋ฐฐํฌ ์ ๋ก๊ทธ๊ฐ ๋ฐ์ํ๋๋ก ์์ฑํ์๋ค.
2025-03-08T13:28:49Z INFO Stopping and waiting for non leader election runnables
2025-03-08T13:28:49Z INFO Stopping and waiting for leader election runnables
2025-03-08T13:28:49Z INFO Shutdown signal received, waiting for all workers to finish {"controller": "omyotracker", "controllerGroup": "omyo.test.io", "controllerKind": "OmyoTracker"}
2025-03-08T13:28:49Z INFO All workers finished {"controller": "omyotracker", "controllerGroup": "omyo.test.io", "controllerKind": "OmyoTracker"}
2025-03-08T13:28:49Z INFO Stopping and waiting for caches
2025-03-08T13:28:49Z INFO Stopping and waiting for webhooks
2025-03-08T13:28:49Z INFO Stopping and waiting for HTTP servers
2025-03-08T13:28:49Z INFO shutting down server {"name": "health probe", "addr": "[::]:8081"}
2025-03-08T13:28:49Z INFO controller-runtime.metrics Shutting down metrics server with timeout of 1 minute
2025-03-08T13:28:49Z INFO Wait completed, proceeding to shutdown the manager
make undeploy๋ก ์ฌ๋ ค๋ ์คํผ๋ ์ดํฐ ํ๋๋ฅผ ๋ด๋ ค์ฃผ์์ ๋ ์ข ๋ฃ ๋์์ด๋ค.
'Infra > ์ฟ ๋ฒ๋คํฐ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ฟ ๋ฒ๋คํฐ์ค] Kind + Cilium CNI ํด๋ฌ์คํฐ ๊ตฌ์ถ (1) (0) | 2025.02.28 |
---|---|
[์ฟ ๋ฒ๋คํฐ์ค] ์ฟ ๋ฒ๋คํฐ์ค์ ์ถ๊ตฌ๋ฏธ (3) | 2024.09.24 |
[์ฟ ๋ฒ๋คํฐ์ค] ํ๋ (6) | 2024.09.06 |
[์ฟ ๋ฒ๋คํฐ์ค] ๋์ปค, ์ฟ ๋ฒ๋คํฐ์ค ๊ทธ๋ฆฌ๊ณ ์ค์ต ํ๊ฒฝ ์ ํ (5) | 2024.09.04 |
operator-sdk scaffold ๋ง๋ค๊ธฐ (0) | 2024.04.23 |