PaaS/Kubernetes 85

(Kubernetes) kubeconfig

앞으로 배울 쿠버네티스 CA 인증 설정과 관련해 사용자가 인증서를 통해 쿠버네티스를 사용하는 경우 rest api 를 사용하는 경우 아래와 같이 인증에 대한 정보를 파라미터로 제공해야 한다. 이는 kubectl 을 사용하는 경우에도 마찬가지다. 항상 이 정보를 타이핑하려면 사실 지겹고 힘들기 때문에 이를 파일로 저장하고 명령행 인자에서 --kubeconfig 에 파일명을 지정하는 방식으로 사용할 수도 있다. /root/.kube/config파일을 수정하면 default context가 설정된다. context란 cluster 및 user를 사용하여 환경설정을 매핑해주는 것이다. 하지만 이 조차 하기 싫은게 인지상정이라 아래 위치에 config 파일을 만들어 저장하면 기존과 동일한 방법으로 사용할 수 있다..

PaaS/Kubernetes 2021.04.01

(Kubernetes) Authentication, Role, ClusterRole --정리필요

쿠버네티스는 API 서버를 이용하여 API 요청을 인가한다. 모든 정책과 비교하여 모든 요청 속성을 평가하고 요청을 허용하거나 거부한다. 계속 진행하려면 API 요청의 모든 부분이 일부 정책에 의해 반드시 허용되어야 한다. 이는 기본적으로 승인이 거부된다는 것을 의미한다. (쿠버네티스는 API 서버를 사용하지만, 특정 오브젝트의 특정 필드에 의존하는 접근 제어 및 정책은 어드미션 컨트롤러에 의해 처리된다.) 여러 개의 인가 모듈이 구성되면 각 모듈이 순서대로 확인된다. 어느 인가 모듈이 요청을 승인하거나 거부할 경우, 그 결정은 즉시 반환되며 다른 인가 모듈이 참고되지 않는다. 모든 모듈에서 요청에 대한 평가가 없으면 요청이 거부된다. 요청 거부는 HTTP 상태 코드 403을 반환한다. 인가 모드 : k..

PaaS/Kubernetes 2021.03.29

(Kubernetes) Upgrade Master And Worker Node

Master 노드의 버전이 Worker노드보다 높더라도 서비스는 정상적으로 진행된다. 그 이유는 하위 마이너3버전까지 호환하기 때문이다. 하지만 그 이후는 Support되지 않음으로 주의! 그리고 업그레이드를 할때는 1마이너 업그레이드로 순차적으로 해야 한다. 업그레이드순서 현재버전, 설치된 버전 확인 kubeadm version kubeadm upgrade plan 1. Master 노드 업그레이드 apt-get install kubeadm=1.19.0-00 kubeadm version kubeadm upgrade apply v1.19.0 apt-get install kubelet=1.19.0-00 2. Node 순차적으로 apt-get install kubeadm=1.19.0-00 kubeadm ve..

PaaS/Kubernetes 2021.03.28

(Kubernetes) Cordon And Drain

cordon - cordon은 특정 노드를 선택하여 스케줄 대상에서 제외 시킵니다. 간단한 deployment nginx 이미지를 생성해주는 매니페스트 파일을 작성 후 아래와 같이 cordon 명령을 실행하면 선택한 특정 노드가 SchedulingDisabled 상태가 되는것을 확인할 수 있습니다. 쿠버네티스 클러스터를 사용하다 보면 특정 노드에 있는 포드들을 모두 다른 곳으로 옮기거나 아니면 특정 노드에는 포드들이 스케쥴링 되지 않도록 제한을 걸어둘 필요가 있습니다. 이런한 기능들을 제공하는 명령어가 kubectl에 있습니다. cordon, drain, taint등이 그런 용도의 명령어 들입니다. uncordon 포드가 노드에 정상적으로 스케쥴링될 수 있게 하기 위해서는 uncordon을 해주면 됩니다..

