본문 바로가기

분류 전체보기96

k8s cert-manager k8s cert-manager https://cert-manager.io/docs/tutorials/getting-started-with-cert-manager-on-google-kubernetes-engine-using-lets-encrypt-for-ingress-ssl/ # 도메인 레코드 세팅 example.com 도메인의 레코드를 gcp lb 의 퍼블릭 아이피(34.111.226.147)로 세팅 # ingress 생성 vim ingress-http.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: istio-ingressgateway namespace: istio-system spec: rules: - http: paths: -.. 2023. 3. 7.
k8s 외부 etcd 클러스터 구성 k8s 외부 etcd 클러스터 구성 https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/setup-ha-etcd-with-kubeadm/ # k8s HA 구성의 두 가지 옵션 ## stacked etcd -> etcd 가 포함된 마스터노드를 다중으로 구성하여 HA 구성 구성이 간편하지만 마스터노드의 수가 늘어남에 따라 etcd 포드도 늘어나는 특징 마스터노드에 etcd 가 포함되어 있기 때문에 마스터노드에 부하 발생 시 etcd 에도 영향 ## external etcd -> 마스터노드 외부에 별도의 etcd 를 구성하여 HA 구성 마스터노드 HA 구성 + etcd HA 구성으로 더 많은 수의 노드가 필요함 마스터노드와 etcd 가 .. 2023. 3. 7.
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.
container multicast 컨테이너 멀티캐스트 # docker ## bridge 네트워크에서 컨테이너 안으로 멀티캐스트 트래픽 수신 불가(k8s와 동일, 포트 매핑해도 안됨) ## 네트워크 타입을 host로 설정 시 멀티캐스트 트래픽 수신 가능 # k8s ## 포드간 멀티캐스트는 weave-net cni 플러그인 배포 시 가능 ## k8s에서도 host 네트워크 사용 시 멀티캐스트 트래픽 수신 가능 yaml 파일 예제 [root@ip-10-0-10-70 ~]# cat centos-deploy.yaml apiVersion: apps/v1 kind: Deployment metadata: name: centos spec: replicas: 2 selector: matchLabels: app: centos template: metadat.. 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.