Kubernetes (13) 썸네일형 리스트형 쿠버네티스 노드 추가하기 새로운 노드를 추가하기위해서는 token과 discovery-token-ca-cert-hash가 필요합니다. token생성 [root@k8s-master ~]# kubeadm token create W0418 03:38:30.103931 29081 configset.go:202] WARNING: kubeadm cannot validate component configs for API groups [kubelet.config.k8s.io kubeproxy.config.k8s.io] 2mt2fr.vamluzvusmol403tdiscovery-token-ca-cert-hash 값 [root@k8s-master ~]# openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt .. 쿠버네티스 설치하기 NodeIPMemoryHddk8s-master192.168.1.112G20Gk8s-node01192.168.1.121G20Gk8s-node02192.168.1.131G20G /etc/hosts 192.168.1.11 k8s-master 192.168.1.12 k8s-node01 192.168.1.13 k8s-node02전체 노드에서 설정 Container Runtime 설정(Docker) # Docker CE 설치 ## 리포지터리 설정 ### 필요한 패키지 설치. yum install -y yum-utils device-mapper-persistent-data lvm2 ### Docker 리포지터리 추가 yum-config-manager --add-repo \ https://download.docker... 쿠버네티스 기초 Rolling Update Container v1 을 Containerv2로 업데이트 하기 위해서는 두가지 방법을 떠올릴것이다. 기존의 v1 을 다 삭제하고 새로운 v2 를 삭제 하는 방법 하지만 다운타임이 발생하게 된다. v2를 미리 추가하고 v1 을 지우는 방법 #rollout 명령어 kubectl rollout status deployment/myapp-deployment #rollout history kubecyl rollout history deployment/mtapp-deployment Rolling update 롤링업데이트를 사용하면 다운타임을 최소한으로 줄일수 있다. 기존 deployment_test.yml apiVersion: apps/v1 kind: Deployment metatdata: name: myapp-.. 쿠버네티스 기초 Deployment Deployment 는 deploy 할때 instance를 업그레이드 기능 그리고 rolling update기능 업데이트 실패 했을때 되돌리는 기능 등등 많은 기능이 있다. yaml파일 작성 하기 apiVersion: apps/v1 kind: Deployment metadata: name: myapp-deployment labels: app: myapp type: front-end spec: template: metadata: name: myapp-deployment labels: app: myapp spec: containers: - name: nginx-container image: nginx replicas: 3 selector: matchLabels: app: myapp 파일 실행 KDS-2:ya.. 쿠버네티스 기초 ReplicaSet Replication Controller와 사용 목적은 비슷하다. Replication Controller에서는 label selector을 이용할때 A AND B AND C 방식을 사용했지만 ReplicaSet을 이용하면 A AND B AND (x or y) 사용할수 있다. 쉽게 말하자면 Replication Controller의 label selector는 특정 label을 포함하는 pod가 일치 하는지만 보고 ReplicaSet의 selector는 특정 label이 없거나 해당 값과 관계없이 특정 label 키를 포함하는 pod를 매치 하는지 확인한다. apiVersion: apps/v1 kind: ReplicaSet metadata: name: myapp-replicaset labels: app:.. 쿠버네티스 기초 Replication Controller Replication Controller는 노드가 클러스터에서 사라지거나 노드에있는 pod이 문제가 생겼을때 대체 pod을 생성 해준다. Pod 리소스가 부족하다고 느껴지면 자동으로 scale out 기능도 가능 합니다. pod에서 만들었던 방법이랑 비슷 하지만 kind에 ReplicationController, spec-template에 pod에서 사용할때 썼던 컨테이너들을 적어줬습니다. apiVersion: v1 kind: ReplicationController metadata: name: replication-1pod-2container labels: app: ubuntu_nginx spec: # Replication Controller template: metadata: # string name:.. 쿠버네티스 기초 YAML 파일 작성 하기 YAML 파일은 object를 만들거나 Pod's replicas, deployment 서비스 등 모든곳에서 사용합니다.쿠버네티스에서 yaml파일을 사용하기위해서 기본적으로 필요한 것이 있다(apiVersion, kind, metadata, spec)apiVersion: kind: metadata: spec:apiVersion : 쿠버네티스의 api 버전을 이야기 한다.kind : 무엇을 만들것인지 를 정함(POD, Service, ReplicaSet, Deployment)metadata: 리소스의 이름, Label 등을 지정 한다.spec: 생성하고자 하는 리소스들의 종류나 타입들에 따라서 다르다.아래에서는 테스트로 싱글 pod에 2개의 Container를 만들어 보겠습니다.#1pod_2containe.. 쿠버네티스 기초 Pods 쿠버네티스에서는 도커처럼 container 하나만 바로 실행이 불가하다. 쿠버네티스 안에 container는 Pod 안에서 동작한다. pod은 각자의 IP를 가질수 있고 서비스에 꼭 필요 있는 container들을 하나의 pod에서 동시에 실행시킬수도 있다. pod안의 container들은 동일 네트워크, NameSpace에서 실행 되기 떄문에 호스트 이름, 네트워크 인터페이스를 공유한다. developui-MacBook-Pro:~ develop$ kubectl get service --all-namespaces NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE default hello-minikube NodePort 10.96.37.58 8080:3170.. kubectl autocomplete 설정하기 kubectl autocompletion 기능은 bash 버전이 4.1 버전 이상부터 지원된다. macOS bash 버전을 보니 너무 낮기 때문에 먼저 brew install bash 를 통해 5.0.16(1) 버전으로 업데이트를 해보겠습니다. developui-MacBook-Pro:~ develop$ which -a bash #bash 위치 확인 /usr/local/bin/bash /bin/bash developui-MacBook-Pro:~ develop$ /usr/local/bin/bash --version # 설치된 bash version 확인 GNU bash, version 5.0.16(1)-release (x86_64-apple-darwin19.3.0) Copyright (C) 2019 Free.. Minikube tutorial nodes 리소스 확인 kubectl get nodes echoserver 이미지를 이용하여 hello-minikube file 리소스 file 생성 kubectl create deployment hello-minikube --image=k8s.gcr.io/echoserver:1.10 pods의 리소스 확인 kubectl get pods expose 옵션을 통해 서비스 노출 8080포트 지정 -- type : ClusterIP, NodePort, LoadBalancer, ExternalName 옵션이 있음 -ClusterIP (기본값) - 클러스터 내에서 내부 IP 에 대해 서비스를 노출해준다. 이 방식은 오직 클러스터 내에서만 서비스가 접근될 수 있도록 해준다. -NodePort - NAT가 이용되는 .. 이전 1 2 다음