Skip to content

An easy and ready-to-go bootstrap for k8s installation and automatic cluster deployment!

License

Notifications You must be signed in to change notification settings

kdgyun/k8s-cluster-bootstrap

Repository files navigation

ν•œκΈ€ λ¬Έμ„œ | English Document



k8s-cluster-bootstrap

πŸ”¨ k8s μ„€μΉ˜ 및 ν΄λŸ¬μŠ€ν„° ꡬ좕 μžλ™ν™”λ₯Ό μœ„ν•œ easy ν•œ λΆ€νŠΈμŠ€νŠΈλž©


Requirements

  • Ubuntu 18.04 (or Ubuntu Server 18.04) 이상, Ubuntu 22.04 (or Ubuntu Server 22.04) μ΄ν•˜ - μš°λΆ„νˆ¬ μ„œλ²„ ꢌμž₯
  • λ™μΌν•œ subnet μ•ˆμ— μžˆμ–΄μ•Ό 함. 단, calicoκΉŒμ§€ μžλ™μœΌλ‘œ 배포할 μ‹œ Master node IP(HOST IP)κ°€ CIDR 내에 있으면 μ•ˆλ¨
  • ssh μ ‘μ†μ‹œ pem ν‚€κ°€ μ•„λ‹Œ usernameκ³Ό password둜 접속이 κ°€λŠ₯ν•΄μ•Ό 함
  • 슀크립트 λ‚΄ μ‚¬μš©ν¬νŠΈμ— λŒ€ν•΄ open을 ν•˜λ‚˜, λ§Œμ•½ λ³„λ„μ˜ 자체 방화벽이 μžˆμ„ 경우 port 개방이 ν•„μš”ν•¨ (ν•„μˆ˜ 개방 포트 링크)


Usage

1. 파일 λ‹€μš΄λ‘œλ“œ

ν™ˆ λ””λ ‰ν† λ¦¬μ—μ„œ curl -sSLO http://raw.githubusercontent.com/kdgyun/k8s-cluster-bootstrap/main/k8s-cluster-bootstrap.sh ν˜Ήμ€ κΉƒν—ˆλΈŒμ˜ latest release 버전을 λ‹€μš΄λ‘œλ“œν•˜μ—¬ k8s-cluster-bootstrap.sh을 λ°›κΈ°


2. 파일 μ‹€ν–‰ κΆŒν•œ λΆ€μ—¬

k8s-cluster-bootstrap.sh 파일의 μ‹€ν–‰ κΆŒν•œ λΆ€μ—¬

chmod +x k8s-cluster-bootstrap.sh

3. μ‹€ν–‰

sudo κΆŒν•œμœΌλ‘œ k8s-cluster-bootstrap.sh 파일 μ‹€ν–‰

sudo ./k8s-cluster-bootstrap.sh [options] <value>

μ˜΅μ…˜μ— λŒ€ν•œ 상세 μ„€λͺ…은 μ•„λž˜μ—β€¦



Options


λ‹€μŒμ€ μŠ€ν¬λ¦½νŠΈμ—μ„œ μ œκ³΅ν•˜κ³  μžˆλŠ” μ˜΅μ…˜μž…λ‹ˆλ‹€.

