μ°λ¦¬λ λ³΄ν΅ EKS μ μ컀 λ Έλλ‘ x86 μ΄λ , arm64 μ΄λ 리λ μ€λ₯Ό μ¬μ©ν©λλ€.
νΉν EKS νκ²½μ΄λΌλ©΄ μλ§μ‘΄ 리λ μ€2λ₯Ό μ¬μ©νκ² μ§μ.
κ·Όλ° κ°νΉ μ컀 λ Έλλ‘ μλμ°λ₯Ό νμλ‘ νλ κ²½μ°κ° μμ΅λλ€.
μλ₯Ό λ€μ΄ λΌμ΄λΈλ¬λ¦¬λ₯Ό λ§λ€μλλ°, 리λ μ€ λΏλ§ μλλΌ μλμ° νκ²½μμλ μ΄ λΌμ΄λΈλ¬λ¦¬λ₯Ό νμλ‘ ν©λλ€. κ·Έλ λ€λ©΄ μ΄ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ΄λ―Έμ§λ‘ λΉλνλ €λ©΄ 리λ μ€κ° μλ μλμ° νκ²½μμ λ§λ€μ΄μΌ νμ£ .
λ€νν EKS λ μλμ°λ₯Ό μ§μν΄μ€λλ€. λν Karpenter μμλ μλμ°λ₯Ό μ§μν΄μ£Όμ£ .
κ·ΈλΌ μ΄λ»κ² EKS νκ²½μμ μλμ°λ₯Ό νμ±ν νλμ§, μ΄ν Karpenter μμ μλμ°λ₯Ό μ΄λ»κ² νλ‘λΉμ λ νλμ§ νλ² μμ보λλ‘ νμ£ .
μ°Έκ³ λ‘ μ§νν μΏ λ²λ€ν°μ€ λ²μ μ 1.23 μ΄κ³ , Karpenter λ 0.31 λ²μ μ λλ€.
κ·ΈλΌ λ μΈ λλμ½λ~
EKS μ€μ
μλ λ°©λ²μ μλ§μ‘΄ 곡μ λ¬Έμμ μ λμμμ§λ§, νΉμλ μ μ²λΌ λ§νλ λΆλ€μ μν΄μ~
μλ νμ λμμλ μΏ λ²λ€ν°μ€ λ²μ μ μ¬μ©νλ€λ©΄ 무리μμ΄ μλμ°λ₯Ό νμ±ν ν μ μμ΅λλ€. λ§μ½ ν΄λΉ νμ μλ λ²μ μ μ¬μ©νκ³ μλ€λ©΄, Enable legacy Windows support λ₯Ό λ³΄κ³ μ§νν΄μ£ΌμΈμ.
μ λ 1.23 λ²μ μ μ¬μ©νλ ν΄λΉ λ¬Έμλ₯Ό λ³΄κ³ μ§νμ΄ κ°λ₯νκ² λ€μ.
λ€μμ κ³ λ € μ¬νμ λλ€.
CoreDNS λ 리λ μ€ κΈ°λ° μ컀 λ Έλμ λ°°ν¬ νκ³ ~ λΈλΌλΈλΌ μ μ μ½μ΄μ€λλ€. λΉ¨κ°μ λ€λͺ¨ μΉ λ§μ§λ§ μ€μ κ΄λ ¨ μ€μ μ ν΄μ£Όμ΄μΌ ν©λλ€.
aws-auth 컨νΌκ·Έλ§΅μ μλ μ΄λ―Έμ§μ κ°μ΄ κΆνμ μΆκ°ν΄μ€μλ€.
$ k edit configmaps -n kube-system aws-auth -o yaml
ν΄λΉ μμ μ μν΄μ€λ, Window κΈ°λ°μ μ컀 λ Έλκ° λ°μΉμ λ©λλ€.
νμ§λ§, μ΄ν νλλ₯Ό λ°°ν¬νμ λ ν΄λΉ νλκ° CoreDNS λ₯Ό μ°Ύμ§ λͺ»ν΄μ google.com μ κ°μ νΌλΈλ¦ λλ©μΈ λΏλ§ μλλΌ,
svc.cluster.local μ κ°μ μλΉμ€ κ΄λ ¨λ λλ©μΈλ μ°Ύμ§ λͺ»νκ² λ©λλ€.
κΌ λμΉμ§ λ§κ³ μΆκ°ν΄μ€μλ€!
μ΄μ λ€μμΌλ‘ λμ΄κ°λ³΄μ£ .
EKS Cluster Role μκ² ν΄λΉ μ μ± μ λΆμ¬νλΌκ³ νλλ°, ν λΌνΌμΌλ‘ EKS λ₯Ό ꡬμ±νμ κ²½μ° λ€ κΈ°λ³Έμ μΌλ‘ ν λΉλμ΄ μμν λ ν¬κ² 건λ€κ±΄ μμ΅λλ€.
μ μ΄λ―Έμ§μμ λΉ¨κ°μ λ€λͺ¨λ₯Ό 보면 "eksClusterRole μ λμ ν΄λ¬μ€ν°μ ν λΉλ Role μ΄λ¦μΌλ‘ λ°κΏλΌ" λΌκ³ νλλ°,
μ λ μ΄κ±Έ μ²μμ μλͺ» ν΄μν΄μ, κΈ°μ‘΄μ μλ Role μ΄λ¦μ eksClusterRole λ‘ λ°κΎΈλΌλ λ§λ‘ μ΄ν΄νκ³ ,
μμ²λ λ»μ§μ νμ£ .
2λ²μ λ§μ°¬κ°μ§λ‘ ν λΌνΌμΌλ‘ μμ±νμ κ²½μ°, ν¬κ² μ κ²½μΈ κ±΄ μμ΅λλ€.
μ€μν 건 3,4λ²μ λλ€.
μ€μνμ§λ§ μ΄λ €μ΄ 건 μμ΅λλ€. κ·Έλλ‘ λ°λΌν΄μ€λλ€.
μ΄λ‘μ¨ EKS μμμ μ€μ μ λλ¬μ΅λλ€. κ·ΈλΌ μ΄μ΄μ Kapenter λ₯Ό ν΅ν΄μ μλμ° κΈ°λ°μ μ컀 λ Έλλ₯Ό λ°°ν¬ν΄λ³΄μ£ .
Karpenter μ€μ
Karpenter μ κ°λ μ΄λ μ¬μ© λ°©λ²μ μ¬κΈ°λ₯Ό μ°Έκ³ !
Karpenter λ²μ μ λ°λμ 0.29 μ΄μμ μ¬μ©ν΄μΌ ν©λλ€. μ΄μ λ Window AMI λ₯Ό 0.29 λ²μ μ΄νλΆν° μ§μν΄μ£ΌκΈ° λλ¬Έμ΄μ£ .
0.27 μ΄ν λ²μ μμ 0.28 μ΄μ λ²μ μΌλ‘ μ λ°μ΄νΈ ν λ λ¨μν μ΄λ―Έμ§λ₯Ό μ λ°μ΄νΈ ν΄μ€λ€κ³ λ°°ν¬λμ§ μμμ.
κ½€λ λ§μ κ²λ€μ΄ λ°λμκΈ° λλ¬Έμ κΌ κ³΅μ λ¬Έμλ₯Ό λ³΄κ³ μ§νν΄μ£ΌμΈμ!!!!!
Karpenter κ° μ¬μ©νλ Windows2019, Windows2022 μ μ΄λ―Έμ§λ λ€μκ³Ό κ°μμ.
Full μ΄ μλ Core λ§ μ¬μ©ν©λλ€.
μλλ μμ AWSNodeTemplate μ λλ€. .spec.amiFamiliy λΆλΆμ λ°κΏμ€λλ€.
apiVersion: karpenter.k8s.aws/v1alpha1
kind: AWSNodeTemplate
metadata:
name: window-aws-node-template
spec:
amiFamily: Windows2019
blockDeviceMappings:
- deviceName: /dev/sda1
ebs:
volumeSize: 50Gi
volumeType: gp2
encrypted: false
securityGroupSelector:
...
instanceProfile:
...
subnetSelector:
...
tags:
...
.spec.securityGroupSelector λ₯Ό ν΅ν΄ μμ±λλ μλμ° μ컀 λ Έλμ 보μ κ·Έλ£Ήμ ν λΉν΄μ€ μ μλλ°, μ΄λ κΌ λ§μ€ν° λ Έλμ λ€λ₯Έ μ컀 λ Έλμ ν΅μ μ΄ κ°λ₯ν μ μλλ‘ μΈλ°μ΄λ κ·μΉμ μ§μ ν΄μ€λλ€.
λ§μ€ν° λ Έλμ ν΅μ μ΄ κ°λ₯ν΄μΌ νλ μ΄μ λ μ컀 λ Έλλ₯Ό λ±λ‘νκΈ° μν΄μμ΄κ³ ,
λ€λ₯Έ μ컀 λ Έλμ ν΅μ μ΄ κ°λ₯ν΄μΌ νλ μ΄μ λ CoreDNS μ ν΅μ μ΄ κ°λ₯ν΄μΌ νκΈ° λλ¬Έμ λλ€.
λ§μ½ NetworkPolicy λ₯Ό μ¬μ©νλ€λ©΄ κ΄λ ¨ Rule λν νμ©ν΄μ€λλ€.
μλ μ΄λ―Έμ§λ ν΄λΉ νμλ₯Ό νμ§ μμμ κ²½μ° λ°μν μ μλ μλ¬μ λλ€.
μ΄λ‘μ¨ μΉ΄νν° λΆλΆλ λμ΄ λ¬μΌλ, μ€μ λ‘ μλμ° λ Έλλ₯Ό λμ΄λ³΄μ£ !
μλμ° λ Έλμ μλμ° νλ ν μ€νΈ
μ λ°©λ²μΌλ‘ μλμ° κΈ°λ°μ μ컀 λ Έλλ₯Ό λμ°κ³ , νλλ₯Ό λ°°ν¬ν΄λ³΄κ² μ΅λλ€!
apiVersion: v1
kind: Pod
metadata:
name: win-webserver
labels:
app: win-webserver
spec:
containers:
- name: windowswebserver
image: mcr.microsoft.com/windows/servercore:ltsc2019
command:
- powershell.exe
- -command
- "Write-Host 'Hello, World!'; Sleep -s 3600"
νλλ₯Ό λ°°ν¬νλλ, μλμ κ°μ μλ¬κ° λ°μν©λλ€.
μμΈν μ½μ΄λ³΄λ©΄ νλμ μΆκ°μ μΈ private ip eni ν λΉμ λͺ»νκ³ μμ΅λλ€.
node λ₯Ό μ΄ν΄λ³΄λ©΄ ν λΉκ°λ₯ν IP λ 11κ°λΌκ³ λμ΅λλ€. λν μ컀 λ Έλμ μνλ Not Ready κ° μλ Ready μ λλ€.
νΉμ aws-vpc-cni κ° λ무 ꡬλ²μ (1.11) μ΄λΌμ κ·Έλ°κ° μΆμ΄μ 1.15 λ²μ μΌλ‘ μ λ°μ΄νΈλ₯Ό νκ³ λ€μ μλν΄λ³΄μ£ !
μ¬μ ν κ°μ λ¬Έμ κ° λ°μν©λλ€...
κ·Έλ¬λ μ€ λͺ¨λ window νλ example μ νκ°μ§ 곡ν΅λ κ²μ λ°κ²¬νμ΅λλ€!!
λ°λ‘ NodeSelector λ‘ window λ₯Ό μ§μ νλ κ²μ΄μμ£ !!!!
apiVersion: v1
kind: Pod
metadata:
name: win-webserver
labels:
app: win-webserver
spec:
containers:
- name: windowswebserver
image: mcr.microsoft.com/windows/servercore:ltsc2019
command:
- powershell.exe
- -command
- "Write-Host 'Hello, World!'; Sleep -s 3600"
nodeSelector:
kubernetes.io/os: windows
κ·Έλ¬λλ μμ£Ό λ°°ν¬κ° μλλ κ²μ νμΈν μ μμ΅λλ€!!
μ΄λ κ² μ€λμ μλμ° μ컀 λ Έλλ₯Ό Karpenter λ‘ νλ‘λΉμ λνκ³ , μλμ° κΈ°λ°μ νλλ₯Ό μ€νν΄λ΄€μ΅λλ€.
μλμ° μ컀 λ Έλλ efs-csi-driver μ κ°μ μΆκ°μ μΈ μ λμ¨λ€μ΄ μ§μμ΄ μλκΈ° λλ¬Έμ 리λ μ€ μ컀 λ Έλμ²λΌ λ§μ κ²μ ν μ μμ§λ§, κ·Έλλ CI/CD μλ μ μ©νκ² μΈ μ μμ κ±° κ°μ΅λλ€.
κ·ΈλΌ μ€λμ μ¬κΈ°κΉμ§~