본문 바로가기

ubuntu52

[k8s] Pod Scheduling Node selector란? Worker node에 할당된 label을 이용해 node를 선택 node label 설정 kubectl label nodes = kubectl label node1.example.com gpu=true kubectl get nodes -L definition apiVersion: v1 kind: Pod metadata: name: tensorflow-gpu spec: containers: - name: tensorflow image: tensorflow/tensorflow:nightly-jupyter ports: - containerPort: 8888 protocol: TCP nodeSelector: gpu: "true" [ Hands - on ] node2에 gpu=tru.. 2023. 2. 6.
[K8s] Multi-master - HA Kuberenetes cluster 운영 K8s cluster를 직접 구성하는 도구 kubeadm K8s에서 공식 제공하는 cluster 생성/관리 도구 kubespray K8s cluster를 배포하는 오픈 소스 프로젝트 다양한 형식으로 k8s cluster 구성 가능 On-premise에서 상용 서비스 cluster 운영 시 유용 K8s cluster 구성 Control plane(master node) worker node 들의 상태를 관리하고 제어 High Available(HA) cluster 운영 API는 loadbalancer를 통해 worker node에 노출 최소 3개의 중첩된 control plane을 구성(5,7개의 master nodes) Worker node container를 동작하며 실제 서비스를 제공 Highly A.. 2023. 1. 30.
[k8s] Secret Secret이란? Container가 사용하는 password, auth token, ssh key와 같은 중요한 정보를 저장 민감한 구성 정보를 base64로 인코딩해서 한 곳에 모아서 관리 Secret 데이터 전달 방법 Command-line Argument Environment Variable Volume Mount Available command에 따라 들어가는 옵션이 달라짐 docker-registry : create a secret for use with a Docker registry generic : create a secret from a local file, directory or literal value tls : create a TLS secret type Opaque : 임의의 사.. 2023. 1. 25.
[K8s] ConfigMap ConfigMap이란? 구성 설정이나 환경 설정 정보들을 한 곳에 모아서 관리해주는 API 단, value는 1MiB를 초과할 수 없음 ConfigMap 생성 Configmap 생성 kubectl create configmap ttabae-config --from-literal=INTERVAL=2 --from-literal=OPTION=BOY --from-file=config.dir/ Configmap 확인 kubectl get configmaps ttabae-config NAME DATA AGE ttabae-config 3 77s kubectl describe configmaps ttabae-config Name: ttabae-config Namespace: default Labels: Annotati.. 2023. 1. 16.
[k8s] Canary Deployment Pod를 배포(업데이트)하는 방법 Blue, Green update Canary update Rolling update Canary 배포란? 기존 버전을 유지한 채로 일부 버전만 신규 버전으로 올려서 신규 버전에 버그나 이상은 없는지 확인 definition apiVersion: apps/v1 kind: Deployment metadata: name: mainui-canary spec: replicas: 1 selector: matchLabels: app: mainui version: canary template: metadata: labels: app: mainui version: canary spec: containers: - name: mainui image: nginx:1.15 ports: - c.. 2023. 1. 9.
[K8s] Annotation Annotation이란? Label과 동일하게 key-value를 통해 리소스의 특성을 기록 kubectl describe command로 확인 가능 K8s에게 특정 정보를 전달할 용도로 사용 Deployment의 rolling update 정보 기록 annotations: kubernetes.io/change-cause: version 1.15 관리를 위해 필요한 정보를 기록할 용도로 사용 release, logging, monitoring에 필요한 정보들을 기록 annotations: builder: “intae Yoon (intae.yoon@gmail.com)"" buildDate: “20220609" imageRegistry: definition apiVersion: v1 kind: Pod met.. 2023. 1. 3.
[k8s] Label Label이란? Node를 포함하여 pod, deployment 등 모든 리소스에 할당 리소스의 특성을 분류하고, Selector를 이용해서 선택 Key-value 한 쌍으로 적용 worker node의 특성을 label로 설정하여 node를 선택해서 pod를 배치할 수 있음 Label definition metadata: labels: rel: stable name: mainui Selector definition selector: matchLabels: key: value matchExpressions: - {key: name, operator: In, values: [mainui]} - {key: rel, operator: NotIn, values: ["beta","canary"]} [ Hands .. 2022. 12. 29.
[K8s] Ingress 개념 및 Ingress Controller 설치, 활용 Ingress API란? HTTP나 HTTPS를 통해 클러스터 내부의 서비스를 외부로 노출 기능 Service에 외부 URL을 제공 트래픽을 로드밸런싱 SSL 인증서 처리 Virtural hosting을 지정 Ingress controller 동작 방식 Nginx Ingress controller 설치 Installation Guide - NGINX Ingress Controller 참고 kubectl apply -f 설치 확인 kubectl get pod --namespace ingress-nginx NAME READY STATUS RESTARTS AGE ingress-nginx-admission-create-qxcsn 0/1 Completed 0 99s ingress-nginx-admission-pa.. 2022. 12. 19.