이쿠의 슬기로운 개발생활

함께 성장하기 위한 보안 개발자 EverNote 내용 공유

반응형

Kubernetes 131

Flannel 배포 오류 : pod cidr not assigned

환경kubernetes version : 1.25.4flannel version : v1.1.0 상황flannel 배포 시 flannel daemonset pod가 error 상태로 실행이 안됨.특이 사항으로cluster pod cider 은 10.110.0.0/16으로 설정되어있음해당 설정은 kube-controller를 보고 확인함flannel cfg comfigmap 도 10.110.0.0/16으로 설정함---kind: ConfigMapapiVersion: v1metadata: name: kube-flannel-cfg namespace: kube-flannel labels: tier: node app: flanneldata: cni-conf.json: | { "nam..

Kubernetes/Flannel 2024.07.15

kube-proxy가 iptables를 update하는 시점

kube-proxy가 iptables 정보를 update하는 시점은?새로운 service object가 배포될 때service object를 바라보는 새로운 pod 가 배포될 때정확히는 pod가 running 상태가 되는 시점. container creating 상태일 때는 update하지 않음pod가 다른 node로 이동할 때도 update 됨.service object를 바라보는 새로운 pod 삭제될 때정확히는 pod가 완벽히 제거되는 시점. delete가 진행 중인 상태는 update하지 않음다른 node에서 drain작업이 진행될 때.drain 작업이 진행되면 pod가 이동하는데 service object가 모니터링 하고 있는 pod가 이동하게 되면 iptables update함.

Kubernetes NodePort Networking 분석 (kube-proxy : iptable mode) New version

kubernetes NodePort Networking 분석 New versionkube-proxy = iptable modeCNI = Flannel[kubernetes kube-proxy 관련 글 목록]Kubernetes kube-proxy Mode 분석Kubernetes kube-proxy IPVS Mode 설정Kubernetes NodePort Networking 분석 (kube-proxy : iptable mode)Kubernetes NodePort Networking 분석 (kube-proxy : iptable mode)- New versionkubernetes LoadBalancer Networking 분석 (kube-proxy : iptable mode)kubernetes NodePort N..

leader-elector를 알아보자

leader-elector를 알아보자 목표node 3대에 kube-state-metrics를 pod가 아닌 containerd로 배포하고이 중 한개의 모드에서만 kube-state-metrics container를 리더로 설정해서 동작하고나머지 2개의 노드에서는 slave로 대기하도록 구성하고 싶다.관련 기능을 알아보다가 leader-elector를 확인했다.한번 알아보고 적용할 수 있는지 확인해보자 leader-elector란?leader-elector 컨테이너는 리더를 선택하는 메커니즘을 구현한 컨테이너임.일반적으로 kubernetes와 같은 컨테이너 오케스트레이션의 클러스터 내에서여러 노드 간의 통신을 통해 리더를 선출하는 데 사용됨.leader-elector container는 사이드카 형식으로 ..

kubernetes node name max length가 52인 이유

해당 이슈를 확인하게 된 과정cluster 구성 중에 node이름이 매우 길어지는 경우가 있음. (100자 이상)kubelet 동작 시 kube-apiserver와 통신하기 위해 인증서가 필요한데 인증서 생성 시 CN에 Node이름이 들어감.인증서는 openssl과 같은 tool로 생성됨.openssl로 공개키 인증서 생성 시 기존은 CN에 "system:node:$hostname" 으로 설정이되는데cluster name이 길어지는 경우 CN max length인 64를 초과하기 때문에 다음과 같은 error가 발생함 node name이 52이하가 되어야 하는 이유 첫 번째 : 인증서의 common domainopenssl 로 공개키를 발급 받아야하는데이때 CN길이가 max 64이고 "system:nod..

Kubernetse Linux Namespace 분석 : Pod Container 공유자원 리서치

Linux Namespace 공유 자원종류UTS : HostnameIPC : 프로세스 간 통신PID : Process IDNS : File System의 MountNET : Network interface, iptables 등 network 리소스USER : User와 Group IDCGROUP : 리소스 제한을 위한 control group k8s Pod Container의 기본 공유자원IPC, NET, UTS, PID 는 쉐어한다고함. 공유 자원에 대한 테스트 항목1. Pod 내 NET(Network) 공유 확인2. Pod 내 NS(File System) 공유 하지 않음에 대한 확인3 . Pod 내 UTS(Host name) 공유 확인이후 항목은 추후 추가 예정....   1. Pod 내 NET(Ne..

kubectl cp 명령 특징

kubectl cp 명령 특징   목표kubectl cp 명령의 특징에 대해 알아봄   kubectl cp 특징 (tar)kubectl cp 명령은 kubernetes cluster에 배포되어있는 pod간에 file, directory 복사를 해주는 명령어.pod -> hosthost > pod전송이 가능함. https://github.com/kubernetes/kubectl/blob/master/pkg/cmd/cp/cp.gokubectl 코드의 cp 부분을 확인해 보면 cp 명령은 tar를 통해 진행된다는 것을 알 수 있음.# !!!Important Note!!!Requires that the 'tar' binary is present in your container# image.  If 'tar' i..

실행 중인 container에 mount하는 방법

실행 중인 container에 mount하는 방법  목표 kubernetes cluster에서 container mount 는pod 생성 시에 volume 설정을 통해 mount하는 방법이 있음.하지만 이미 running 상태로 동작 중인 pod의 container에 mount해야하는 경우도 있음.이에 따라 실행 중인 container에 mount하는 방법을 알아봄.   test 환경 kubernetes cluster 중 control node에서 test를 진행함kubernetes cluster에서 container runtime으로 containerd를 사용하고 있음.cluster 정보는 다음과 같음 [Containerd : 1.4.12]   kubernetes cluster에 배포되어있는 conta..

gVisor와 runtimeclass

gVisor  목표kubernetes gVisor는 무엇이며, 어떤 경우에 사용해야하고어떻게 사용해야하는지 알아봄  Container 취약점 container runtime tool을 통해 생성된 일반적인 Container는 아래와 같이 Host의 kernel을 공유하고 있음.  실제로 확인해보면 다음과 같이 container에서 실행한 system call 명령이container에서 실행한 결과와 host의 결과가 동일한 것을 확인할 수 있음. 이러한 container의 특징은 보안적으로 문제가 될 수 있음.다음과 같이 특정 container를 통해서 공격자가 kernel에 접근해서 다른 container를 공격할수도 있고host kernel자체를 공격할 수 있음.예를 들면 Dirty Cow 취약점이 ..

Kubernetes 보안 설정 node-restriction.kubernetes.io

kubernetes 보안 설정 node-restriction.kubernetes.io 취약점 분석 kube-apiserver의 --enable-admission-plugin 항목을 확인해보면default로 NodeRestriction 항목이 활성화 되어있는 것을 확인할 수 있음. 해당 NodeRestriction 설정은 어떤 역할을 하는지 찾아봄. 일반적으로 worker node는 kubelet을 통해서 master(control) node의 kube-apiserver와 통신할 수 있음.즉 worker node의 kubectl 사용 시 별도의 인증 계정을 만들지 않고도worker node에 이미 배포되어있는 kubelet의 인증권한을 사용하면 kube-apiserver와 통신하여kubectl tool을 ..

반응형