반응형

Pod 자동 배포 멈추는 방법

*Deployment YAML를 통해 배포한 Pod를 멈추는 방법 입니다.

*alias k=kubectl

 

아래 코드를 순서대로 진행하면 됩니다.

k get deployment -n <namespace>
k edit deployment <deploymnent name> -n <namespace>
>> 내부 안에 spec.replicas 에 숫자를 0으로 변경해주고 저장해줍니다.

// 파드가 terminate 되었는지 확인
k get pod -n <namespace>

 

반응형
반응형

파드 이름에 해시 값 제거

Deployment로 배포 시 파드 뒤에 붙는 해시 값 제거 불가능합니다.

Kind Pod로 배포해야 해시 값을 제거할 수 있습니다.

 

예시

# test-pod.yaml

apiVersion: v1
kind: Pod
metadata:
  name: test-pod
  namespace: test
spec:
  containers:
  - name: test-pod
    image: test-pod:latest
    imagePullPolicy: IfNotPresent
반응형
반응형

PV

PV 예시

# pv-definition.yml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: mariadb-pv
spec:
  capacity:
    storage: 10Gi
  volumeMode: Filesystem # 파일 시스템 형식
  accessModes:
    - ReadWriteOnce # 3가지 옵션 중 선택 (ReadWriteMany, ReadOnlyMany, ReadWriteOnce)
  storageClassName: manual # StorageClass 이름
  persistentVolumeReclaimPolicy: Delete
  hostPath:
    path: /tmp/k8s-pv # 스토리지를 연결할 Path
반응형
반응형

Mac에서 Kubernetes 설치

*환경

- Mac m2

 

설치 방법

*Kubernetes는 Docker Desktop, Minikube, k3s 등으로 설치가 가능한데 Docker Desktop으로 진행

 

1. OS에 맞게 Docker Desktop 설치

https://www.docker.com/products/docker-desktop/

 

2. Docker Desktop에서 제공하는 kKubernetes 실행

 

반응형
반응형

[Kubernetes]Node Not Ready 분석 및 해결

 

  1. Node 상태 확인
    1. 명령어
      1. kubectl describe node {nodename} 
    2. 상태 확인은 Conditions의 Type에 Message를 보면됩니다.
  2. kubectl get pods -n kube-system -o wide를 통해 coredns 파드 상태를 확인*현재 STATUS가 Running으로 문제가 없는 상태인데, Node 는 NotReady 상태
    1. kubectl get pods -n kube-system -o wide
  3. NotReady인 노드에서 Kubelet 상태 확인 및 재시작
    1. journalctl -u kubelet
    2. systemctl restart kubelet
  4. NotReady인 노드에서 container runtime 상태 확인 및 재시작
    1. systemctl status containerd
    2. systemctl restart containerd
  5. Master Node에서 Node 상태 확인
    1. kubectl get node
반응형
반응형

[Kubernetes]Node, Pod, Container 리소스 사용량 확인

**k8s cpu 는 Milicore (1,000 Milicore = 1 Core)로 표시합니다. Memory 는 Mbyte

 

[Node 사용량]

  • kubectl top node <node-name>

[Pod 사용량]

  • kubectl top pod <pod-name> -n <namespace> --containers --use-protocol-buffers

[Pod 내부 Container 별 사용량]

  • kubectl top pod —containers=true
반응형

'Kubernetes' 카테고리의 다른 글

[Kubernetes]Mac에서 Kubernetes 설치  (0) 2024.12.09
[Kubernetes]Node Not Ready 분석 및 해결  (0) 2024.11.04
kubernetes yaml 분석  (1) 2024.10.07
Pod에 붙어 있는 PV 확인  (0) 2024.09.11
kubectl 자동 완성  (0) 2024.09.06
반응형

[Apache Kafka]kubernetes + helm 통해 Apache Kafka 설치 방법

*helm 이 설치되어 있습니다.

 

Strimzi Operator 설치

# 앞에 $ 부분은 뻈습니다.

# 1. namespace 생성
kubectl create namespace kafka

# 2. repo 생성
helm repo add strimzi https://strimzi.io/charts/
helm show values strimzi/strimzi-kafka-operator

# operator 설치
helm install kafka-operator strimzi/strimzi-kafka-operator --version 0.38.0 --namespace kafka

# 배포된 리소스 확인
kubectl get deploy,pod -n kafka

# operator가 지원하는 kafka 버젼 확인
kubectl describe deploy -n kafka | grep KAFKA_IMAGES: -A3

 

 

Kafka cluster 설치

*kafka 설치 전에 Strimzi 버젼 별로 설치 가능한 kafka를 확인해야 합니다. 아래 주소를 통해 확인합니다.

https://strimzi.io/downloads/

 

Downloads

Downloads Strimzi releases are available for download on our GitHub. The release artifacts contain documentation and example YAML files for deployment on Kubernetes.

strimzi.io

 

# Kafka cluster YAML 파일 다운로드
curl -s -O https://raw.githubusercontent.com/gasida/DOIK/main/strimzi/kafka-1.yaml

# kafka 배포
kubectl apply -f kafka-1.yaml -n kafka

# 배포된 리소스 확인
kubectl get all -n kafka

 

 

 

 

반응형
반응형

kubernetes   yaml 분석

#apiVersion: 이 오브젝트를 생성하기 위해 사용하고 있는 쿠버네티스 API 버전 설정.
apiVersion: apps/v1
#kind: 어떤 종류의 오브젝트를 생성하는지 설정.
#Deployment: ReplicaSet 을 관리하는 controller.
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: tuba-metric-collector #Deployment의 label
  name: tuba-metric-collector #Deployment의 이름
  namespace: dev
#spec: 각 컴포넌트에 대한 자세한 설명과 어떤 오브젝트 종류인지에 따른 내용 설정.
spec:
	#replicas: 유지하고자 하는 Pod 의 갯수.
  replicas: 2
	#selector: 관리하고자 하는 Pod 를 선택.
  selector:
    matchLabels:
      app: tuba-metric-collector
  strategy: {}
	#template: 관리되고자 하는 Pod 에 대해 정의하는 필드.
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: tuba-metric-collector
    spec:
      containers:
      - image: harbor.vista.astellu.com/tuba-dev/tuba-metric-collector:latest
        imagePullPolicy: Always
        name: tuba-metric-collector
        ports:
        - containerPort: 8080
        resources: {}

        env:
        - name: TUBA_SETTING_FILENAME
          value: "setting.yml"
        - name: TUBA_KAFKA_CONSUMER_TOPIC
          value: "tuba-meta-topic"
        - name: TUBA_KAFKA_CONSUMER_GROUP
          value: "oper2-mc-netapp"
        - name: TUBA_KAFKA_CONSUMER_EXPIRYTIME
          value: "120000"
      imagePullSecrets:
        - name: harbor
#status: 쿠버네티스가 자동으로 생성, 자신이 원하는 상태가 되도록 현재 상태를 설정.
status: {}
---
apiVersion: v1
kind: Service
metadata:
  name: tuba-metric-collector
  namespace: dev
spec:
  selector:
    app: tuba-metric-collector
  ports:
    - port: 8080
      targetPort: 8080
      nodePort: 32008
  type: NodePort
반응형

+ Recent posts