본문 바로가기

k8s12

[k8s] Deploy a Django application on kubernetes & HPA test 1.Docker image build & push [git clone] git clone https://github.com/MachDn/django-todo-cicd.git kevin@k8s-master:~$ cd django-todo-cicd/ 연습에 사용할 django 기반 app을 git clone 합니다. [Create Docker image] kevin@k8s-master:~/django-todo-cicd$ docker build -t moveho/django-todo:latest . kevin@k8s-master:~/django-todo-cicd$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE moveho/django-todo latest 8fc05.. 2023. 5. 24.
[k8s] TLS Ingress 생성해서 https로 서비스 하기 1. Namespace 생성 kevin@k8s-master:~$ kubectl create ns testing namespace/testing created kevin@k8s-master:~$ kubectl get ns testing NAME STATUS AGE testing Active 9s kevin@k8s-master:~$ kubectl create deployment nginx-pod --namespace testing --image=nginx:latest --replicas=1 deployment.apps/nginx-pod created kevin@k8s-master:~$ kubectl expose deployment nginx-pod --namespace testing --name=nginx-.. 2023. 5. 3.
[k8s] Deploy & Pod Scale Deploy Kubernetes Deploy는 애플리케이션의 배포를 관리하는 컨트롤러입니다. Deploy를 사용하면 컨테이너 이미지, 리소스 요청, 포트 및 레이블과 같은 애플리케이션 구성을 정의할 수 있습니다. Deploy는 지속적인 배포를 지원하기 때문에, 새로운 버전의 애플리케이션을 배포하거나 업데이트할 때 유용합니다. 새로운 버전의 애플리케이션을 배포할 때, Deploy는 이전 버전의 애플리케이션과 새로운 버전의 애플리케이션을 동시에 유지보수할 수 있습니다. 이를 통해 애플리케이션의 가용성을 유지하면서 업데이트를 수행할 수 있습니다. Deploy의 구성 파일은 일반적으로 YAML 파일로 작성됩니다. 이 파일은 애플리케이션의 구성을 정의하고, 이를 통해 Deploy 컨트롤러가 애플리케이션을 배포하고.. 2023. 4. 24.
[k8s] Persistent Volume 1. PV ( Persistent Volume ) 란? Persistent Volume (PV)은 Kubernetes의 스토리지 추상화로, 이를 사용하는 pod 에서 storage 구성을 분리할 수 있습니다. Persistent Volume 은 Cluster 관리자가 동적으로 프로비저닝하거나 정적으로 구성할 수 있는 클러스터 전체 리소스입니다. Pod 와 Storage 백엔드 사이에 추상화 계층을 제공하여 애플리케이션의 유연성과 이식성을 높일 수 있습니다. 2. Pv 예제 Persistent Volume 구성해보기 * Create a persistent volume with name app-config, of capacity 1Gi and access mode ReadWriteMany * StorageC.. 2023. 4. 20.
[k8s] Resource 사용량 확인을 위한 Metric Server 설치 리소스 사용량 확인을 위해 kubectl top 명령어를 사용하게 되면 metric 서버가 없을 경우 다음과 같은 에러가 발생한다. kevin@k8s-master:~$ kubectl top no error: Metrics API not available 메트릭 서버를 설치하여 해결할 수 있다. 1. Metric Server 설치 # metric-server 설치 kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml 2. 에러 발생시 해결 방법 [에러 1] ( Readiness probe failed: HTTP probe fail ) 아래의 명령어로 metric ser.. 2023. 4. 18.
[k8s] Static Pod Static Pod 의 개념 Kubernetes(K8s)에서 Static Pod는 Kubelet에 의해 관리되는 Pod의 특수한 유형입니다. 이러한 Pod는 정적으로 구성되어 있으며, 일반적으로 Kubernetes API 서버에서 제공하는 Pod Spec이 아니라 kubelet 구성 파일 디렉토리에 위치한 YAML 또는 JSON 파일에 의해 정의됩니다. 경로는 보통 /etc/kubernetes/manifests 에 위치 됩니다. Static Pod 의 특징 Static Pod는 Kubernetes 클러스터를 부트스트래핑하는 데 사용됩니다. 예를 들어, Kubernetes 클러스터의 모든 노드가 사용 가능한 경우, 각 노드의 kubelet에는 클러스터 노드의 상태를 보고하는 Kubernetes API 서버.. 2023. 4. 17.
[k8s] Security Authentication - Who can access Files - Username and Passwords Files - Username and Tokens Certificates External Authentication providers - LDAP Service Accounts Authorization - What can they do? RBAC Authorization (Role Based Access Control)을 이용해 구현될 수 있음 ABAC Authorization (Attribute Based Access Control) Node Authorization Webhook Mode 모든 component(ETCD, kube controller manager, api server, k.. 2023. 4. 10.
[k8s] Cluster Maintenance OS Upgrades software 업그레이드 또는 security patch 등 node를 내려야할 일이 있을 때, 어떻게 안정적으로 클러스터를 유지할까? 노드가 5분(—pod-eviction-timeout) 안에 정상화되지 않을 경우 pod은 종료됨 replicaset 의 pod이었을 경우, 다른 노드에 재생성됨 그냥 pod일 경우 사라지게됨 안전하게 노드를 작업하기 위해, drain을 통해 모든 workload를 다른 노드로 옮길 수 있음 kubectl drain node-1 기존 노드에서 pod들이 종료되고, 다른 노드에서 재생성됨 또한 노드가 cordon되고, unshedulable 로 마크됨 제약을 삭제할 때까지, 아무 pod도 스케줄되지 않음 pod이 다른 노드에서 안전하면, 노드를 reb.. 2023. 4. 8.
[k8s] Application Lifecycle Management Rolling Updates & Rollbacks deployment는 rollout을 trigger하고, 새 rollout은 새 deployment revision을 생성하게 됨 이를 통해 변경을 추적할 수 있고, deployment를 이전 버전으로 롤백할 수 있도록 함 참고: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#updating-a-deployment Deployment Strategy recreate strategy 기존 배포된 application을 모두 삭제하고, 새 버전의 application을 다시 생성하는 방식 삭제 후 새 버전이 생성되는 사이, application이 접근 불가능한 텀이 생길 수 있음 .. 2023. 4. 7.
[k8s] kubernetes Scheduling Manual Scheduling 원하는 node를 지정할 수 있음. https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodename apiVersion: v1 kind: Pod metadata: name: nginx spec: containers: - name: nginx image: nginx nodeName: kube-01 nodeName 속성 추가 생성 후 assign 은 불가 ⇒ 필요시 Binding object를 생성해(kind: Binding) api post 로 요청해야 함 Label & Selectors object 를 group화하고, 선택할 때 사용 apiVersion: v1 kind: Pod metada.. 2023. 4. 5.