쿠버네티스 o(2/2) - 쿠버네티스 위에서 Minio 동작하기(k8s+minio) MiniO 서비스를 위한 Deployment MiniO 서비스를 외부로 노출하기 위한 Service를 선언 rancher-desktop을 이용하여 진행(wsl-ubuntu 사용) rancher-desktop 다운로드( ) rancher-desktop 설치 WSL Integration에서 사용하고 있는 Ubuntu를 체크하면 됨. 가지고 있는 yml파일을 이용해 create 외부 주소를 이용해... MinIO쿠버네티스k8s+minioMinIO minio 실습 minio 서버를 실행할 때 하나의 destination(경로, 목적지)을 설정해 주면 된다. FS 방식으로 서버를 실행한다면 minio 스토리지에 들어간 파일을 서버에서 직접 열어 확인이 가능하다. 하지만 서버가 오프라인이 된다면 minio 서버는 다운되게 된다. 콘솔 포트도 지정할 수 있다. 해당 포트 접속 시 브라우저에 접속할 수 있다. 만약 해당 옵션을 주지 않는다면 minio 서버는... k8sMinIOkubernetes쿠버네티스MinIO 개념 이해(1/2) - Basic Object 오브젝트들은 모두 오브젝트의 특성(설정 정보)을 기술한 오브젝트 스펙(Object Spec)으로 정의가되고, 커맨드 라인을 통해서 오브젝트 생성시 인자로 전달하여 정의를 하거나 또는 yaml이나 json파일로 스펙을 정의할 수 있다. 쿠버네티스에 의해서 배포 및 관리되는 가장 기본적인 오브젝트는 컨테이너화되어 배포되는 애플리케이션의 워크로드를 기술하는 오브젝트로, Pod, Service, V... Volumn오브젝트Namespace쿠버네티스배포servicepodNamespace ReplicaSet과 Deployment 쿠버네티스는 4개의 기본 오브젝트에 여러가지 기능을 추가하여 더 효율적으로 사용할 수 있는 오브젝트들을 추가했습니다. 오늘은 그 중에서 가장 많이 사용되는 오브젝트들인 Replica Set과 Deployment에 대해 알아보겠습니다. 그 중에서도 클러스터의 Pod들을 관찰하여 관리자가 선언한 Pod의 갯수를 보장해주는 기능을 Controller들이 수행해주고, 오늘 주제인 Replica Se... deploymentkubernetesreplica set쿠버네티스objectk8sdeployment CKS 시험 범위 정리글 공부하면서 정리한 시험범위 및 문제 예상 Use Network security policies to restrict cluster level access NetworkPolicy 설정하는 문제 Use CIS benchmark to review the security configuration of Kubernetes components (etcd, kubelet, kubedns, kubeapi... cka쿠버네티스CKSCKS Docker 데이터 관리(Volume vs bid mount) Docker 컨테이너의 데이터 관리... Docker 컨테이너의 데이터 관리는 중요한 이슈입니다. Docker Volume과 bind mount Docker에서는 데이터의 영속성을 관리하기 위한 Docker Volume과 bind mount라는 Docker Volume : Jenkins images 활용 Docker Volume 생성 및 정보 확인 Mountpoint에서 확인할 수 있는 "/... 도커가상화쿠버네티스dockerkubernetesk8sawsaws 쿠버네티스 - 트러블슈팅 - control plain k8s 환경 안에서 app이 제대로 동작되지 않는 것으로 보입니다. 원인을 찾아 복구해 보겠습니다. describe로 좀 더 자세히 보겠습니다. 이부분에서 문제가 있는 것 같습니다. kube-scheduler의 manifestfile을 수정하도록하겠습니다. 다시 체크해서 복구된 것을 확인합니다. good~ 이번에는 deployement의 pod를 1개에서 2개로 scale out 한 이후 이... 쿠버네티스kuberneteskubernetes AWS 클라우드 구축 (3) - Bastion Host, OS 계정 생성 NAT 1. IP 주소를 절약할 수 있다. 하나의 공인 IP 주소를 사용하여 여러 대의 호스트가 인터넷에 접속할 수 있다. 공유기에 NAT 기능이 들어있어 공인 IP를 사설 IP로 바꿔주는 것이다. NAT로 공인 IP를 절약하기 때문에 저렴하게 인터넷을 이용할 수 있는 것이다. 2. 네트워크와 호스트를 보호할 수 있다. NAT는 IP를 숨길 수 있다. 공격자는 라우터 안쪽에 있는 사설 IP를... 쿠버네티스aws클라우드aws Kubernetes 기반 EKS 환경 구성, 웹 서비스 구축 쿠버네티스 기반 EKS 환경 구성, 웹서비스 구축 EKS 환경구성 EKS 클러스터와 NodeGroup 생성 Nginx 서비스 배포 Nginx deployment 배포 Nginx service 배포 Nginx Nginx 서비스를 배포하려면 1. Deployment를 정의하여 Nginx 컨테이너를 담은 pod를 띄운다. 3. 자동 생성된 ELB를 통해 Nginx가 배포된 것을 확인한다. EKS ... 쿠버네티스aws클라우드aws EFK Stack 구축을 통한 로그 수집 로그 수집을 위한 EFK Stack 구축 컨테이너 환경에서의 로그 수집을 위해 EFK Stack 구축 - ElastiSearch, Fluentd, Kibana를 EKS 환경에서 구축 ElasticSearch+Fluentd+Kibana. ElasticSearch: 대용량 로그 저장소 Fluentd: 컨테이너의 스트림 로그를 수집하는 로그 수집기. Kibana: ElasticSearch와 연동하... 쿠버네티스aws클라우드aws AWS 자원 실시간 모니터링 with CloudWatch, Slack CloudWatch에서 알람 발생 → SNS 푸시 서비스 호출 → Lambda 함수 트리거 → 연동된 Slack 채널로 알람 전송 Lambda: 서버리스 컴퓨팅 서비스. 1. 작업용 워크스페이스 생성한 뒤 알림 받을 채널 생성 > 설정 및 관리 > 앱 관리 Lambda 함수 생성 Lambda 1. Lambda 서비스 대시보드에 들어간다. 4. 함수 이름을 생성하고 다음과 같이 설정한다. KM... 쿠버네티스aws클라우드aws ETCD Backup과 Restore 정리(CKA 시험 대비용) ETCD Restore를 진행할려면 다음과 같이 etcdctl을 실작업해주면 된다 그러나 --cacert, --cert, --key 옵션은 ETCD Backup 할때도 사용되는 옵션이기 때문에 설정하는데 큰 문제는 없다고 생각한다. etcd 프로세스를 사용했을때 설정한 값인 /var/lib/etcd 로 설정하게 되면 Restore 파일이 기존 파일을 덮어 씌울수 있기 때문에 바람직한 Rest... kubernetes쿠버네티스k8sckacka Kubernetes 실습을 위한 Minikube 환경 구성 이전에 설명드렸던 Kubernetes 클러스터의 구성도를 보면 하나 이상의 Control Plane(Master Node)과 여러대의 Worker Node로 구성되는것을 확인할 수 있습니다. 쿠버네티스는 실제로 위와 같은 형태로 동작하지만, 실제로 애플리케이션을 배포하는 경우가 아닌 단순한 테스트를 진행할 경우 위와 같이 클러스터를 구축하는 것은 리소스 비용이 많이 발생합니다. 공식문서에서는... minikube도커쿠버네티스dockerkubernetesk8sdocker [Mac] Kubernetes K3S 설치 with multipass brew 간편 설치 brew PATH 추가 multipass 버전 확인 multipass find: 설치 가능한 가상머신 목록 multipass launch : 그냥 실행하면 랜덤한 이름의 ubuntu 20.04 머신 실행 * multipass launch --name myVM --mem 2G --disk 10G --cpus 2 impish 이름 지정, 메모리 제한, 디스크 크기 지정, CP... ApplemultipassMacOS맥북쿠버네티스kubernetesk3sM:1Apple 따라하며 배우는 쿠버네티스 - 입문(1) katacoda를 사용하는 경우 launch.sh만 실행하면 특별한 설치가 필요 없이 k8s를 실습해볼 수 있습니다. 애플리케이션을 컨테이너화하면 어떤 환경에서든 실행할 수 있으며(linux, Windows, Mac Os 등 환경이 달라서 장애가 발생하는 일이 없다는 말입니다.), 운영 환경을 맘대로 정할 수도 있고 낮은 사양으로도 애플리케이션을 실행할 수 있으며, 배포, 관리 등이 편하다는... 쿠버네티스쿠버네티스 쿠버네티스 기초 인그레스 트래픽 * 외부에서 서버로 유입되는 트래픽 인그레스 외부 요청을 어떻게 처리할 것인지 네트워크 7계층 레벨에서 정의하는 쿠버네티스 오브젝트이다. 외부 요청 라우팅 /apple, /apple/red 등과 같이 특정 경로로 들어온 요청을 어떠한 서비스로 전달할지 정의하는 라우팅 * 가상호스트 기반의 요청 처리 같은 IP에 대해 다른 도메인 이름으로 요청이 도착했을 때 어떻게 처리할 것인... k8s쿠버네티스k8s 1-1. 컨테이너 격리(chroot) Host OS 커널을 공유하며 컨테이너가 동작하기 때문에 Host OS로부터 컨테이너가 완전히 독립적일 수는 없지만 격리된 공간에서 어플리케이션 동작에 필요한 프로세스만을 묶어서 실행시킬 수 있다. chroot를 통해 특정 디렉토리 경로를 root로 지정하여 환경을 분리할 수 있으며, 상위 디렉토리에 프로세스가 접근할 수 없도록 설정함으로써 해당 경로에 프로세스를 격리시킬 수 있다. root... 쿠버네티스코리아쿠버네티스k8sk8s
o(2/2) - 쿠버네티스 위에서 Minio 동작하기(k8s+minio) MiniO 서비스를 위한 Deployment MiniO 서비스를 외부로 노출하기 위한 Service를 선언 rancher-desktop을 이용하여 진행(wsl-ubuntu 사용) rancher-desktop 다운로드( ) rancher-desktop 설치 WSL Integration에서 사용하고 있는 Ubuntu를 체크하면 됨. 가지고 있는 yml파일을 이용해 create 외부 주소를 이용해... MinIO쿠버네티스k8s+minioMinIO minio 실습 minio 서버를 실행할 때 하나의 destination(경로, 목적지)을 설정해 주면 된다. FS 방식으로 서버를 실행한다면 minio 스토리지에 들어간 파일을 서버에서 직접 열어 확인이 가능하다. 하지만 서버가 오프라인이 된다면 minio 서버는 다운되게 된다. 콘솔 포트도 지정할 수 있다. 해당 포트 접속 시 브라우저에 접속할 수 있다. 만약 해당 옵션을 주지 않는다면 minio 서버는... k8sMinIOkubernetes쿠버네티스MinIO 개념 이해(1/2) - Basic Object 오브젝트들은 모두 오브젝트의 특성(설정 정보)을 기술한 오브젝트 스펙(Object Spec)으로 정의가되고, 커맨드 라인을 통해서 오브젝트 생성시 인자로 전달하여 정의를 하거나 또는 yaml이나 json파일로 스펙을 정의할 수 있다. 쿠버네티스에 의해서 배포 및 관리되는 가장 기본적인 오브젝트는 컨테이너화되어 배포되는 애플리케이션의 워크로드를 기술하는 오브젝트로, Pod, Service, V... Volumn오브젝트Namespace쿠버네티스배포servicepodNamespace ReplicaSet과 Deployment 쿠버네티스는 4개의 기본 오브젝트에 여러가지 기능을 추가하여 더 효율적으로 사용할 수 있는 오브젝트들을 추가했습니다. 오늘은 그 중에서 가장 많이 사용되는 오브젝트들인 Replica Set과 Deployment에 대해 알아보겠습니다. 그 중에서도 클러스터의 Pod들을 관찰하여 관리자가 선언한 Pod의 갯수를 보장해주는 기능을 Controller들이 수행해주고, 오늘 주제인 Replica Se... deploymentkubernetesreplica set쿠버네티스objectk8sdeployment CKS 시험 범위 정리글 공부하면서 정리한 시험범위 및 문제 예상 Use Network security policies to restrict cluster level access NetworkPolicy 설정하는 문제 Use CIS benchmark to review the security configuration of Kubernetes components (etcd, kubelet, kubedns, kubeapi... cka쿠버네티스CKSCKS Docker 데이터 관리(Volume vs bid mount) Docker 컨테이너의 데이터 관리... Docker 컨테이너의 데이터 관리는 중요한 이슈입니다. Docker Volume과 bind mount Docker에서는 데이터의 영속성을 관리하기 위한 Docker Volume과 bind mount라는 Docker Volume : Jenkins images 활용 Docker Volume 생성 및 정보 확인 Mountpoint에서 확인할 수 있는 "/... 도커가상화쿠버네티스dockerkubernetesk8sawsaws 쿠버네티스 - 트러블슈팅 - control plain k8s 환경 안에서 app이 제대로 동작되지 않는 것으로 보입니다. 원인을 찾아 복구해 보겠습니다. describe로 좀 더 자세히 보겠습니다. 이부분에서 문제가 있는 것 같습니다. kube-scheduler의 manifestfile을 수정하도록하겠습니다. 다시 체크해서 복구된 것을 확인합니다. good~ 이번에는 deployement의 pod를 1개에서 2개로 scale out 한 이후 이... 쿠버네티스kuberneteskubernetes AWS 클라우드 구축 (3) - Bastion Host, OS 계정 생성 NAT 1. IP 주소를 절약할 수 있다. 하나의 공인 IP 주소를 사용하여 여러 대의 호스트가 인터넷에 접속할 수 있다. 공유기에 NAT 기능이 들어있어 공인 IP를 사설 IP로 바꿔주는 것이다. NAT로 공인 IP를 절약하기 때문에 저렴하게 인터넷을 이용할 수 있는 것이다. 2. 네트워크와 호스트를 보호할 수 있다. NAT는 IP를 숨길 수 있다. 공격자는 라우터 안쪽에 있는 사설 IP를... 쿠버네티스aws클라우드aws Kubernetes 기반 EKS 환경 구성, 웹 서비스 구축 쿠버네티스 기반 EKS 환경 구성, 웹서비스 구축 EKS 환경구성 EKS 클러스터와 NodeGroup 생성 Nginx 서비스 배포 Nginx deployment 배포 Nginx service 배포 Nginx Nginx 서비스를 배포하려면 1. Deployment를 정의하여 Nginx 컨테이너를 담은 pod를 띄운다. 3. 자동 생성된 ELB를 통해 Nginx가 배포된 것을 확인한다. EKS ... 쿠버네티스aws클라우드aws EFK Stack 구축을 통한 로그 수집 로그 수집을 위한 EFK Stack 구축 컨테이너 환경에서의 로그 수집을 위해 EFK Stack 구축 - ElastiSearch, Fluentd, Kibana를 EKS 환경에서 구축 ElasticSearch+Fluentd+Kibana. ElasticSearch: 대용량 로그 저장소 Fluentd: 컨테이너의 스트림 로그를 수집하는 로그 수집기. Kibana: ElasticSearch와 연동하... 쿠버네티스aws클라우드aws AWS 자원 실시간 모니터링 with CloudWatch, Slack CloudWatch에서 알람 발생 → SNS 푸시 서비스 호출 → Lambda 함수 트리거 → 연동된 Slack 채널로 알람 전송 Lambda: 서버리스 컴퓨팅 서비스. 1. 작업용 워크스페이스 생성한 뒤 알림 받을 채널 생성 > 설정 및 관리 > 앱 관리 Lambda 함수 생성 Lambda 1. Lambda 서비스 대시보드에 들어간다. 4. 함수 이름을 생성하고 다음과 같이 설정한다. KM... 쿠버네티스aws클라우드aws ETCD Backup과 Restore 정리(CKA 시험 대비용) ETCD Restore를 진행할려면 다음과 같이 etcdctl을 실작업해주면 된다 그러나 --cacert, --cert, --key 옵션은 ETCD Backup 할때도 사용되는 옵션이기 때문에 설정하는데 큰 문제는 없다고 생각한다. etcd 프로세스를 사용했을때 설정한 값인 /var/lib/etcd 로 설정하게 되면 Restore 파일이 기존 파일을 덮어 씌울수 있기 때문에 바람직한 Rest... kubernetes쿠버네티스k8sckacka Kubernetes 실습을 위한 Minikube 환경 구성 이전에 설명드렸던 Kubernetes 클러스터의 구성도를 보면 하나 이상의 Control Plane(Master Node)과 여러대의 Worker Node로 구성되는것을 확인할 수 있습니다. 쿠버네티스는 실제로 위와 같은 형태로 동작하지만, 실제로 애플리케이션을 배포하는 경우가 아닌 단순한 테스트를 진행할 경우 위와 같이 클러스터를 구축하는 것은 리소스 비용이 많이 발생합니다. 공식문서에서는... minikube도커쿠버네티스dockerkubernetesk8sdocker [Mac] Kubernetes K3S 설치 with multipass brew 간편 설치 brew PATH 추가 multipass 버전 확인 multipass find: 설치 가능한 가상머신 목록 multipass launch : 그냥 실행하면 랜덤한 이름의 ubuntu 20.04 머신 실행 * multipass launch --name myVM --mem 2G --disk 10G --cpus 2 impish 이름 지정, 메모리 제한, 디스크 크기 지정, CP... ApplemultipassMacOS맥북쿠버네티스kubernetesk3sM:1Apple 따라하며 배우는 쿠버네티스 - 입문(1) katacoda를 사용하는 경우 launch.sh만 실행하면 특별한 설치가 필요 없이 k8s를 실습해볼 수 있습니다. 애플리케이션을 컨테이너화하면 어떤 환경에서든 실행할 수 있으며(linux, Windows, Mac Os 등 환경이 달라서 장애가 발생하는 일이 없다는 말입니다.), 운영 환경을 맘대로 정할 수도 있고 낮은 사양으로도 애플리케이션을 실행할 수 있으며, 배포, 관리 등이 편하다는... 쿠버네티스쿠버네티스 쿠버네티스 기초 인그레스 트래픽 * 외부에서 서버로 유입되는 트래픽 인그레스 외부 요청을 어떻게 처리할 것인지 네트워크 7계층 레벨에서 정의하는 쿠버네티스 오브젝트이다. 외부 요청 라우팅 /apple, /apple/red 등과 같이 특정 경로로 들어온 요청을 어떠한 서비스로 전달할지 정의하는 라우팅 * 가상호스트 기반의 요청 처리 같은 IP에 대해 다른 도메인 이름으로 요청이 도착했을 때 어떻게 처리할 것인... k8s쿠버네티스k8s 1-1. 컨테이너 격리(chroot) Host OS 커널을 공유하며 컨테이너가 동작하기 때문에 Host OS로부터 컨테이너가 완전히 독립적일 수는 없지만 격리된 공간에서 어플리케이션 동작에 필요한 프로세스만을 묶어서 실행시킬 수 있다. chroot를 통해 특정 디렉토리 경로를 root로 지정하여 환경을 분리할 수 있으며, 상위 디렉토리에 프로세스가 접근할 수 없도록 설정함으로써 해당 경로에 프로세스를 격리시킬 수 있다. root... 쿠버네티스코리아쿠버네티스k8sk8s