본문 바로가기

Kubernetes(k8s)

(33)
pod란? 1. 멀티 컨테이너 Pod 기본적으로 하나의 Pod 안에서는 모든 컨테이너가 같은 네트워크 안에서 동작하므로, 같은 IP 주소와 포트를 공유하게 된다. 따라서 같은 포트를 사용하는 컨테이너들을 묶어서 하나의 파드로 배포해서는 안된다. 또한 하나의 파드 안에 완전히 별개의 성격을 가진 다른 프로세스들을 묶어 배포하는 것도 권장되지 않는다. 이는 전체 서비스를 기능 단위로 분산하고 Pod를 최소의 배포 단위로 구성하는 쿠버네티스의 설계 사상에 맞지 않는 방식이다. 따라서, 멀티 컨테이너 Pod는 메인 프로세스를 네트워크 또는 스토리지의 밀접한 공유가 필요한 다른 컨테이너와 함께 운영하고자 할 때에 고려하는 것이 바람직하다. 1.1. 멀티 컨테이너 yaml apiVersion: v1 kind: Pod meta..
쿠버네티스 실습 1. 쿠버네티스 실습 1.1. run 명령어를 사용한 pod 생성 # default에서 생성된 pod가 없음을 확인한다. [kevin@ubu22-01 ~ (kubernetes-admin@cluster.local:default)]$ kgp No resources found in default namespace. # webserver라는 이름의 pod를 생성, 사용한 이미지는 nginx [kevin@ubu22-01 ~ (kubernetes-admin@cluster.local:default)]$ k run webserver --image=nginx pod/webserver created # 생성된 pod확인 [kevin@ubu22-01 ~ (kubernetes-admin@cluster.local:default..
k8s의 네임스페이스 란? 1. Namespace 1.1. 정의 쿠버네티스에서 네임스페이스는 단일 클러스터 내에서의 리소스 그룹 격리 메커니즘을 제공한다. 리소스의 이름은 네임스페이스 내에서 유일해야 하며, 네임스페이스 간에서 유일할 필요는 없다. 네임스페이스 기반 스코핑은 네임스페이스 기반 오브젝트 (예: 디플로이먼트, 서비스 등) 에만 적용 가능하며 클러스터 범위의 오브젝트 (예: 스토리지클래스, 노드, 퍼시스턴트볼륨 등) 에는 적용이 불가능하다. 1.2. 사용 목적 ● 리소스 격리 단일 물리적 클러스터 내에 별도의 가상 클러스터를 생성하여 리소스 충돌을 방지하여 Pod, 서비스 및 영구 볼륨과 같은 리소스가 의도치 않게 서로 간섭하지 않도록 합니다. ● 액세스 제어 및 RBAC Kubernetes는 네임스페이스 수준에서 역할..
k8s 기초 설정 1.1. kubectl 유저에게 적용하기 1) 클러스터 설정 파일 확인 # 루트로 접속 vmadmin@ubu22-01:~$ sudo bash # kubespray의 config 파일 확인 root@ubu22-01:~/.kube# cat config apiVersion: v1 clusters: - cluster: certificate-authority-data: {key_value} server: https://127.0.0.1:6443 name: cluster.local contexts: - context: cluster: cluster.local user: kubernetes-admin name: kubernetes-admin@cluster.local current-context: kubernetes-..
k8s 설치 1. 쿠버네티스 설치 1.1. 노드 공통 설정 ● 우분투 3대 설치 ● ubu22-01 노드를 설정한 후 복제하여 각 노드에 맞는 설정 # 패스워드 설정 vmadmin@admin-virtual-machine:~/Desktop$ sudo visudo --- # Members of the admin group may gain root privileges %admin ALL=(ALL) ALL # Allow members of group sudo to execute any command %sudo ALL=(ALL:ALL) NOPASSWD: ALL ... :wq # nano 제거 vmadmin@admin-virtual-machine:~/Desktop$ sudo apt remove nano # neovim 설치 v..
k8s 기본 명령어 1. 쿠버네티스 기본 명령어 kubectl [COMMAND] [TYPE] [NAME] [FLAGS] ● COMMAND 하나 이상의 리소스에서 수행하려는 동작을 지정한다. ● TYPE 리소스 타입을 지정한다. 리소스 타입은 대소문자를 구분하지 않으며 단수형, 복수형 또는 약어 형식을 지정할 수 있다. ● NAME 리소스 이름을 지정한다. 이름은 대소문자를 구분한다. 이름을 생략하면, 모든 리소스에 대한 세부 사항이 표시된다. ● FLAGS 선택적 플래그를 지정한다. 예를 들어, -s 또는 --server 플래그를 사용하여 쿠버네티스 API 서버의 주소와 포트를 지정할 수 있다. 명령어 설명 apply 원하는 상태를 적용한다. 보통 -f 옵션으로 파일과 함께 사용한다. get 리소스 목록을 출력해 준다. d..
Chroot의 한계 1.1. Chroot란? 컨테이너의 역사를 거슬러 올라가면 제일 처음 chroot가 등장한다. chroot는 프로세스의 루트 디렉토리를 변경하는 리눅스 시스템콜/명령어로, 1979년 UNIX V7에서 추가되어 원격 유저(FTP, SSH 등)를 특정 디렉터리에 가두기 위한 용도로 사용되었다. chroot는 Change Root Directory의 줄임말로, 특정 디렉토리를 “루트 디렉토리로 지정할 수 있으면 루트 디렉터리 밖으로는 못 나가기 때문에 해당 경로에 프로세스를 가둘 수 있다는 점에 착안하였고, chroot에 갇힌 프로세스는 현재 디렉터리를 루트로 인지하여 작동하기에 프로세스를 실행할 때 필요한 커맨드 프로그램, 라이브러리, 설정 등을 chroot로 지정할 경로에 함께 넣어 주어야 한다. 1.2...
컨테이너 1. Container 1.1. 정의 정확하게 말하면 운영체제에서 실행되는 프로세스를 격리(Isolation)하여 별도의 실행 환경을 제공해주며, 해당 프로세스는 운영체제 상에서 실행되는 유일한 프로세스인 것처럼 작동하는 기술이다. 즉, 운영체제에서 실행되는 여러 프로세스는 컨테이너라는 개념으로 격리되어 별도의 운영 환경을 제공해주는 기술이다. 소프트웨어는 OS와 라이브러리에 의존성을 띤다. 그러므로 하나의 컴퓨터에서 성격이 다른(OS,라이브러리 버전이 다른) 소프트웨어를 한번에 실행할 때 어려움을 가질 수 있고, 관련된 구성을 관리하기가 어렵다. 컨테이너(Container)는 개별 Software의 실행에 필요한 실행환경을 독립적으로 운용할 수 있도록 기반환경 또는 다른 실행환경과의 간섭을 막고 실행의..