일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- MLflow
- tekton
- seldon core
- 카오스 엔지니어링
- opensearch
- nginx ingress
- argocd
- Argo
- Pulumi
- argo rollout
- keda
- opentelemetry
- Model Serving
- mlops
- serving
- CANARY
- gitea
- Kubernetes
- CI/CD
- kubernetes operator
- gitops
- Kopf
- 오퍼레이터
- Litmus
- Kubeflow
- Continuous Deployment
- blue/green
- operator
- knative
- Kubernetes 인증
- Today
- Total
목록Kubernetes/일반 (55)
Kubernetes 이야기
Kubectl는 Kubernetes에서 엔지니어들이 가장 많이 사용하는 도구일 것이다. Kubectl에서 자주 사용되는 명령어들을 알아보자. 명령 자동 완성 명령 자동 완성을 사용하면 Tab 키를 사용하여 kubectl 명령의 개별 부분을 자동 완성할 수 있다. 자동 완성을 위해서는 .bashrc 파일에 아래를 추가한다. source pod.yaml Service 생성 kubectl expose pod mypod \ --port=80 \ --name mypod-service \ --type=NodePort \ --dry-run=client -o yaml > mypod-service.yaml deployment 생성 kubectl create deployment mydeployment \ --image=n..
Deployment나 ReplicaSet으로 Pod를 여러개 생성하는 경우 Service 를 이용하여 Load Balancer 하도록 설정한다. Service는 Label을 사용하여 트래픽을 라우팅할 Pod를 선택하는 Kubernetes 추상화이다. 아래와 같은 Service 를 만든 경우 apiVersion: v1 kind: Service metadata: labels: app: production name: production namespace: test spec: ports: - name: http port: 80 protocol: TCP targetPort: 8080 selector: app: production type: ClusterIP 생성된 서비스의 상세정보를 보면 아래와 같다. # k d..
기본적으로 Pod는 kube-dns 서비스에 쿼리를 보냅니다 . Pod의 /etc/resolv.conf 에 nameserver가 자동으로 세팅된다. # cat /etc/resolv.conf search test.svc.cluster.local svc.cluster.local cluster.local nameserver 10.96.0.10 options ndots:5 Kubernetes 클러스터에서 DNS를 구현하는 가장 일반적인 방법은 서비스 추상화를 사용하는 것이다. 기본적으로 서비스 추상화는 DNAT를 사용하여 Service ClusterIP로 들어오는 요청을 DNS Pod로 균형을 맞추는 iptables 규칙 집합이다. 이 메커니즘은 conntrack 모듈을 사용하여 커널에서 처리된다. Linux ..
Helm Chart등으로 Application을 설치 후 삭제 시 일부 pod가 terminating 상태로 삭제안되는 경우가 간혹 발생한다. 사유는 pod가 참조하고 있는 객체가 존재하기 때문일 수 있다. 먼저 Finalizers에 대해 알아보자. 우리가 간한단 configmap을 한번 만들어보자. # echo -n "name=admin" > env.properties # kubectl create configmap myconfig --from-env-file=env.properties configmap/myconfig created 생성된 configmap 을 확인해 보자. # k get cm myconfig -o yaml apiVersion: v1 data: name: admin kind: Conf..
네트워크 패킷을 관찰하기 가장 좋은 방법 중 하나는 tcpdump이다. 포드에서 TCP 트래픽 캡처를 수행하고 캡처를 조회할 수 있는 방법을 살펴보자. Pod에 Tcpdump 툴 설치하는 방법 연결 문제가 있는 포드에 접속해 보자. # k exec -it -n test sampleapp-6c65c5cdb7-mplj4 -- /bin/bash 다음과 같이 tcpdump 를 설치한다. # apt-get update && apt-get install tcpdump Alpine Linux인 경우에는 다음의 명령을 수행한다. # apk add tcpdump 캡처 # tcpdump -s 0 -vvv -w /capture.cap # tcpdump -s 0 -vvv -w /capture.cap tcpdump: liste..
Pod의 상태를 보니 아래와 같이 ContainerCreating 상태였다. Pod상태 # k get po -n test NAME READY STATUS RESTARTS AGE sampleapp-6c65c5cdb7-djktc 1/1 Running 0 33d sampleapp-7c56d989f9-zvh5c 0/1 ContainerCreating 0 2m51s 에러 메시지 아래와 같이 FailedMount : no space left on device 오류 이벤트가 발생한다. ## k describe pod -n test sampleapp-7c56d989f9-zvh5c Name: sampleapp-7c56d989f9-zvh5c Namespace: test ... Status: Pending IP: IPs: ..