RESTful API Access (토큰 기반 리소스 접근, namespace별 토큰 생성) api server의 node의 ip와 port 확인, 클러스트 설정 정보 확인 ps0107@k8smaster1:~$ kubectl config view apiVersion: v1 clusters: - cluster: certificate-authority-data: DATA+OMITTED server: https://k8smaster:6443 name: kubernetes contexts: - context: cluster: kubernetes user: kubernetes-admin name: kubernetes-admin@kubernetes current-context: kubernetes-admin@kub..
TLS Access 설정 (인증서 기반의 클러스터 API) api를 통해 직접 호출 할수 있도록 3가지 key를 필요로 한다. ~/.kube/config 경로 안에 있는 아래 3가지 키를 base64로 encording 한 후 각각의 파일로 저장 하여 사용한다. - certificate-authority-data - client-certificate-data - client-key-data ~/.kube/config 안에 정보를 확인 ps0107@k8smaster1:~$ cat ~/.kube/config apiVersion: v1 clusters: - cluster: certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUN5RENDQ..
이번엔 우리의 pod 중 일부가 node 에서 퇴출되고 다른 곳으로 스케줄이 변경되도록 할 것이다. 이것은 기본적인 maintenance 또는 롤링 OS 업데이트 등으로 있을 수 있다. 먼저 worker1번 노드를 더이상 스케쥴 되지 않도록 한다. 이때, worker1번 노드에 있는 pod들을 다른 노드들로 퇴출된다. 현재 master node 이미지 수 확인 ps0107@k8smaster1:~$ sudo docker ps | wc -l 22 현재 worker node 이미지 수 확인 ps0107@k8sworker1:~$ sudo docker ps | wc -l 28 maintenance를 완료하기 위해 노드에서 컨테이너를 이동하고 새 컨테이너가 배치되는 것을 막아야 한다. # - drain : 비우다 ..
microservice 관련 demo 를 이용하여 배포해본다. 관련 yaml 파일을 다운로드 한다. https://raw.githubusercontent.com/microservices-demo/microservices-demo/master/deploy/kubernetes/complete-demo.yaml ps0107@k8smaster1:~$ wget https://raw.githubusercontent.com/microservices-demo/microservices-demo/master/deploy/kubernetes/complete-demo.yaml -O complete-demo.yaml 더보기 더보기 apiVersion: extensions/v1beta1 kind: Deployment metada..
namespace를 위한 리소스 제약을 실습해보기 namespace 생성한다. ps0107@k8smaster1:~$ kubectl create namespace limit-test namespace/limit-test created 생성된 namespace 확인 ps0107@k8smaster1:~$ kubectl get namespaces NAME STATUS AGE default Active 25h kube-node-lease Active 25h kube-public Active 25h kube-system Active 25h limit-test Active 8s namespace에 LimitRange를 걸기 위해 yaml 파일을 생성한다. kind는 LimitRange를 사용 - limits > de..
deployment 의 리소스 제약 실습해보기 stress tool을 사용하여 실습해 보자. 먼저 stress container yaml 파일을 만들어 제약 조건을 yaml 파일에 추가하면서 테스트 해본다. 기본으로 stress app 배포 ps0107@k8smaster1:~$ kubectl create deployment stress --image vish/stress deployment.apps/stress created deployment 리소스 확인 ps0107@k8smaster1:~$ kubectl get deployment NAME READY UP-TO-DATE AVAILABLE AGE stress 1/1 1 1 9s stress 객체 자세히 보기 ps0107@k8smaster1:~$ kube..
nginx app 간단하게 배포해보기 nginx app 배포 하기 ps0107@k8smaster1:~$ kubectl create deployment nginx --image=nginx deployment.apps/nginx created 현재 클러스터의 event 확인 ps0107@k8smaster1:~$ kubectl get events LAST SEEN TYPE REASON OBJECT MESSAGE 29s Normal Scheduled pod/nginx-554b9c67f9-cncvz Successfully assigned default/nginx-554b9c67f9-cncvz to k8sworker1 27s Normal Pulling pod/nginx-554b9c67f9-cncvz Pulling ..
클러스터에 추가할 노드 세팅 master 세팅과 마찬가지로 기본적인 설치 진행 /etc/hosts 파일 설정 필요. (설정 하지 않았다면 아래 링크 확인) [kubernetes-실습] kubeadm 을 이용한 설치 및 세팅 # 설치를 위한 준비 사항 kubeadm을 이용한 설치 기준 virtualbox 이용시 master : 3vCPU/4G memory/5G minimal OS worker : 1vCPU/2G memory/5G minimal OS gcp, aws 이용시 spec : 2 vCPU/ 7.5G memory putty 이.. blog.psnote.co.kr root@k8sworker1:~# apt-get update && apt-get upgrade -y # docker 설치 (참고, docke..
설치를 위한 준비 사항 kubeadm을 이용한 설치 기준 virtualbox 이용시 master : 3vCPU/4G memory/5G minimal OS worker : 1vCPU/2G memory/5G minimal OS gcp, aws 이용시 spec : 2 vCPU/ 7.5G memory putty 이용 할 경우 .pem or .ppk file 요구 YAML 파일 작성시 유의 사항 TAB 사용 하면 안되고 white space로 사용 VM 기준 사전 세팅 1. DHCP IP를 static으로 설정 # vi /etc/network/interfaces auto ens33 iface ens33 inet static address 172.20.0.150 netmask 255.255.255.0 broadca..
kubernetes 아키텍쳐 구조 Master Node kube-apiserver 쿠버네티스 api를 노출하는 컴포넌트, kubectl로 부터 Resource를 조작도록 지시 받음. front-end of cluster's shared state Master for the cluster All components work through it Validates and configures data for API objects Services REST operations Only component to connect to etcd database kube-scheduler 노드 모니터링, 적절한 노드 선택 Uses algorithm to determine Pod placement Checks quota res..