이세개발
article thumbnail
쿠버네티스 02-04 Controller_Job
Infra/Kubernetes 2023. 9. 6. 16:50

쿠버네티스에서 Job은 한 번 실행되면 완료되는 작업을 수행하는 Pod를 생성하고 관리합니다. Job은 배치 작업, 크론 작업 등에 유용하게 사용될 수 있습니다. myapp-job.yaml: 이 Job은 Perl 스크립트를 실행하는 Pod를 생성하며, 스크립트는 원주율의 첫 1000자리를 계산합니다. Pod가 실패할 경우 재시작 정책은 'OnFailure'로 설정되어 있습니다. apiVersion: batch/v1 kind: Job metadata: name: myapp-job spec: template: metadata: labels: app: myapp-job spec: restartPolicy: OnFailure containers: - name: pi image: perl comma..

article thumbnail
쿠버네티스 02-03 Controller_Daemonset
Infra/Kubernetes 2023. 9. 6. 16:50

쿠버네티스에서 DaemonSet은 클러스터의 모든 노드에 특정 Pod를 실행하도록 보장하는 역할을 합니다. 이는 로깅, 모니터링 등의 노드 수준의 기능을 구현하는 데 유용합니다. 다음은 myapp-ds라는 이름의 DaemonSet를 생성하는 myapp-ds.yaml 파일입니다. 이 DaemonSet은 app 레이블의 값이 myapp-ds인 Pod를 클러스터의 모든 노드에 배포하도록 설정되어 있습니다. 또한, nodeSelector를 사용하여 node 레이블의 값이 development인 노드에만 Pod를 배포하도록 설정되어 있습니다. apiVersion: apps/v1 kind: DaemonSet metadata: name: myapp-ds spec: selector: matchLabels: app: m..

article thumbnail
쿠버네티스 02-02 Controller_Replicaset
Infra/Kubernetes 2023. 9. 6. 16:49

쿠버네티스에서 ReplicaSet은 지정된 수의 Pod 복제본이 항상 실행되도록 보장하는 역할을 합니다. 이는 ReplicationController와 비슷하지만, 더욱 유연한 Pod 선택 기능을 제공합니다. 다음은 myapp-rs-exp라는 이름의 ReplicaSet를 생성하는 myapp-rs-exp.yaml 파일입니다. 이 ReplicaSet는 app 레이블의 값이 myapp-rs-exp이며, env 레이블이 존재하는 Pod를 3개 유지하도록 설정되어 있습니다. apiVersion: apps/v1 kind: ReplicaSet metadata: name: myapp-rs-exp spec: replicas: 3 selector: matchExpressions: - key: app operator: In..

article thumbnail
쿠버네티스 02-01 Controller_Replication
Infra/Kubernetes 2023. 9. 6. 16:49

쿠버네티스에서 ReplicationController는 지정된 수의 Pod 복제본이 항상 실행되도록 보장하는 역할을 합니다. 이는 Pod의 수를 수동으로 조절하는 것이 아니라, 지정된 수의 Pod가 항상 실행되도록 자동으로 조절합니다. 다음은 myapp-rc라는 이름의 ReplicationController를 생성하는 myapp-rc.yaml 파일입니다. 이 ReplicationController는 myapp-rc 레이블이 부착된 Pod를 3개 유지하도록 설정되어 있습니다. apiVersion: v1 kind: ReplicationController metadata: name: myapp-rc spec: replicas: 3 selector: app: myapp-rc template: metadata: ..

article thumbnail
쿠버네티스 01-05 Pod_Lifecycle
Infra/Kubernetes 2023. 9. 6. 16:49

쿠버네티스에서 Pod의 상태를 체크하고 관리하기 위해 사용하는 메커니즘 중 하나가 Probe입니다. Probe는 컨테이너가 정상적으로 동작하고 있는지 확인하는 방법을 제공합니다. 쿠버네티스는 세 가지 종류의 Probe를 제공하는데, 그 중 두 가지인 StartupProbe와 LivenessProbe에 대해 알아보겠습니다. myapp-pod-startup.yaml: 이 Pod는 StartupProbe를 사용하여 애플리케이션이 시작되었는지 확인합니다. StartupProbe는 애플리케이션이 시작되기 전에는 실패해도 괜찮습니다. 애플리케이션이 시작되면 성공해야 합니다. apiVersion: v1 kind: Pod metadata: name: myapp-pod-startup spec: containers: - ..

article thumbnail
쿠버네티스 01-04 Pod_Namespace
Infra/Kubernetes 2023. 9. 6. 16:48