Option(Flag) Values Description, example Remarks
-c / --cni CIDR λ§ˆμŠ€ν„° λ…Έλ“œ μƒμ„±μ‹œ cni(with calico)도 ν•¨κ»˜ μ„€μΉ˜ν•©λ‹ˆλ‹€. ν•΄λ‹Ή μ˜΅μ…˜μ„ μ‚¬μš©ν• μ‹œ, master node IP(Host IP)λž‘ λŒ€μ—­μ΄ 겹치면 μ•ˆλ˜λ©°, 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 쀑 ν•˜λ‚˜λ₯Ό μ„ νƒν•˜μ—¬ μž…λ ₯ν•˜μ‹œλ©΄ λ©λ‹ˆλ‹€.
-ct / --containertype Container Runtime container runtime νƒ€μž…μ„ μ§€μ •ν•˜κ³ μž ν•˜λŠ” 경우 μ‚¬μš©λ˜λŠ” μ˜΅μ…˜μ΄λ©° μ§€μ •ν•˜μ§€ μ•Šμ„ 경우 κΈ°λ³Έ 값은 docker(cri-dockerd) μž…λ‹ˆλ‹€. ν•΄λ‹Ή μ˜΅μ…˜μ„ μ‚¬μš©ν• μ‹œ cri-dockerd 의 경우 docker ,
containerd 의 경우 containerd 을 νŒŒλΌλ―Έν„°λ‘œ μ„€μ •ν•˜μ—¬ μ‚¬μš©ν•˜κ³ μž ν•˜λŠ” μ»¨ν…Œμ΄λ„ˆ λŸ°νƒ€μž„μ„ μž…λ ₯ν•˜μ‹œλ©΄ λ©λ‹ˆλ‹€.
-h / --help μ˜΅μ…˜ 및 μ„€λͺ…을 λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.
-i / --ip Master node (Host) IP master node의 ip (e.g. 10.0.0.1) μž…λ‹ˆλ‹€.
λ§Œμ•½ ν΄λΌμš°λ“œ(e.g, aws, gcp …) 등을 μ‚¬μš© ν•  경우, public IPκ°€ μ•„λ‹Œ, private IPλ₯Ό μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€.
-kv / --k8sversion μ§€μ›ν•˜λŠ” μΏ λ²„λ„€ν‹°μŠ€ 버전을 λ³΄μ—¬μ€λ‹ˆλ‹€.
-m / --master master λ…Έλ“œλ₯Ό μƒμ„±ν•˜κ³ μž ν•˜λŠ” 경우 -m ν”Œλž˜κ·Έλ₯Ό μ‚¬μš©ν•˜λ©΄ λ©λ‹ˆλ‹€. -i/--ip ν”Œλž˜κ·Έκ°€ λ°˜λ“œμ‹œ μš”κ΅¬λ©λ‹ˆλ‹€.
-ms / --metricserver kubernetes의 metrics-serverλ₯Ό μ„€μΉ˜ν•˜κ³ μž ν•˜λŠ” 경우 -ms ν”Œλž˜κ·Έλ₯Ό μ‚¬μš©ν•˜λ©΄ λ©λ‹ˆλ‹€. masterλ…Έλ“œλ₯Ό κ΅¬μ„±ν•˜λŠ” κ²½μš°μ—λ§Œ μ„€μΉ˜κ°€ κ°€λŠ₯ν•˜κΈ° λ•Œλ¬Έμ— -m/--master ν”Œλž˜κ·Έκ°€ λ°˜λ“œμ‹œ μš”κ΅¬λ©λ‹ˆλ‹€.
-p / --password Master(Host) node password ssh λ‘œκ·ΈμΈμ‹œ λ§ˆμŠ€ν„° λ…Έλ“œμ— μ ‘μ†ν•˜κΈ° μœ„ν•œ λΉ„λ°€λ²ˆν˜Έμž…λ‹ˆλ‹€.
같은 μ„œλΈŒλ„· μ•ˆμ—μ„œ worker λ…Έλ“œ μƒμ„±μ‹œ master λ…Έλ“œλ‘œλΆ€ν„° token을 κ°–κ³ μ˜€κΈ° μœ„ν•œ μ˜΅μ…˜μž…λ‹ˆλ‹€.
-u/--username ν”Œλž˜κ·Έμ™€ λ°˜λ“œμ‹œ 같이 μ‚¬μš©ν•΄μ•Όν•©λ‹ˆλ‹€.
-r / --regularuser
(*beta)
HOME_PATH of regular user ν˜„μž¬ sudo κΆŒν•œμœΌλ‘œ μ‹€ν–‰ν•œ user 외에 λ‹€λ₯Έ 일반 μœ μ €μ— λŒ€ν•΄μ„œλ„ μ ‘κ·Ό κΆŒν•œμ„ λΆ€μ—¬ν•˜κ³ μž ν•  λ•Œ μ‚¬μš©ν•©λ‹ˆλ‹€.
-r /home/username κ³Ό 같이 μ‚¬μš©ν•˜λ©°, 이 λ•Œ HOME_PATHλŠ” λ°˜λ“œμ‹œ ν•΄λ‹Ή κ³„μ •μ˜ ν™ˆ 디렉토리($HOME) 이어야 ν•©λ‹ˆλ‹€.
선택 μ˜΅μ…˜μ΄λ‚˜, -m (λ§ˆμŠ€ν„° λ…Έλ“œ 생성) λ•Œμ—λ§Œ μ‚¬μš©λ˜λŠ” μ˜΅μ…˜μž…λ‹ˆλ‹€.
-u / --username Master(Host) node username ssh λ‘œκ·ΈμΈμ‹œ λ§ˆμŠ€ν„° λ…Έλ“œμ— μ ‘μ†ν•˜κΈ° μœ„ν•œ usernameμž…λ‹ˆλ‹€.
같은 μ„œλΈŒλ„· μ•ˆμ—μ„œ worker λ…Έλ“œ μƒμ„±μ‹œ master λ…Έλ“œλ‘œλΆ€ν„° token을 κ°–κ³ μ˜€κΈ° μœ„ν•œ μ˜΅μ…˜μž…λ‹ˆλ‹€.
-p/--password μ˜΅μ…˜κ³Ό λ°˜λ“œμ‹œ 같이 μ‚¬μš©ν•΄μ•Όν•©λ‹ˆλ‹€.
-v / --version k8s version Kubernetes 버전을 μ„€μ •ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λ©λ‹ˆλ‹€.
(e.g. -v 1.25.0)
지원 버전은 1.24.15 λΆ€ν„° 1.31.2 κΉŒμ§€μ΄λ©° 지원 버전을 μƒμ„Έν•˜κ²Œ 보고자 ν•œλ‹€λ©΄ -kv λ˜λŠ”
--k8sversion μ˜΅μ…˜μ„ 톡해 확인이 κ°€λŠ₯ν•©λ‹ˆλ‹€.
ν•΄λ‹Ή μ˜΅μ…˜μ„ μ‚¬μš©ν•˜κ³ μž ν•˜λŠ” 경우 νŒŒλΌλ―Έν„°λŠ” x.y.z ν˜•μ‹μœΌλ‘œ μ£Όμ–΄μ Έμ•Ό ν•©λ‹ˆλ‹€.
λ§Œμ•½ ν•΄λ‹Ή μ˜΅μ…˜μ„ μ‚¬μš©ν•˜μ§€ μ•Šμ„ 경우 κΈ°λ³Έ 버전은 1.24.15 이며 RC λ˜λŠ” beta λ²„μ „μ˜ 경우 정식 릴리즈 버전이 μ•„λ‹ˆλ―€λ‘œ μ§€μ›ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
-w / --worker worker λ…Έλ“œλ₯Ό μƒμ„±ν•˜κ³ μž ν•˜λŠ” 경우 -w ν”Œλž˜κ·Έλ₯Ό μ‚¬μš©ν•˜λ©΄ λ©λ‹ˆλ‹€. -i/--ip , -u/--username, -p/-password 3개의 μ˜΅μ…˜μ΄ λ°˜λ“œμ‹œ μš”κ΅¬λ©λ‹ˆλ‹€.


