Kans

Calico ๋ฐ ๋ฉ”ํŠธ๋ฆญ ์ˆ˜์ง‘ ๊ตฌ์„ฑ

  • kkumtree

2024-09-15T18:40:22+09:00

CloudNet@์—์„œ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋Š” K8s Advanced Network Study(์ดํ•˜, KANS)๋ฅผ ํ†ตํ•ด ํ•™์Šตํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

1. Calico ์„ค์น˜

์Šคํ„ฐ๋””์—์„œ AWS CF ๋ฐ Calico ์„ค์น˜ ์Šคํฌ๋ฆฝํŠธ(Manifest)๋ฅผ ์ œ๊ณตํ•˜์˜€๊ธฐ์—, ์ด ๋ถ€๋ถ„์€ ์ฐธ๊ณ ๋งŒ ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

CNI๊ฐ€ ์„ค์น˜๋˜์ง€ ์•Š์•˜๊ธฐ์— NotReady ์ƒํƒœ์— ์žˆ๋‹ค๊ฐ€, Calico ์„ค์น˜ํ•˜๋ฉด CoreDNS๊ฐ€ ์„ค์ •๋˜๋ฉฐ, Ready ์ƒํƒœ๋กœ ๋ณ€๊ฒฝ๋œ๋‹ค.

  • Calico ์„ค์น˜ ์ „

    # Control Plane and worker nodes are not ready
    (โŽˆ|HomeLab:default) root@k8s-m:~# kubectl get nodes
    NAME     STATUS     ROLES           AGE   VERSION
    k8s-m    NotReady   control-plane   32m   v1.30.5
    k8s-w0   NotReady   <none>          31m   v1.30.5
    k8s-w1   NotReady   <none>          31m   v1.30.5
    k8s-w2   NotReady   <none>          31m   v1.30.5
    
    # Count for iptalbes rules for comparison
    (โŽˆ|HomeLab:default) root@k8s-m:~# iptables -t filter -L | wc -l
    50
    (โŽˆ|HomeLab:default) root@k8s-m:~# iptables -t nat -L | wc -l
    48
    
    (โŽˆ|HomeLab:default) root@k8s-m:~# kubectl get pod -A --sort-by=.metadata.creationTimestamp
    NAMESPACE     NAME                            READY   STATUS    RESTARTS   AGE
    kube-system   etcd-k8s-m                      1/1     Running   0          35m
    kube-system   kube-apiserver-k8s-m            1/1     Running   0          35m
    kube-system   kube-controller-manager-k8s-m   1/1     Running   0          35m
    kube-system   kube-scheduler-k8s-m            1/1     Running   0          35m
    kube-system   coredns-55cb58b774-bscbt        0/1     Pending   0          35m
    kube-system   coredns-55cb58b774-w22zq        0/1     Pending   0          35m
    kube-system   kube-proxy-5hgmn                1/1     Running   0          35m
    kube-system   kube-proxy-bnv77                1/1     Running   0          35m
    kube-system   kube-proxy-xf8q7                1/1     Running   0          35m
    kube-system   kube-proxy-hzsnk                1/1     Running   0          35m
    
  • Calico ์„ค์น˜ ํ›„

KIND ํ†บ์•„๋ณด๊ธฐ

  • kkumtree

2024-09-03T21:16:07+09:00

ํ†บ์•„๋ณด๋‹ค(์šฐ๋ฆฌ๋ง์ƒ˜) ๋Š” ์˜์™ธ๋กœ ํ‘œ์ค€์–ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

KIND ์„ค์น˜ ์ดํ›„์— ๊ธฐ๋ณธ์ ์ธ ๋‚ด์šฉ์„ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค.

CloudNet@์—์„œ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋Š” K8s Advanced Network Study(์ดํ•˜, KANS)๋ฅผ ํ†ตํ•ด ํ•™์Šตํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

0. $KUBECONFIG

  • $KUBECONFIG ํ™˜๊ฒฝ๋ณ€์ˆ˜๊ฐ€ ์—†์„ ๊ฒฝ์šฐ:
    ๋ณดํ†ต์€ ~/.kube ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.
    ํ™•์ธํ•ด๋ณด๋‹ˆ, config ๊ฐ’๊ณผ ๋”๋ถˆ์–ด, cache ๋””๋ ‰ํ† ๋ฆฌ๋„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

    โฏ find ~/.kube -maxdepth 2 -type f -exec ls -ld "{}" \;
    -rw------- 1 kkumtree kkumtree 44 Sep  3 21:31 /home/kkumtree/.kube/config
    โฏ find ~/.kube -maxdepth 2 -type d -exec ls -ld "{}" \;
    drwxr-x--- 3 kkumtree kkumtree 4096 Sep  3 21:31 /home/kkumtree/.kube
    drwxr-x--- 4 kkumtree kkumtree 4096 Sep  3 21:11 /home/kkumtree/.kube/cache
    drwxr-x--- 5 kkumtree kkumtree 4096 Sep  3 21:28 /home/kkumtree/.kube/cache/discovery
    drwxr-x--- 3 kkumtree kkumtree 4096 Sep  3 21:28 /home/kkumtree/.kube/cache/http
    
  • KIND์šฉ $KUBECONFIG ์„ค์ •:
    ๊ทธ๋ž˜์„œ ์•„๋ž˜์ฒ˜๋Ÿผ, ๊ฒฝ๋กœ๋ฅผ ๋งŒ๋“ค๊ณ  $KUBECONFIG ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

