Minikube 설치중 Exiting due to GUEST_MISSING_CONNTRACK: Sorry, Kubernetes 1.20.2 requires conntrack to be installed in root's path 에러가 뜰 경우 sudo apt install conntrack
설치전 서버가 하나이더라도 virtualbox에서 새로운 vm에 minikube를 설치하길 추천 Kubectl, Kubelet, kubeadm 이 설치되어있는지 확인 [kubectl]은 쿠버네티스 클러스터에 대해 명령을 실행할 수 있는 CLI이다. 이를 사용하여, 애플리케이션을 배포하고, 클러스터 리소스를 검사 및 관리하여 로그를 볼 수 있다. 설치 방법은 아래와 같다. Kubectl, Kubelet, kubeadm 설치하기 참고 : 공식문서 sudo apt-get update sudo apt-get install -y apt-transport-https ca-certificates curl sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring..
1.DaemonSet DaemonSet은 노드의 자원상태와는 상관없이, 모든 노드에 pod가 하나씩 생김(ReplicaSet은 node의 자원상태애 따라 pod가 차등적으로 생김) 이렇게 각각의 노드에 하나씩 설치해서 사용해하야하는 서비스 목록 Prometheus: 각 노드들의 성능 모니터링 fluentd: 로그 수집 GlusterFS: 노드들을 Storage로 사용해서 네트워크 파일시스템을 구축 가능 selector와 template이 있어서 모든 노드에서 pod를 생성. 만약 노드들의 os종류가 달랐을때 ubuntu에서는 pod을 생성하고 싶지 않다면, template의 nodeSelector에 os:centos로 설정해주면 됨 template에 hostport를 설정을 하면 서비스에서의 extern..
0. Deployment란 현재 한 서비스가 운영중인데 ,이 서비스를 업데이트 해야되서 재배포를 해야될 때 도움을 주는 오브젝트 ReCreate: 디플로이먼트를 만들면 v1의 pod들이 만드러짐. pod하나당 하나씩 자원이 사용된다고 가정을 하면, 업그레이드를 할 때 디플로이먼트는 먼저 pod를 삭제한다. 그렇게 되면 서비스에 대한 다운타임이 발생하고 자원사용량도 없어진다. 다음으로 v2에 대한 pod 2개를 만든다. 일시적인 정지가 가능할 때만 사용되는 방법 Rolling Upate: 디플로이먼트는 먼저 v2에 pod를 하나 만듬. 자원사용량이 그만큼 늘어남. 이 상태에서는 누군가는 v1에 접속이되고, 누군가는 v2에 접속이 됨. 그리고나서 v1을 삭제하면 사용자들은 v2에만 접속을 하게 됨 중간에 추..
0. Controller의 기능 Auto Healing Auto Scailing Software Update Job 1.Template pod가 다운되면, replication안에 있는 template으로 pod를 새로 만들어주게 됨 template에 pod:v2에 대한 업데이트를 진행하고 , 기존에 연결되어 있는 pod을 다운시키고 새로 업그레이드 된 pod:v2를 생성 2.Replicas replicas의 개수만큼 pod의 개수가 관리되고, 그 pod가 삭제되면, replicas의 개수만큼 재생성해줌 repliacas의 개수가 늘어나면 그 수만큼 pod가 늘어나면서 scale out이 됨 replicas에 pod없이 개수만 지정하고, template을 만들면, replicas는 현재 pod가 없기 때..
0.이 오브젝트들을 쓰는 이유 클러스터안에는 여러 네임스페이스들을 만들 수 있고, 네임스페이스 안에는 여러 pod를 만들 수 있고, 한 네임스페이스안에서 클러스터 내부의 리소스 대부분을 사용하면, 다른 네임스페이스 안에 있는 파드 입장에선 더 이상 사용할 수 있는 자원이 없어서 문제가 발생함 이러한 문제를 해결하기 위해서 Resource Quota 가 존재하는데, 네임스페이스마다 최대 한계를 설정하여, 다른 네임스페이스에 있는 파드에 영향을 미치지 않게함 Resource Quota외에도 Limit Range를 설정하여 네임스페이스에 들어오는 범위를 설정가능(최소~최대) 1.Namespace 한 네이스페이스 안의 오브젝트들은 이름이 중복될 수 없음 다른 네임스페이스 안에 있는 자원들끼는 연결할 수 없음(P..
★configmap: 개발환경과 상용환경의 설정을 각각 다르게 하기 위해, 외부에서 관리하는 파일을 모아놓은 것 ★secret: 보안 관련 파일을 모아 놓은 것 1.Env (Literal) -데이터로 configmap에 상수를 넣음 -key:value -secret은 pod으로 주입될때 자동으로 디코딩되어 원래의 값이 보이게됨 -쿠버네티스에서 일반적인 오브젝트들은 쿠버네티스 DB에 저장이 되는데, secret은 메모리에 저장(secret을 많이 만들게 되면 용량상 시스템에 영향을 미치게 됨) 2.Env (File) -데이터로 파일을 configmap에 넣음 -바로 pod에 올리면 key가 file이름이 되니까, key를 새로 정의해서 content만 넣기 -파일을 configmap으로 만드는 것은 das..
1.emptyDir -컨테이너들끼리 볼륨을 공유하기 위해 사용됨 -예를 들어 container1이 웹서버고 container2가 백엔드 -volume은 pod생성시 만들어지고 삭제 시 없어짐 (volume에는 일시적인 사용목적에 의한 데이터만 저장하는게 좋음) 2.hostPath -pod들이 올려져 있는 node의 poth 사용 -각각의 pod들이 path를 공유하기 때문에, pod들이 죽어도 node안에 있는 데이터는 사라지지 않음 -그러나, 예를 들어 pod2가 재생성될 때, 원래 node에 생성될거라는 보장이 없음 (해결: 운영자가 node추가시마다 똑같은 path를 만들어서 직접 node에 있는 path끼리 mount를 걸어줌) *사전에 해당 node에 경로가 있어야 에러가 나지 않음 -각각의 노..
1.ClusterIP(type: ClusterIP) -service는 자신의 cluster IP가 있으며, pod과 연결되면 service의 ip를 통해서도 pod과 연결가능 -(pod의 ip는 재생성되면 변경되지 때문에 신뢰성이 떨어져서) -외부에서는 접근불가 -service가 트래픽을 분산시켜, pod에 연결함 1.인가된 사용자 2.내부 대쉬보드 3.Pod의 서비스상태 디버깅 2.NodePort(type: NodePort) -모든 node에 port할당 -1번 노드로 접속하더라도 2번 노드에 트래픽 전달 가능 -externalTrafficPolicy: Local 로 되어 있으면 해당 노드위에 pod에만 트래픽을 전달함 1.내부망 연결 2.데모나 임시 연결용 3.Load Balancer(type: Lo..