์ง๋ ๊ธ์์๋ proxmox ์ ์ค์นํ ํ, ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๋ฅผ ์์ฑํ์ต๋๋ค.
์ด๋ฒ์๋ ์๋น์ค ๋ฉ์ฌ์ ์ปจํธ๋กค๋ฌ ์ญํ ์ ํด์ฃผ๋ Istio ์ CSI Driver NFS ๋ฅผ ์ค์นํฉ๋๋ค.
Istio ๋ Nginx Controller ๋ฅผ ๋์ ํ๊ณ , mTLS ์ ๊ฐ์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ธฐ ์ํด ์ค์นํ๊ณ , CSI Driver NFS ๋ ํ๋๋ค์ ๋ณผ๋ฅจ์ผ๋ก ์ฌ์ฉํ๊ธฐ ์ํด ์ค์นํฉ๋๋ค.
Consul ์ ๋์ ํด๋ณด๊ณ ์ถ์๋ฐ ์ด๊ฑด ์ถํ ์์ ํด๋ณด๊ฒ ์ต๋๋ค!!
๋ชจ๋ ์์ ์ IaC ๋ก ๊ด๋ฆฌํ๊ธฐ ์ํ์ฌ ํ ๋ผํผ์ผ๋ก ์งํ๋ฉ๋๋ค!
๋ ์ธ ๋๋์ฝ๋~
Istio
Helm ๋ฒ์ ์ ์ค์น๋ฅผ ์ํ ๊ฐ์ด๋๊ฐ ๊ณต์ ๋ฌธ์์ ์ ์ค๋ช ๋์ด ์์ต๋๋ค.
Helm Provider ์ ๋ง๊ฒ ์ฝ๋ํ๋ฅผ ์งํํ๊ณ , terraform apply ๋ฅผ ํตํด ๋ฐฐํฌํ์ต๋๋ค.
๊ตณ์ด ํผ์ ์ฌ์ฉํ๋๋ฐ S3, DynamoDB ๋ฅผ ์ฌ์ฉํด์ ํ ๋ผํผ์ ์ค์ ํ ํ์๊ฐ ์์ ๊ฑฐ ๊ฐ์ ๋ชจ๋ ๋ก์ปฌ์์ ๊ด๋ฆฌํฉ๋๋ค!
base, daemon, gateway ๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ์ค์นํ์ต๋๋ค.
์, ์ฐธ๊ณ ๋ก base ๋ crd ๋ฅผ ๋ฐฐํฌํ๋ ๋ถ๋ถ์ด๋ผ pod ๋ก ๋ฐฐํฌ๋์ง ์์์.
istio proxy ์ ๋ฉ์ปค๋์ฆ์ ์ดํดํด๋ณด๊ณ ์ถ์ด์ ์ ๋ privileged ๋ฅผ true ๋ก ์ฃผ์์ต๋๋ค.
์ด๋ ๊ฒํ๋ฉด tcpdump ์ ๊ฐ์ sudo ๊ฐ ํ์ํ ํ๋ก์ธ์ค๋ฅผ ์คํํ ์ ์์ฃ .
๋ํ ์ ๋ ์จํ๋ ๋ฏธ์ค ํ๊ฒฝ์ด๊ณ ๋ก๋๋ฐธ๋ฐ์ ๊ฐ์ ๊ฑด ์์ผ๋ Ingress Gateway ์ ์๋น์ค NodePort ๋ฅผ ๋ฐ๋ก ์ง์ ํ์๊ณ , ๋ ธ๋์ IP ๊ฐ ๋ฐ๋๋ ๊ฒฝ์ฐ๋ฅผ ๋๋นํ์ฌ NodeAffinity ๋ฅผ ์ฌ์ฉํด Worker Node 1 ์๋ง ๋ฐฐํฌ๋๋๋ก, ๋ ธ๋์ DHCP ๋ ์ฌ์ฉํ์ง ์์ต๋๋ค.
nginx ๋ฅผ ๋ฐฐํฌํด์ Istio ๋ฅผ ํ ์คํธ ํด๋ดค๋๋ฐ ๋ฌธ์ ์์ต๋๋ค.
์ด๋ ๊ฒ ๋์ํ ํด๋ณผ ์ ์๊ฒ ๊ตฐ์.
CSI Driver NFS
NFS ๋ฅผ ์ฌ์ฉํด์ ํ๋์ ๋ฐ์ดํฐ๋ค์ ๋ณด๊ดํฉ๋๋ค.
์ฐ์ NFS ์๋ฒ๋ก ์ฌ์ฉํ๊ณ ์ ํ๋ ๊ฐ์ ๋จธ์ ์ ํ๋ ์์ฑํฉ๋๋ค.
SSH ๋ก ์ ์ ํ ํ, ์๋ ๋ช ๋ น์ด๋ค์ ์์ฐจ์ ์ผ๋ก ์คํํฉ๋๋ค.
๋ฐ๋ก ์ค๋ช ํ์ง ์์๊ฒ์.
$ apt update
$ apt install -y nfs-kernel-server
$ systemctl list-units --type=service --state=running
$ systemctl status nfs-server
$ systemctl enable nfs-server
$ mkdir -p /mnt/k8s
$ chown -R nobody:nogroup /mnt/k8s/
$ chmod 777 /mnt/k8s
# vim /etc/exports
$ /mnt/k8s 192.168.0.0/16(rw,sync,no_subtree_check)
$ exportfs -rav
$ systemctl restart nfs-server
$ systemctl status nfs-server
NFS Server ๋ ์ค์นํ๊ณ , ์ด์ NFS Client ๋ ์ค์นํด์ค์ผ ํ๋๋ฐ... ๋ฌธ์ ๋ ์์ปค ๋ ธ๋๋ง๋ค ๋ชจ๋ ์ค์นํด์ค์ผ ํฉ๋๋ค..
๋ ธ๋๊ฐ ์ง๊ธ์ 3๊ฐ์ฌ์ ๊ด์ฐฎ์ง๋ง, 100๊ฐ๋ผ๋ฉด ์ด์ฐ.. ๋นก์ธ์ฃ ..
๋คํํ CSI Driver NFS ๊ฐ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ค๋๋ค.
NFS ๋ ๋ง๊ณ ๋ EBS ์ ๊ฐ์ ํด๋ผ์ฐ๋ ์ ์ฅ์์ CSI ๋ ๋ชจ๋ ์ง์ํด์ฃผ๋ ํฐ ๋ฌธ์ ๋ ์์ด์!
์ญ์ ํ ๋ผํผ์ ํตํด ์ค์นํด์ฃผ์์ต๋๋ค.
csi-nfs-node ๋ ๋ฐ๋ชฌ์ ์ผ๋ก ๊ฐ ๋ ธ๋๋ง๋ค ํ๋์ฉ ์ค์น๋๋ฉด ์ด ํ๋๋ค์ด ๋ ธ๋๊ฐ NFS Client ๋ก ๋์ํ ์ ์๊ฒ๋ ์ง์ํด์ค๋๋ค.
์๋๋ NFS ๋ฅผ ํ ์คํธํ ์์ ์ ๋๋ค.
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: nfs-csi
provisioner: nfs.csi.k8s.io
parameters:
server: 192.168.0.150
share: /mnt/k8s
reclaimPolicy: Delete # Retain
volumeBindingMode: Immediate
mountOptions:
- hard
- nfsvers=4.1
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nfs-pvc
spec:
storageClassName: nfs-csi
accessModes: [ReadWriteOnce] # ReadWriteMany
resources:
requests:
storage: 5Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: nfs-example
labels:
app: nfs-example
spec:
replicas: 3
selector:
matchLabels:
app: nfs-example
template:
metadata:
labels:
app: nfs-example
spec:
containers:
- image: ubuntu:20.04
name: ubuntu
command: ["/bin/bash", "-c", "tail -f /dev/null"]
volumeMounts:
- mountPath: /mnt/data
name: nfs-pvc
volumes:
- name: nfs-pvc
persistentVolumeClaim:
claimName: nfs-pvc
---
Bound ๊ฐ ๋ ๊ฑธ ๋ณด๋ ์ฑ๊ณต์ ์ผ๋ก ์ค์น๋์์ต๋๋ค.
ํ๋์์ ์์ฑํ test.txt ๊ฐ ์ค์ NFS ์๋ฒ์์ ํ์ธํ ์ ์์ต๋๋ค.
๋์ค์ ๊ผญ Consul ๋ ํ๋ฒ ๋์ ํด๋ณด๊ฒ ์ต๋๋ค.
์ด๋ ๊ฒ ์ค๋์ ์ฑ๋ฒฝ๊ณผ ์ ์ฅ์๋ฅผ ์ง์ด๋ดค์ต๋๋ค.
๋ค์ ์๊ฐ์ ํ๋กํ ๋ฉ์ฐ์ค(๋ณด์ด), ๊ทธ๋ผํ๋(๋ณด์ด), ๋ณผํธ(์๋ณด)๋ฅผ ์ค์นํด๋ณด๊ฒ ์ต๋๋ค.
๊ทธ๋ผ ์ค๋์ ์ฌ๊ธฐ๊น์ง!
'๋๋ง์ ์๊ณ ์์คํ k8s ์๊ตญ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋์์์ฟ ] ์ฑ ์ง๊ธฐ feat. proxmox, kubernetes (10) | 2023.04.02 |
---|---|
[๋์์์ฟ ] ์ํ ์ง๊ธฐ feat. ๋ฏธ๋ PC ์กฐ๋ฆฝ (4) | 2023.02.28 |