๋ฆฌ๋ˆ…์Šค์— KIND ์„ค์น˜ํ•˜๊ธฐ w/golang

  • kkumtree

2024-09-02T00:33:19+09:00

Helm ์„ค์น˜ ์ถ”๊ฐ€

CloudNet@์—์„œ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋Š” K8s Advanced Network Study(์ดํ•˜, KANS)์— ์ฐธ์—ฌํ•˜๊ฒŒ ๋˜๋ฉด์„œ ๊ธฐ๋ก์„ ๋‚จ๊ธฐ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฒˆ์—๋Š” kind(Kubernetes IN Docker)๋ฅผ Golang์„ ํ†ตํ•ด ์„ค์น˜ํ•˜๋ฉด์„œ ์•ฝ๊ฐ„์˜ ์†Œ?๋ž€์ด ์žˆ์—ˆ๋˜ ๋ถ€๋ถ„๋งŒ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

1. KIND๋ž€?

  • ์•„๋ž˜ ์‚ฌ์ง„์œผ๋กœ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ Docs/Initial_design์—์„œ ๋ณผ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Concept

2. KIND ์„ค์น˜ํ•˜๊ธฐ

Linux์˜ ๊ฒฝ์šฐ, ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž ์„ค์น˜๊ฐ€ ์—†์–ด ๋ฐ”์ด๋„ˆ๋ฆฌ, ํ˜น์€ ์†Œ์Šค๋กœ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์•„๋ž˜ ๋‘ ๋ฌธ์žฅ์— ๋ญ”๊ฐ€ ๋ฐœ๋™ํ•˜์—ฌ Go ์–ธ์–ด๋กœ ์„ค์น˜๋ฅผ ํ•ด๋ณด๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค.

If you are a go developer you may find the go install option convenient.

Otherwise we supply downloadable release binaries, community-managed packages, and a source installation guide.

3. ์„ค์น˜๋Š” ๋งค์šฐ ๊ฐ„๋‹จ

  • Go ๊ฐœ๋ฐœ์ž๋Š” ์•„๋‹ˆ์ง€๋งŒ, ์ž˜ ๊น”๋ ค์žˆ์—ˆ๊ณ  ๊ทธ GOPATH ํ™˜๊ฒฝ๋ณ€์ˆ˜๋„ ํ™•์ธ๋ฉ๋‹ˆ๋‹ค. ๋ฌด์Šจ์ผ์ด๋žŒ.
โฏ go version
go version go1.22.2 linux/amd64
โฏ go env GOPATH
/home/kkumtree/go
  • Docs๋ฅผ ์ž˜ ์ฝ๊ณ , ์•„๋ž˜์™€ ๊ฐ™์ด ์„ค์น˜ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
go install sigs.k8s.io/[email protected]

4. ์ด๊ฑธ๋กœ ๋ ์ผ๋ฆฌ๊ฐ€ ์—†๋‹ค. ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ •

  • ๊ทธ๋Ÿฐ ๊ฑด ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Go๋ฅผ ๊ฐœ๋ฐœ์— ์‚ฌ์šฉํ•ด๋ณธ ์ ์ด ์—†์œผ๋ฉด ์•„๋ž˜์ฒ˜๋Ÿผ Go ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ PATH ํ™˜๊ฒฝ๋ณ€์ˆ˜์— ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
โฏ env | grep go
PATH=/home/kkumtree/go/bin:/home/kkumtree/.tfenv/bin:/home/kkumtree/.tfenv/bin:/home/kkumtree/.tfenv/bin:/home/kkumtree/.sdkman/candidates/java/current/bin:/home/kkumtree/.nvm/versions/node/v18.15.0/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin

(a์•ˆ) ~/.bashrc์— ์ •์  ์ง€์ •

  • ๋ณดํ†ต ์ด๋ ‡๊ฒŒํ•˜๋ฉด, ์‚ฌ์šฉํ•˜๋Š”๋ฐ ๋ณ„ ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
