본문 바로가기

k8s27

k8s 마스터노드 HA 구성 k8s 마스터노드 HA 구성 참고 URL https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/high-availability/ 마스터노드를 3대로 HA 구성(Stacked control plane, Stacked etcd) 외부 etcd를 구성하지 않는 이상 기본적으로 마스터노드에 etcd가 포함되어 있기 때문에 RAFT 알고리즘으로 인해 마스터노드(etcd)는 홀수로 구성해야함 (RAFT 알고리즘이란 리더와 팔로워의 관계를 통해 다중화된 데이터의 정확성을 높이는 방식으로 redis, etcd에서 사용하는 방식입니다. RAFT 알고리즘에 대해 더 이해하시고자하는 경우 http://thesecretlivesofdata.com/raft.. 2023. 3. 7.
Kubernetes Secrets Store CSI Driver Kubernetes Secrets Store CSI Driver -> k8s CSI(Container Storage Interface) 볼륨을 통해 secrets stores 와 k8s 를 통합하는 플러그인 -> secrets stores 의 시크릿을 k8s secret 으로 동기화도 가능(반드시 파드에 볼륨으로 마운트를 해줘야 sercet 리소스가 생성됨) # gcp secret manager 와 gke 클러스터를 통합하여 사용 가능 https://cloud.google.com/secret-manager/docs/using-other-products#google-kubernetes-engine # 설치 https://secrets-store-csi-driver.sigs.k8s.io/getting-sta.. 2023. 3. 7.
k8s pv 마이그레이션 https://github.com/utkuozdemir/pv-migrate # 설치 kubectl krew update kubectl krew install pv-migrate # 마이그레이션 ## 동일 네임스페이스 간 마이그레이션 kubectl pv-migrate migrate old-pvc new-pvc rsync --delete 플래그 추가 kubectl pv-migrate migrate --dest-delete-extraneous-files old-pvc new-pvc 파드에 마운트 중이어도 무시하고 sync 진행 kubectl pv-migrate migrate --ignore-mounted old-pvc new-pvc ## 네임스페이스 간 마이그레이션 kubectl pv-migrate migra.. 2023. 3. 7.
pod에서 kube api 액세스 pod에서 kube api 액세스 https://kubernetes.io/docs/tasks/run-application/access-api-from-pod/ https://kubernetes.io/docs/reference/using-api/api-concepts/ # role, rolebinding, serviceaccount 정의 vim role-test.yaml apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: role-test namespace: sample-rollout rules: - apiGroups: - "" resources: - pods verbs: - get - list --- apiVersion: rbac.au.. 2023. 3. 7.
pod으로 클러스터 제어 pod으로 클러스터 제어 k8s 생성한 포드가 k8s 클러스터를 제어할 수 있도록 설정 # kubectl 바이너리 설치 kubectl exec -it -n -- bash curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/amd64/kubectl && chmod +x ./kubectl && mv ./kubectl /usr/local/bin/kubectl # 권한 부여 ## 방법1. kubeconfig 파일을 해당 포드 /root/.kube 디렉토리로 복사 mkdir ~/.kube .. 2023. 3. 7.
k8s 노드에 포드 할당 k8s 노드에 포드 할당 https://kubernetes.io/ko/docs/concepts/scheduling-eviction/assign-pod-node/ # 워커노드에 라벨 할당 kubectl get nodes kubectl get nodes --show-labels 라벨 할당 kubectl label nodes = 예시) kubectl label nodes kubernetes-foo-node-1.c.a-robinson.internal disktype=ssd # nodeSelector 특정 레이블을 가진 워커노드에만 포드를 배포 예시) apiVersion: v1 kind: Pod metadata: name: nginx labels: env: test spec: containers: - name: .. 2023. 3. 7.
traefik-ingress-controller traefik-ingress-controller https://doc.traefik.io/traefik/routing/providers/kubernetes-ingress/ # traefik-ingress-controller 배포 cat traefik-ingress-controller.yaml apiVersion: v1 kind: Namespace metadata: name: traefik --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: traefik-ingress-controller rules: - apiGroups: - "" resources: - services - endpoints - secrets verb.. 2023. 3. 7.
metrics-server 배포 metrics-server 배포 eks 가이드 https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/metrics-server.html 공식 github https://github.com/kubernetes-sigs/metrics-server # 배포 kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml ######################################################### ## 리소스 사용 확인 리소스 사용을 확인하기 위해서는 리소스 메트릭을 수집하는 metrics-server apiser.. 2023. 3. 6.
minikube minikube https://minikube.sigs.k8s.io/docs/start/ # minikube 지원 드라이버 종류 docker (드라이버 설치) virtualbox (드라이버 설치) podman (드라이버 설치) (EXPERIMENTAL) vmwarefusion kvm2 (드라이버 설치) hyperkit (드라이버 설치) hyperv (드라이버 설치) 다음 IP는 동적이며 변경할 수 있다. minikube ip로 알아낼 수 있다. vmware (드라이버 설치) (VMware unified driver) parallels (드라이버 설치) none (k8s 컴포넌트를 가상 머신이 아닌 호스트 상에서 구동한다. 리눅스를 실행중이어야 하고, 도커(Docker)가 설치되어야 한다.) 아래의 min.. 2023. 3. 6.