반응형

Kubernetes 33

Kubevirt

Kubervirt는 Kubernetes의 CRD를 통해 VM 및 VM 집합에 대한 리소스 유형을 추가해 Kubernetes를 확장한다. Kubervirt를 사용하면 kubernetes platform을 사용해 애플리케이션 container와 vm을 나란히 실행하고 관리할 수 있다. kubervirt의 가장 큰 이점은 기본적은 Kubernetes 기능이 vm에도 적용된다는 점이다. 기본적인 kubernetes 기능 scheduling storage networking monitoring Orchestration KubeVirt 구성 요소 Custom Resource Definitions VM에 대한 CRD는 Virtual Machine Instanche에 대한 사양을 포함한다. VM은 Running/not..

Kubernetes 2022.01.12

failed to create listener: failed to listen on 127.0.0.1:10257: listen tcp 127.0.0.1:10257: bind: address already in use

⚠️ kubernetes controller-manager가 실행되지 않고, CrashLoopBackOff 상태가 지속된다. 로그를 찍어보니 "failed to create listener: failed to listen on 127.0.0.1:10257: listen tcp 127.0.0.1:10257: bind: address already in use" 에러가 났다. 아래의 명령어를 통해 서비스가 이미 바인딩되어 해당 포트를 사용하지 못하는 것을 확인했다. 10257을 종료하고 kubelet 서비스를 다시 시작했더니 controller-manager가 정상적으로 Running 상태가 되었다. $ netstat -lutpn | grep 10257 tcp 0 0 127.0.0.1:10257 0.0.0...

Kubernetes 2022.01.11

dial tcp <master node address>:6443 : connect: no route to host

worker node에서 kubeadm join을 실행했는데, 로그가 더 이상 나오지 않고 Running pre-flight checks에만 멈추어 있었다. kubeadm join --v=2 명령어를 통해 오류의 원인을 알아보았다. 문제의 원인은 마스터 노드가 포트 6443을 외부에 노출하지 않았기 때문이었다. 문제 해결을 위해서 아래의 방법을 시도했다. 1) api-server ip 확인하기 .kube/config 파일을 참고하거나 아래의 명령어를 통해 확인할 수 있다. kubectl describe pod/kube-apiserver- -n kube-system 2) 포트 6443이 열려있는지 확인하기 curl https://:6443 2) 포트 6443이 열려있는지 확인하기 아래와 같은 인증서관련 출..

Kubernetes 2022.01.10

Volume에 대해 알아보자 [pv, pvc, storage class] - 2

✅ PV (Persistent Volume) PV는 Volumes와 같은 볼륨 플러그인이지만, PV를 사용하는 개별 파드와는 별개의 라이프 사이클을 가진다. Pod와는 상관없이 영속성있는 볼륨을 제공한다. ✅ PVC(Persistent Volume Claim) PVC는 사용자의 스토리지에 대한 요청이다. 파드와 비슷하다. 파드는 노드 리소스를 사용하고 PVC는 PV리소스를 사용한다. 파드가 특정 수준의 리소스( CPU 및 메모리 )를 요청할 수 있는 것처럼 클레임은 특정 크기 및 접근 모드를 요청할 수 있다. Pod는 PV를 바로 연결하지 않고, PVC를 통해 연결된다. Pod를 PV에 바로 연결하지 않는 이유는 Kubernetes가 User와 Admin으로 영역을 나눠서 관리하기 때문이다. - Admi..

Kubernetes 2022.01.07

1. 쿠버네티스 소개하기

1.1 Container 리눅스는 프로세스별로 자원을 격리해서 사용하는 cgroup과 특정 디렉터리로 권한을 제한하는 chroot등으로 격리 환경을 구성할 수 있다. 여기서 디스크의 파일 변경 사항을 레이어 형태로 저장하는 파일 시스템을 합해 컨테이너라는 개념이 탄생했다. 가상화나 클라우드 컴퓨팅을 설명할 때는 가상 머신을 많이 언급했다. 컨테이너와 vm는 아래와 같은 차이가 있다. 🖥 VM VM은 컴퓨팅 환경을 소프트웨어로 구현한 것 즉, 컴퓨터를 애뮬레이션하는 소프트웨어이다. Host OS가 있고, Hypervisor(VMWare, KVM, Xen, etc)가 하드웨어를 가상화한다. VM은 Hypervisor에 의해 독립된 가상 하드웨어 자원을 할당 받으며, 가상 머신마다 게스트 운영체제가 있고 그 ..

Kubernetes 2022.01.07

CoreDNS pod의 CrashLoopBackOff 상태 해결법

CoreDNS가 아래와 같이 CrashLoopBackOff 상태로 계속해서 restart될 때가 있다. 아래와 같은 로그가 뜨는 것을 확인할 수 있었다. plugin/loop: Loop (127.0.0.1:55953 -> :1053) detected for zone ".", see https://coredns.io/plugins/loop#troubleshooting. # 방법 1 CoreDNS ConfigMap을 수동으로 편집해야 한다. kubectl edit cm coredns -n kube-system ConfigMap의 loop 부분을 지우고 저장한 뒤, 해당 파드를 restart시키면 정상작동 된다. # 방법 2 $ vi /etc/resolv.conf resolv.conf 파일에 nameserve..

Kubernetes 2022.01.06

The connection to the server <host>:6443 was refused - did you specify the right host or port?

가끔 서버를 reboot하면 생기는 The connection to the server :6443 was refused - did you specify the right host or port? 에러를 아래의 명령어를 수행함으로써 해결할 수 있다. sudo -i swapoff -a exit strace -eopenat kubectl version 그래도 안되는 경우에는 kubelet 문제일 수 있다. 아래의 명령어로 kubelet가 active 상태인지 확인한다. systemctl status kubelet

Kubernetes 2022.01.06

Volume에 대해 알아보자 [emptyDir, hostpath] - 1

storage란? storage는 컴퓨터에 데이터를 저장하는 저장소 역할을 수행하는 부품이다. 컴퓨터의 하드디스크와 동일한 역할을 수행하는 부품이며, 스토리지를 직접 서버에 연결할 수 있다. 대용량의 데이터를 저장하기 위해 별도의 스토리지용 네트워크를 구성할 수 있다. Volume을 사용해야 하는 이유 컨테이너 실행 중에 문제가 발생해 컨테이너가 삭제된다면, 데이터도 같이 삭제된다. 이때 로그 파일을 저장하거나, 데이터 베이스를 사용할 경우 실시간으로 생성되던 데이터가 사라지면 큰 장애가 발생한다. 따라서 컨테이너 사용 시 중요한 데이터는 볼륨을 사용해 보관해 주어야 한다. Volume의 종류 emptyDir Pod가 실행되는 디스크 공간에 볼륨을 마운트 한다. 주로 컨테이너끼리 데이터 공유를 위해서 사..

Kubernetes 2022.01.05

[WARNING SystemVerification]: this Docker version is not on the list of validated versions: 20.10.12. Latest validated version: 19.03

worker node를 master에 조인시키는 도중에 아래의 에러가 뜨고 중단됐다. [WARNING SystemVerification]: this Docker version is not on the list of validated versions: 20.10.12. Latest validated version: 19.03 Kubernetes Version을 지원하는 Docker의 Version이 맞지 않아 생기는 문제같아서 Kubernetes version을 업그레이드 시켜보았다. - kubectl version GitVersion:"v1.19.1" - kubernetes upgrade sudo apt update sudo apt -y install vim git curl wget kubelet kub..

Kubernetes 2021.12.31
반응형