echo 'export PATH=$PATH:/home/kkumtree/go/bin' >> ~/.bashrc
# zsh์ผ ๊ฒฝ์šฐ) exec bash
source ~/.bashrc
# zsh์ผ ๊ฒฝ์šฐ, ๋‹ค์‹œ zsh๋กœ ๋ณต๊ท€) exec zsh

(b์•ˆ) ~/.profile์— ๋™์  ์ง€์ •

  • ๋ณ„๋‹ค๋ฅธ ์ด์œ ๋Š” ์—†๊ณ , profile์— ์กฐ๊ฑด ์„ค์ •์ด ๋˜์–ด์žˆ์–ด์„œ ์ถ”๊ฐ€ํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.
  • ๋งˆ์ง€๋ง‰ 3์ค„๋งŒ ์ถ”๊ฐ€๋กœ ์ž‘์„ฑ
# โฏ cat ~/.profile
# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.

# the default umask is set in /etc/profile; for setting the umask
# for ssh logins, install and configure the libpam-umask package.
#umask 022

# if running bash
if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
	. "$HOME/.bashrc"
    fi
fi

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/.local/bin" ] ; then
    PATH="$HOME/.local/bin:$PATH"
fi

# set PATH so it includes user's gopath if it exists
if [ -x "/usr/bin/go" ] && [ -d "$(/usr/bin/go env GOPATH)/bin" ] ; then
    PATH="$(/usr/bin/go env GOPATH)/bin:$PATH"
fi

source ~/.profile๋กœ ์ ์šฉํ•œ ํ›„, kind version์œผ๋กœ ์„ค์น˜ ํ™•์ธ.

Jenkins ์ปจํ…Œ์ด๋„ˆ์—์„œ Host์˜ Docker ๋ฐ๋ชฌ ์‚ฌ์šฉํ•˜๊ธฐ

  • kkumtree

2024-09-01T09:02:15+09:00

์ตœ๊ทผ CloudNet@์—์„œ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋Š” K8s Advanced Network Study(์ดํ•˜, KANS)์— ์ฐธ์—ฌํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
๋‚œ์ด๋„๋ฅผ ์ƒ๊ฐํ•˜๋ฉด KH(Hardcore)NS๊ฐ€ ๋” ๋งž์•„๋ณด์ด์ง€๋งŒ…

k8s๊ฐ€ ์›Œ๋‚™ ์ธ๊ธฐ๊ฐ€ ๋งŽ๊ธฐ๋„ ํ•˜์ง€๋งŒ, Pod ๊ฐ„ ํ†ต์‹ ์—๋Š” ๋งŽ์€ ์ง€์‹์ด ํˆฌ์—ฌ๋˜๊ธฐ์— ์ด๋ฒˆ ๊ธฐํšŒ์— ์‚ดํŽด๋ณด๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋”ํ™ฉ์ฑ 

์ฒซ ์ฃผ์ฐจ๋Š”, ๋ฐ”๋กœ Kubernetes์— ์ง„์ž…ํ•˜์ง€ ์•Š๊ณ  Containerization์— ๋Œ€ํ•œ ์ดํ•ด๋ฅผ ๋จผ์ € ๋‹ค๋ค„์ฃผ์…จ์Šต๋‹ˆ๋‹ค.
์—ฌํƒ€ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๊ฐ•์˜์™€ ๋‹ฌ๋ฆฌ 9์ฃผ ๊ฐ„ ๋งค์ฃผ ์ผ์š”์ผ์—๋งŒ ์ง„ํ–‰๋˜๋Š” ์„ธ์…˜์ธ๋ฐ๋„, ๊ธฐ๋ฐ˜ ๊ธฐ์ˆ ์„ ๋‹ค์‹œ ์งš์–ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค.

1. AWS EC2 Instance ์…‹์—…

CloudFormation์„ ํ†ตํ•ด, EC2 ๋ฐ ์ œ๋ฐ˜์‚ฌํ•ญ์„ ๊ตฌ์„ฑํ•˜์—ฌ ์ฃผ์…จ์Šต๋‹ˆ๋‹ค๋งŒ, ์ทจ๋ฏธ ์‚ผ์•„ Terraform ๋ณ€ํ™˜ ์ž‘์—…์„ ํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ํ•˜์ง€ ๋ง์•˜์–ด์•ผํ–ˆ๋Š”๋ฐ… LoL

  1. <<
  2. <
  3. 1
  4. 2
  5. >
  6. >>

kkumtree

Source code on GitHub

ยฉ 2025 kkumtree and contributors All rights reserved.
Licensed under
CC BY-NC-ND 4.0