PaaS/Kubernetes 2021.03.28

(Kubernetes) Containers And Volumes

POD와 Container 이렇게 Pod 안에 컨테이너들은 격리된 상태에서 독립적인 일을 수행할 수 있으면서 서로 네트워크 통신이 가능하다는 장점을 갖게 되었다. Init-Containers 이 페이지는 초기화 컨테이너에 대한 개요를 제공한다. 초기화 컨테이너는 파드의 앱 컨테이너들이 실행되기 전에 실행되는 특수한 컨테이너이며, 앱 이미지에는 없는 유틸리티 또는 설정 스크립트 등을 포함할 수 있다. 초기화 컨테이너는 containers 배열(앱 컨테이너를 기술하는)과 나란히 파드 스펙에 명시할 수 있다 파드는 앱들을 실행하는 다수의 컨테이너를 포함할 수 있고, 또한 앱 컨테이너 실행 전에 동작되는 하나 이상의 초기화 컨테이너도 포함할 수 있다. 다음의 경우를 제외하면, 초기화 컨테이너는 일반적인 컨테이너..

PaaS/Kubernetes 2021.03.27

(Kubernetes) Secret

쿠버네티스 시크릿을 사용하면 비밀번호, OAuth 토큰, ssh 키와 같은 민감한 정보를 저장하고 관리할 수 ​​있다. 기밀 정보를 시크릿에 저장하는 것이 파드(Pod) 정의나 컨테이너 이미지 내에 그대로 두는 것보다 안전하고 유연하다. 자세한 내용은 시크릿 디자인 문서를 참고한다. 시크릿은 암호, 토큰 또는 키와 같은 소량의 중요한 데이터를 포함하는 오브젝트이다. 그렇지 않으면 이러한 정보가 파드 명세나 이미지에 포함될 수 있다. 사용자는 시크릿을 만들 수 있고 시스템도 일부 시크릿을 만들 수 있다. 시크릿 개요 시크릿을 사용하려면, 파드가 시크릿을 참조해야 한다. 시크릿은 세 가지 방법으로 파드와 함께 사용할 수 있다. - 하나 이상의 컨테이너에 마운트된 볼륨 내의 파일로써 사용. - 컨테이너 환경 ..

PaaS/Kubernetes 2021.03.25

(Kubernetes) ConfigMap

컨피그맵은 키-값 쌍으로 기밀이 아닌 데이터를 저장하는 데 사용하는 API 오브젝트이다. 파드는 볼륨에서 환경 변수, 커맨드-라인 인수 또는 구성 파일로 컨피그맵을 사용할 수 있다. 컨피그맵을 사용하면 컨테이너 이미지에서 환경별 구성을 분리하여, 애플리케이션을 쉽게 이식할 수 있다. POD를 생성할때 env로 환경변수를 줄 수 있는데, 이것을 Property처럼 쉽게 가져다가 쓰게끔하는 데이터베이스이다.

PaaS/Kubernetes 2021.03.25

(Kubernetes) Command And Argument

컨테이너를 위한 커맨드와 인자 정의하기 파드를 생성할 때, 파드 안에서 동작하는 컨테이너를 위한 커맨드와 인자를 정의할 수 있다. 커맨드를 정의하기 위해서는, 파드 안에서 실행되는 컨테이너에 command 필드를 포함시킨다. 커맨드에 대한 인자를 정의하기 위해서는, 구성 파일에 args 필드를 포함시킨다. 정의한 커맨드와 인자들은 파드가 생성되고 난 이후에는 변경될 수 없다. 구성 파일 안에서 정의하는 커맨드와 인자들은 컨테이너 이미지가 제공하는 기본 커맨드와 인자들보다 우선시 된다. 만약 인자들을 정의하고 커맨드를 정의하지 않는다면, 기본 커맨드가 새로운 인자와 함께 사용된다. ※ The Definition of Command (entry-point) is overwritten by Definition..

PaaS/Kubernetes 2021.03.24