μ–΄λ– ν•œ μ˜΅μ…˜λ„ μ‚¬μš©ν•˜μ§€ μ•Šκ³  μ‹€ν–‰ν•  경우 μΏ λ²„λ„€ν‹°μŠ€ ν΄λŸ¬μŠ€ν„° ꡬ성에 ν•„μš”ν•œ νŒ¨ν‚€μ§€ μ„€μΉ˜κΉŒμ§€λ§Œ μ§„ν–‰λ©λ‹ˆλ‹€.

νŒ¨ν‚€μ§€ μ„€μΉ˜λ§Œ ν•  경우 μ‚¬μš©μžκ°€ kubeadm init λͺ…령을 μ‹€ν–‰ν•˜μ—¬ μΏ λ²„λ„€ν‹°μŠ€ ν΄λŸ¬μŠ€ν„°λ₯Ό ꡬ성할 수 μžˆμŠ΅λ‹ˆλ‹€.

master λ…Έλ“œ 생성 예)

sudo ./k8s-cluster-bootstrap.sh -m -c 192.168.0.0/16 -i 10.0.0.1 -ct containerd -v 1.25.0

worker λ…Έλ“œ 생성 예)

sudo ./k8s-cluster-bootstrap.sh -w -i 10.0.0.1 -u username -p pwd123! -ct containerd -v 1.25.0

κΈ°μ—¬ κ°€μ΄λ“œλΌμΈ

이 ν”„λ‘œμ νŠΈμ— κΈ°μ—¬λ₯Ό ν•˜κ³ μž ν•œλ‹€λ©΄ κΈ°μ—¬ κ°€μ΄λ“œλΌμΈ 을 μ½μ–΄λ³΄μ‹œκΈ°λ₯Ό λ°”λžλ‹ˆλ‹€.