쿠버네티스에서 네임스페이스(Namespace)는 클러스터 내의 리소스를 논리적으로 분리하여 관리하는 방법을 제공합니다. 네임스페이스를 사용하면 팀, 프로젝트, 환경(예: dev, qa, prod) 등에 따라 리소스를 분리할 수 있습니다. 다음은 myapp-pod이라는 이름의 Pod를 생성하는 두 가지 YAML 파일입니다. 첫 번째 파일에서는 Pod가 development 네임스페이스에 생성되도록 지정하였습니다. 두 번째 파일에서는 네임스페이스를 지정하지 않았으므로, Pod는 기본적으로 default 네임스페이스에 생성됩니다. # myapp-pod-ns.yaml apiVersion: v1 kind: Pod metadata: name: myapp-pod namespace: development spec: c..

article thumbnail
쿠버네티스 01-03 Pod_annotation
Infra/Kubernetes 2023. 9. 6. 16:47

쿠버네티스에서 주석(Annotation)은 사용자가 오브젝트에 부착하여 임의의 비-식별 정보를 저장하는 데 사용할 수 있는 키-값 쌍입니다. 주석은 레이블과 달리 식별 용도로 사용되지 않으며, 대신 오브젝트의 설명, 필드의 사용 방법 등의 정보를 저장하는 데 사용됩니다. 다음은 myapp-pod-annotation이라는 이름의 Pod를 생성하는 myapp-pod-annotation.yaml 파일입니다. 이 Pod에는 devops-team/developer: "John Smith"라는 주석이 부착되어 있습니다. apiVersion: v1 kind: Pod metadata: name: myapp-pod-annotation annotations: devops-team/developer: "John Smith"..

article thumbnail
쿠버네티스 01-02 Pod_label
Infra/Kubernetes 2023. 9. 6. 16:47

쿠버네티스에서 레이블(Label)은 사용자가 오브젝트를 식별하기 위해 부착하는 키-값 쌍입니다. 레이블을 사용하면 사용자가 자신의 리소스를 구성하고 관리하는 데 유용한 방식으로 오브젝트를 선택하고 조직화할 수 있습니다. 다음은 myapp-pod-label이라는 이름의 Pod를 생성하는 myapp-pod-label.yaml 파일입니다. 이 Pod에는 env: dev와 tier: frontend라는 두 개의 레이블이 부착되어 있습니다. apiVersion: v1 kind: Pod metadata: name: myapp-pod-label labels: env: dev tier: frontend spec: containers: - name: myapp image: ghcr.io/c1t1d0s7/go-myweb:..

article thumbnail
쿠버네티스 01-01 Pod
Infra/Kubernetes 2023. 9. 6. 15:02

쿠버네티스(Kubernetes)는 컨테이너화된 애플리케이션을 배포, 확장, 관리하기 위한 오픈소스 플랫폼입니다. 이 플랫폼을 사용하면 애플리케이션을 빠르게 배포하고, 확장성을 보장하며, 새로운 기능을 빠르게 추가할 수 있습니다. Pod 쿠버네티스(Pod)는 쿠버네티스 클러스터에서 실행되는 가장 작은 배포 단위입니다. Pod는 하나 이상의 컨테이너 그룹을 포함하며, 공유된 네트워크 네임스페이스와 저장소를 가지고 있습니다. Pod 내의 컨테이너는 동일한 호스트에서 실행되며, 같은 네트워크 인터페이스와 로컬 호스트를 공유합니다. 여기서는 myapp-pod.yaml이라는 쿠버네티스 매니페스트 파일을 사용하여 myapp-pod라는 이름의 Pod를 생성하고 관리하는 방법에 대해 설명하겠습니다. apiVersion:..

article thumbnail
containerd, kubernetes 설치하기 feat. Arm , Troubleshooting
Infra/Kubernetes 2023. 9. 5. 00:01

뻘짓 기록 *OCI(Oracle Cloud Infrastructure) *에서 쿠버네티스클러스터를 구현하여 사용하고 있었다. docker와 k8s 1.23 버전으로 클러스터를 구성하여 사용중에, 최신버전의 k8s를 사용해야 할 일이 생겼다. 설치를 하면서 여러 오류와 마주쳤다.. 어떤 이유에서인지 모르게 1.26 최신버전을 설치하면 *kube-apiserver *가 계속 꺼지는 오류 가 발생 여러버전을 설치, 삭제 인스턴트 초기화 등을 반복하며 여러 방법으로 설치를 실행 및 반복 k8s 1.23, docker 조합에서 오류가 나지 않고 정상작동 확인, 계속 설치, 삭제를 반복하며 문제는 CRI(Container Runtime Interface) 의 종류에 관련이 있는것으로 확정. 범용적으로 많이 사용하는..