먼저 flannel 배포를 위한 네임스페이스를 생성합니다.
kubectl create ns kube-flannel
helm차트로 배포하는 가이드에는 다음과 같은 라벨을 추가하게 되어있습니다.
네임스페이스에 라벨을 붙여 파드 시큐리티 스텐다드를 강제할 수 있습니다. 3가지 권한이 있는데 cni이기 때문에 privileged을 부여합니다.
kubectl label --overwrite ns kube-flannel pod-security.kubernetes.io/enforce=privileged
https://kubernetes.io/ko/docs/concepts/security/pod-security-standards/
파드 시큐리티 스탠다드
파드 시큐리티 스탠다드에 정의된 여러 가지 정책 레벨에 대한 세부사항
kubernetes.io
이제 flannel 배포를 위한 helm 차트 추가 합니다.
helm repo add flannel https://flannel-io.github.io/flannel/
helm repo update
flannel에 pod 대역을 10.244.0.0/16으로 설정하고 인터페이스가 여러개 있을 경우 아래처럼 특정 인터페이스를 사용하여 통신하도록 지정할 수 있습니다.
cat << EOF > flannel-values.yaml
podCidr: "10.244.0.0/16"
flannel:
args:
- "--ip-masq"
- "--kube-subnet-mgr"
- "--iface=eth1"
EOF
이 설정을 이용해서 kube-flannel 넴스페이스에 배포합니다.
helm install flannel --namespace kube-flannel flannel/flannel -f flannel-values.yaml
이제 확인해보면 새로운 설정 파일들과 바이너리들이 설치된 것을 확인할 수 있습니다.
인터페이스 정보에도 lo와 eth0이외에도 flannel과 관련된 인터페이스가 구성되었습니다.
마지막으로 샘플 애플리케이션을 설치해보겠습니다.
cat << EOF | kubectl apply -f -
apiVersion: apps/v1
kind: Deployment
metadata:
name: webpod
spec:
replicas: 2
selector:
matchLabels:
app: webpod
template:
metadata:
labels:
app: webpod
spec:
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: app
operator: In
values:
- sample-app
topologyKey: "kubernetes.io/hostname"
containers:
- name: webpod
image: traefik/whoami
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: webpod
labels:
app: webpod
spec:
selector:
app: webpod
ports:
- protocol: TCP
port: 80
targetPort: 80
type: ClusterIP
EOF
# k8s-ctr 노드에 curl-pod 파드 배포
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: Pod
metadata:
name: curl-pod
labels:
app: curl
spec:
nodeName: flannel-worker
containers:
- name: curl
image: alpine/curl
command: ["sleep", "36000"]
EOF
잘 설치 되었는지 확인해보겠습니다.
kubectl get deploy,svc,ep webpod -owide
kubectl get endpointslices -l app=webpod
파드 대역도 설정한대로 10.244.0.0/16으로 생성된것을 확인할 수 있습니다.
'K8S > 🔥 network study🔥' 카테고리의 다른 글
[cilium] flannel에서 cilium으로 마이그레이션 해보기 (0) | 2025.07.18 |
---|---|
[네떡스터디🔥kans] AWS - EKS와 AWS LoadBalancer Controller (1) | 2024.11.02 |
[네떡스터디🔥kans] AWS - EKS와 Amazon VPC CNI (0) | 2024.11.02 |
[네떡스터디🔥kans] AWS - EKS 시작하기 (0) | 2024.11.02 |
[네떡스터디🔥kans] Cilium CNI 알아보기 - Netkit (0) | 2024.10.27 |