본문 바로가기

클라우드159

[kubernetes] 쿠버네티스 트러블슈팅( 마스터, 컨트롤 플레인 오류 시 확인) 안녕하세요 오늘은 쿠버네티스 컨트롤 플레인의 오류가 발견됐을 떄 어떻게 해결하는 지에 대한 확인 방법을 알아보려고합니다. 먼저 노드 상태를 확인해야겠죠? kubectl get node 를 통해 노드의 상태 status를 확인합니다. 또한 더 자세한 정보를 알기 원하신다면 -o wide 를 넣어 버전과 아이피를 커널버전도 확인 가능합니다. 다음으론 kubectl get po -n kube-system 으로 kube-system의 포드가 정상 실행 중인지 확인합니다. service kube-apiserver status service kube-controller-manager status service kube-scheduler status service kube-proxy status service kub.. 2020. 12. 10.
쿠버네티스 ) Jsonpath / CLI로 정보출력하기 kubectl을 사용하면서 Jsonpath로 정보를 가져오는 방법에 대해 논해보려고 합니다. 보통 kubectl을 사용하면 리스트를 뽑을 때 kubectl get [오브젝트 이름] 을 사용하여 리스트를 출력하고 자세한 출력을 위해 kubectl get [오브젝트 이름] -o wide 와 같이 사용하게 됩니다. 특정 네임스페이스에 파드를 출력은 kubectl get po -n [네임스페이스] 를 사용하며 해당 파드 또는 오브젝트의 yaml, json 형식으로 보고 싶다면 kubectl get [object_name] -o [ yaml/json ] 을 이용해보세요. 간단하게 출력하는것을 알아보았는데 json의 정보를 출력을 하면 복잡하게 나와 가독성이 부족하게 됩니다. 이번에 jsonpath를 사용하여 필요.. 2020. 6. 24.
Minikube 설치하기 2 우분투 사전작업 2020/02/05 - [운영체제/리눅스] - Docker CE버전 설치하기 우분투 2020/02/05 - [클라우드/Kubernetes] - Minikube 설치하기 1 (kubectl 설치) 우분투 를 수행하고 아래를 따라하자. 1. 도커 확인 docker -v 2. minikube설치 curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 3.실행 minikube start --vm-driver=none 설치 완료 2020. 2. 7.
Minikube 설치하기 1 (kubectl 설치) 우분투 2020/02/05 - [운영체제/리눅스] - Docker CE버전 설치하기 우분투 Docker CE버전 설치하기 우분투 ubuntu16,ubuntu18 버전에 docker ce를 설치해보겠습니다. 1.확인 docker -v apt list docker docker-engine docker.io ' 2 . apt update apt update 3. apt install apt install apt-transport-https ca-certif.. base-on.tistory.com 미니쿠베를 설치하기위해서 기존에 docker를 설치해야한다. 이후 시작해보자 1. 설치하기 curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -.. 2020. 2. 5.
쿠버네티스 모니터링 모니터링 쿠버네티스에 모니터링을 보면 많은 툴과 지표들이 있어서 혼돈하기 쉬운데 , 먼저 모니터링 컨셉에 대한 이해를 할 필요가 있다. 쿠버네티스 기반의 시스템을 모니터링하기 위해서는 크게 1. host, 2. container, 3. app, 4. kubernetes 4가지를 모니터링 해야 한다. 1. host : 쿠버네티스 컨데이너를 실행하는 하드웨어 호스트 , 노드에 대한 지표 모니터링이 필요하다. 노드의 cpu , 메모리, 디스크, 네트워크, 사용량과 노드 os와 커널에 대한 모니터링 2. container : 노드에 기동되는 각각의 컨테이너에 대한 정보이다. 컨테이너의 CPU,메모리, 디스크, 네트워크 사용량을 모두 모니터링한다. 3. application : 컨테이너에서 구동되는 개별 어플리케.. 2020. 2. 4.
쿠버네티스 Secret Secret configMap 일반적인 환경 설정이나 CONFIG정보를 저장하도록 디자인 되었다면 보인이 중요한 패스워드나 API키 인증서 파일들은 Secret에 저장할 수 있다. Secret은 안에 저장된 내용을 지키기 위하여 추가적인 보안기능을 제공한다. secret의 값들은 etcd에 저장될때 암호화 된 형태로 저장되고 API server나 node의 파일에는 저장되지 않고 항상 메모리에 저장되어 있기 때문에 상대적으로 접근이 어렵다. 하나의 secret의 사이즈는 최대 1M까지 지원되는데, 메모리에 지원되는 특성 때문에 secret을 여러개 저장하게 되면 APIserver나 노드에서 이를 저장하는 kubelet의 메모리 사용량이 늘어나서 out of memory와 같은 이슈가 발생할 수 있다. 그.. 2020. 1. 28.
쿠버네티스 configMap configMap 배포하다 보면 환경에 따라서 설정값을 사용하는 경우가 있다. 예를 들어, 데이터베이스의 IP API를 호출하기 위한 API KEY, 운영 개발에 따른 디버그 모든 , 환경 설정 파일들이 있는데, 애플리케이션 이미지는 같이ㅈ만, 이런 환경변수가 차이나는 경우 매번 다른 컨테이너 이미지를 만들어야하는 불편함을 초래한다. 이러한 것을 극복하기 위해 환경변수나 설정값들을 변수로 관리하여 pod가 생성될때 이 값을 넣어 줄수 있는데, 이러한 기능을 제공하는 것이 바로 configMap,Secret이다. pod를 배포할때마다 다른 설명 정보를 반영하도록 할 수 있다. pod로 넘기는 방법 1. 정의해 놓은 pod값의 환경변수로 넘기는 방법 2. 정의해 놓은 값을 pod의 디스크 볼륨으로 마운트하는.. 2020. 1. 16.
쿠버네티스 Healthcheck apiVersion: v1 kind: Pod metadata: name: liveness-pod spec: containers: - name: liveness image: gcr.io/terrycho-sandbox/liveness:v1 imagePullPolicy: Always ports: - containerPort: 8080 livenessProbe: exec: command: - cat - /tmp/healthy initialDelaySeconds: 5 periodSeconds: 5 ​ metadata: name: readiness-rc spec: replicas: 2 selector: app: readiness template: metadata: name: readiness-pod labels: .. 2020. 1. 13.
쿠버네티스 Ingress Ingress 쿠버네티스는 4Layer로 TCP단에서 Pod들을 밸런싱한다. 서비스 같은경우에는 SSL, VirtualHost와 같이 여러 호스트 명을 사용하거나 호스트명에 대한 라우팅이 불가능하고, URL Path에 따른 서비스간 라우팅이 불가능하다. 또한 마이크로 서비스 아키텍쳐(MSA)같은 경우 쿠버네티스의 서비스하나가 MSA의 서비스로 표현되는 경우가 많고 서비스는 하나의 URL로 대표되는 경우가 많다. MSA서비스간의 라우팅을 하기위해서는 API게이트웨이를 넣는 경우가 많은데, 이 경우에는 API 게이트웨이에대한 관리포인트가 생기기 때문에 URL 기반의 라우팅 정도라면 API 게이트 웨이 처럼 무거운 아키텍처 컴포넌트가 아니라 L7 로드벨런서 정도로 위의 기능을 모두 제공가능하다. 쿠버네티스 H.. 2020. 1. 13.
쿠버네티스 서비스 쿠버네티스 서비스란 Pod는 IP가 랜덤하게 지정하되고 restart가 될때마다 변하기때문에 고정된 엔트포인트를 호출이 어렵다. 여러 pod를 운영할 때 Pod 간의 로드밸런싱을 지원해줘야하는데 , 서비스가 이런 역할을 한다. 서비스는 지정된 IP로 생성, 여러 Pod를 묶어 로드 밸런싱, 고유 DNS값을 가질 수 있게해준다. 서비스는 라벨 셀렉터를 이영하여 관리하고자 하는 Pod를 정의할 수 있다. 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 apiVersion: v1 kind: Service metadata: name: hello-node-svc spec: selector: app: hello-node ports: - port:.. 2020. 1. 10.
쿠버네티스 불륨설명 쿠버네티스에 볼륨은 다양한 볼륨을 지원한다. 로컬,NFS, iSCSI, Fiber Channel에 일반적인 외장 디스크, 오픈소스(GlusterFS나, Ceph), 퍼블릭클라우드 볼륨(AWS EBS, GCP Persistent) 자세한내용 보기 https://kubernetes.io/docs/concepts/storage/volumes/#types-of-volumes 파드에 들어가는 볼륨이기 떄문에 파드안에 있는 컨테이너는 서로 공유가능하다. 볼륨의 종류에는 3개지가 있다. Temp : emptyDir pod의 생성,삭제주기와 같은 볼륨이다. 파드안에 컨테이너가 죽어도 파드는 죽이 않아서 볼륨이 살아있다는 장점이 있다. emptyDir.medium 필드를 통해 지정된다. Pod에 nginx와 redis .. 2020. 1. 10.
쿠버네티스 구조 크게 2가지로 구분한다 마스터, 노드(미니안 또는 워커) 마스터 : 쿠버네티스 클러스터 전체를 컨트롤하는 역활로 API서버,스케줄러,컨트롤러 매니저, etcd 로 구성되어 있다. API서버(명령, 통신 관련): 모든 명령과 통신을 API를 통해서 한다. 모든 기능은 REST API로 제공하고 그에 따른 명령을 처리 Etec (정보 저장): 클러스터의 데이터베이스 역할로 서버로 설정값이나 클러스터의 상태를 저장한다. -> 분산형 키/벨류 형식이고 오픈소스이다. 빠른 응답과 신뢰성등의 장점이 있다. 스케줄러(리소스들을 할당할지 선정): 파드나 서비스들을 적절한 노드에 저장하게 정리해주는 역할 컨트롤러 매니져(RC,SC,VC,NC 관리): Replica controller, Service controller,.. 2020. 1. 8.
반응형