kubernetes
-
[따배쿠] Pod - init container & infra containerkubernetes 2024. 12. 1. 16:27
Init ContainerMain Container 실행 전에 미리 동작시킬 컨테이너본 Container가 실행되기 전에 사전 작업이 필요할 경우 사용즉, Init Container가 실행되어야, Main Container를 구동시킬 수 있다.예시 1. node.js 이미지로 만들어진 로그인 지원 application을 담당 main container가 있다고 가정한다. 해당 main container에서 로그인을 지원하기 위해서는 db에서 로그인 관련 정보를 가져와야한다. 여기서 db에 접속을 해서 데이터를 가져오는 컨테이너가 init container가 된다.이를 하나의 pod로 만들어 놓으면, init container에서 작업이 성공해야 main container를 동작시킬 수 있다init con..
-
[따배쿠] Pod - liveness Probe를 이용해서 Self-healing Pod 만들기kubernetes 2024. 12. 1. 11:58
Liveness ProbePod가 계속 실행할 수 있게 보장하는 기능쿠버네티스의 self-healing 기능 중 하나self-healing : container가 정상적으로 동작하지 않을 때, 자동으로 restart 보장Pod의 spec에 정의[예시] 해당 예시는, livenessProbe 기능 중 httpGet probe (웹 서비스 기능) 으로 컨테이너가 잘 작동하고 있는지 확인어떻게? 웹 서비스에 http(80포트)로 주기적으로 접속, path는 /(root)응답이 잘 나오면 컨테이너가 잘 작동하는 걸로 판단 Liveness Probe 매커니즘애플리케이션에 따라 liveness probe 방법이 다르다.1. httpGet : 지정한 IP주소, port, path에 HTTP Get 요청을 보내, 해당..
-
[따배쿠] Podkubernetes 2024. 11. 10. 15:22
Pod컨테이너를 실행하는 쿠버네티스 API의 최소 단위쿠버네티스는 컨테이너로 된 응용프로그램을 pod로 배포한다.한 Pod는 애플리케이션의 단일 인스턴스이다. Pod에는 하나 또는 여러 개의 컨테이너가 포함될 수 있다.일반적으로, 한 Pod는 일반적으로 한 컨테이너와 1:1로 연결된다.scale up 하기 위해서 새로운 pod를 생성하고, scale down 하기 위해서 기존 pod를 삭제한다. Pod 생성하기 #방법 1. kubectl run 명령으로 생성 (CLI)root@master:~# kubectl run webserver --image=nginx:1.14 #방법 2. pod yaml을 통해 생성 root@master:~# vi pod-nginx.yamlapiVersion: v1kind: Pod..
-
[따배쿠] namespacekubernetes 2024. 11. 10. 12:59
namespace쿠버네티스의 api 중 하나이며, 클러스터 내에서 리소스를 논리적으로 분리하기 위한 방법쿠버네티스 클러스터 하나를 여러 팀이나 사용자가 함께 공유용도에 따라 실행해야 하는 앱을 구분할 때 사용 ex) prod, dev 등등namespace를 삭제하면 그 안에 있는 pod 등등 다 날아간당 !! 주의 !! 특징리소스 격리namespace를 사용하면 동일한 이름의 리소스(예: Pod, Service 등)를 서로 다른 네임스페이스에서 정의할 수 있습니다. 이를 통해 리소스의 충돌을 방지할 수 있습니다.권한 관리namespace는 RBAC(Role-Based Access Control)과 함께 사용되어 특정 사용자나 그룹이 접근할 수 있는 리소스를 제한할 수 있습니다. 각 네임스페이스에 대해 ..
-
[따배쿠] 쿠버네티스 컨테이너 동작 Flowkubernetes 2024. 11. 9. 18:00
[쿠버네티스 컨테이너 동작 Flow] 동작 흐름User(개발자/운영자)는 필요한 여러 컨테이너를 빌드한다.docker push를 통해 도커 허브에 저장한다.k8s 명령어를 통해, 도커 허브에 있는 이미지를 가지고 컨테이너 실행 요청을 master node에게 보낸다. ex) kubectl create deploy web --image=hub.examle.com/nginxMaster node(컨트롤 플레인)이 요청을 받는다Master node의 REST API server가 Scheduler에게 어떤 노드에 컨테이너를 실행하면 좋을지 질문하고, 응답 받는다.응답받은 노드의 kubelet에 요청을 전달한다. ex) 최적 노드가 node1일 경우 node1의 kubeletkubelet은 받은 요청을 docke..
-
[따배쿠] kubectl commandkubernetes 2024. 11. 9. 16:00
kubectl command** kubectl [명령] [오브젝트]- kubectl get nodes : 노드 정보 불러오기- kubectl get nodes -o wide : 노드 정보 자세히 불러오기- kubectl describe [노드이름] : 노드 정보 더 자세히 불러오기 - kubectl get pod : pod 정보 불러오기- kubectl get pod -o wide : pod 정보 자세히 불러오기- kubectl exec [파드이름] -it -- /bin/bash : pod에 접속- kubectl port-forward [파드이름] [포트]:[포트] : pod 포트 포워딩 - kubectl create deployment [이름] --image=[이미지] : deployment 생성ku..
-
[TroubleShooting] couldn't get current server API g roup list: Get "http://localhost:8080/api?timeout=32s": dial tcp 127.0.0.1:8080:kubernetes/trouble shooting 2024. 11. 9. 14:10
1. 오류 내용azureuser@master:~$ kubectl get podsE1109 05:07:28.258752 4356 memcache.go:265] couldn't get current server API g roup list: Get "http://localhost:8080/api?timeout=32s": dial tcp 127.0.0.1:8080: connect: connection refus..
-
[따배쿠] kubectlkubernetes 2024. 11. 3. 16:50
kubectl쿠버네티스에 원하는 요청을 할 때 쓰는 명령어 kubectl 명령어 기본 구조kubectl [command] [type] [NAME] [flags]ex) kubectl get pod webserver -o wide : 쿠버네티스에 web server pod의 자세한 정보를 요청* [command] : 자원(object)에 실행할 명령 ex) create, get, delete, edit ...* [type] : 자원의 타입 ex) node, pod, service ...* [NAME] : 자원의 이름* [flags] : 부가적으로 설정할 옵션 ex) --help, -o kubectl 명령어kubectl --helpkubectl command --helpkubectl run kubectl c..