이쿠의 슬기로운 개발생활

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

반응형

Kubernetes/Kubernetes 이론 44

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..

Container 관련 기술 리서치

Container 관련 기술 리서치 개발하는데 Container에 대한 자세한 이해가 필요해서Container관련 기술에 대해서 글로 정리하며 다시 한번 복습 및 리서치를 진행해봄.리서치와 복습만이 살길이다....ㅠㅠ  Container란?제가 아는 내용을 설명드릴려고 하면 일단 Linux와 Windows는 별개로 설명드려야할 것 같음. linux Containerlinux container는 리눅스 네임스페이스(Linux namespaces), 컨트롤 그룹(cgroup),  루트 디렉터리 격리(chroot) 등의커널 기능을 활용해서 linux 커널을 공유하면서 프로세스를 격리된 환경에서 실행하는 기술임. [container의 대표적인 특징]1. stateless하게 동작해서 container 상태를 보..

Pod Security Policy deprecated

Pod Security Policy deprecated 목표Pod Security Policy가 1.25 version 부터 deprecated 된다고 함...해당 원인에 대애 알아봄.  공식 관련 내용 확인1.22 version cluster에서 PSP 사용 시 Warning 발생 2021.04.06 글 확인https://kubernetes.io/blog/2021/04/06/podsecuritypolicy-deprecation-past-present-and-future/결론 요약kubernetes 1.25 version PSP는 더 이상 지원되지 않음. Deprecated 이유 [1. PSP Error 디버깅 문제]PSP 관련 Error 디버깅에 문제가 있다고 판단함.PSP를 적용한 후 kubernet..

yaml 파일에서 환경변수 사용

Yaml 파일에서 환경변수 사용 먼저 환경 변수를 설정함명령어 export TEST_VERSION=1.0.1 예제 yaml 파일apiVersion: v1kind: Podmetadata:name: iksoon-pod-tomcatlabels:  app: tomcat8spec:containers:- name: iksoon-tomcat-test   image: peksoon/tomcat:$TEST_VERSION   ports:   - containerPort: 8080 yaml 파일 생성 시 환경변수 전달하여 생성명령어envsubst    제 글을 복사할 시 출처를 명시해주세요.글에 오타, 오류가 있다면 댓글로 알려주세요! 바로 수정하겠습니다!

Pod생성 시 Container Image 매번 새로 받아오기

Pod생성 시 Container Image 매번 새로 받아오기 상황1. kubernetes 에서는  기존에 작성되어있던 pod 1개를 생성하는 pod.yaml 파일이 있음2. kubectl apply -f 명령을 통해 해당 pod.yaml 파일 실행3. pod 1개 생성되어 정상 동작 중4. GitLab에서 container images 를 새로 빌드하여 올림5. 동작중에던 pod 1개를 교체 해야함6. 단 작성되어있던 yaml파일은 수정하지 않아야함 방법 1.yaml 파일의 container 생성 image version을 latest 로 고정하고이미지를 항상 다시 pull 하도록 imagePullPolicy : Always옵션을 추가함docker registry 에 images version 을 la..

Kubernetes docker에서 containerd로 마이그레이션

kubernetes docker에서 containerd로 마이그레이션 목표kubernetes container runtime tool을 docker에서 containerd로 변경하는 작업을 진행해봄순서는 master node 부터 containerd로 migration을 진행하고다음으로 worker node를 진행함.  Test 환경on-premise 환경에서 진행. [Master Node server]OS = CentOS 7리눅스 커널 버전 : Linux 3.10.0-1062.el7.x86_64docker version : 20.10.8docker api verison : 1.41 [Worker Node server]OS = CentOS 7리눅스 커널 버전 : Linux 3.10.0-1062.el7.x..

반응형