Container 62

[Docker] Docker 사용하여 간단하게 Let's Encrypt 와일드카드 SSL 인증서 발급/갱신 방법

Docker 사용하여 간단하게 Let's Encrypt 와일드카드 SSL 인증서 발급/갱신 방법 Let's Encrypt 와일드 카드 SSL 인증서 발급 Docker로 간단하게 Let's Encrypt SSL 인증서 발급받는 방법 입니다. 아래 내용에서 *.yourdomain.com / youremail@google.com 부분만 자신의 도메인과 이메일 주소로 변경 합니다. 뒤의 내용은 ACME 서버 구독 동의, EFF 재단에 이메일 공유 거부의 내용 입니다. docker run -it --rm --name certbot \ -v '/etc/letsencrypt:/etc/letsencrypt' \ -v '/var/lib/letsencrypt:/var/lib/letsencrypt' \ certbot/cer..

Container/Docker 2021.09.27

[Kubernetes] 쿠버네티스 kube-flannel CrashLoopBackOff 해결 방법 (Error registering network: failed to acquire lease: node "node1" pod cidr not assigned)

쿠버네티스 kube-flannel CrashLoopBackOff 해결 방법 (Error registering network: failed to acquire lease: node "node1" pod cidr not assigned) 아래와 같이 kube-flannel이 CrashLoopBackOff가 발생하였습니다. 로그를 확인해본 결과 Error registering network: failed to acquire lease: node "node1" pod cidr not assigned 에러가 발생중인것을 확인할 수 있었는데, 해외 문서에 따르면 불분명한 문제(?)로 Pod CIDR 임대 실패하여 발생하는 에러라고 합니다. 저는 아래와 같이 해당 현상을 해결할 수 있었는데, 우선 아래 명령어를 입력..

[Kubernetes] 쿠버네티스 온프레미스 환경에서 직접 설치하기 (kubernetes install on premise, kubeadm)

쿠버네티스 온프레미스 환경에서 직접 설치하기 (kubernetes install on premise, kubeadm) 온프레미스 환경에서 쿠버네티스를 설치하기 전에 사전 작업들을 해주어야할 필요성이 있습니다. 해당 글은 사전작업 → Docker 설치 → Kubernetes 설치 및 master-worker node 연동 순으로 진행 됩니다. 저의 환경은 아래와 같으며 본인 환경에 따라 적절히 변경하여 설치를 진행 해주시면 됩니다. OS : CentOS 7 master node 1대, worker node 3대 구성 모든 서버 root 계정으로 설치 및 연동 진행 1) 호스트 네임 변경 (master node, worker node 적용) 아래와 같이 echo와 hostnamectl 명령어를 이용해 호스트..

[Kubernetes] 쿠버네티스 "coredns CrashLoopBackOff", "10.96.0.1:443: connect: no route to host" 에러 (firewalld)

쿠버네티스 "coredns CrashLoopBackOff", "10.96.0.1:443: connect: no route to host" 에러 (firewalld) 아래와 같이 corends CrashLoopBackOff가 발생하며 Pod Log를 확인했을때 "10.96.0.1:443: connect: no route to host" 에러가 발생할 경우 firewalld가 실행중인것은 아닌지 확인해볼 필요성이 있습니다. 저의 경우 아래 명령들을 통해 에러가 해결되었습니다. systemctl stop firewalld systemctl stop kubelet systemctl stop docker iptables --flush iptables -tnat --flush systemctl start kubel..

[Kubernetes] 쿠버네티스 master node "NotReady" 해결 방법 (coredns pending)

쿠버네티스 master node "NotReady" 해결 방법 (coredns pending) 쿠버네티스를 설치하고나서 보니 마스터노드의 NotReady 가 발생 하였는데, get pods로 확인해보니 coredns가 Pending 상태임을 확인 하였습니다. 보통 노드와의 통신이 안되거나 CNI 설치가 되어있지 않은 경우에 coredns pending이 발생하기 때문에, CNI를 설치해주시거나 아래 방법으로 kube-flannel.yml을 적용시켜 해결하는 방법이 있습니다. 1) kube-flannel.yml 적용 kubectl edit cm coredns -n kube-system를 입력하여 24라인의 loop 부분을 주석 처리 아래 명령 입력 kubectl apply -f https://raw.git..

[Docker] 도커파일 Apache-Tomcat 망분리 구축 및 Zabbix-Agent 설치 간단 예제 (Apache Dockerfile, Tomcat Dockerfile, Zabbix-agent Dockerfile)

도커 Apache-Tomcat 망분리 구축 및 Zabbix-Agent 설치 코드 (Apache Dockerfile, Tomcat Dockerfile, Zabbix-agent Dockerfile) 기존에 올렸던 포스팅(https://nirsa.tistory.com/132?category=876464)을 도커파일로 변환시켜서 사용하는 예제 입니다. 셋팅자체는 위의 포스팅과 거의 똑같고 서버 IP 등의 정보는 변경해서 사용하시면 됩니다. 기본적으로 연결하기 위한 간단한 설정만 적용된 apache, zabbix-agent 두가지 Dockerfile을 만든 후 docker-compose를 사용하여 실행 했습니다. 간단히 작성된것이므로 볼륨등을 추가적으로 설정 후 사용하시는게 좋습니다. 만약, 소스코드를 따로 설정..

Container/Docker 2020.05.29

[Kubernetes] 쿠버네티스 cordon,drain,PDB 개념과 정리 (k8s Poddisruptionbudget)

cordon cordon은 특정 노드를 선택하여 스케줄 대상에서 제외 시킵니다. 간단한 deployment nginx 이미지를 생성해주는 매니페스트 파일을 작성 후 아래와 같이 cordon 명령을 실행하면 선택한 특정 노드가 SchedulingDisabled 상태가 되는것을 확인할 수 있습니다. kubectl get nodes : 기존 노드 STATUS 확인 kubectl get pod -o custom-columns=Pod:metadata.name,Node:spec.nodeName : Pod가 배치된 노드 확인 kubectl cordon [노드네임] : 해당 노드에 cordon 적용 kubectl get nodes : 기존 노드 STATUS에 SchedulingDisabled가 추가된 내용 확인 이후 ..

[Kubernetes] 쿠버네티스 HPA 개념과 구성 (HorizontalPodAutoscaler, 오토스케일러)

쿠버네티스 HPA 이란? HPA(HorizontalPodAutoscaler)는 CPU, Memory 등 리소스가 정해둔 임계치를 초과할 경우 자동으로 스케일 아웃(Pod의 리소스를 증가 시키지 않고, Pod 개수 자체를 늘려줌) 해주는 기능을 갖추고 있습니다. HPA 컨트롤러가 리소스를 체크하며 정해둔 replicas 수에 맞춰 Pod를 줄이거나 늘려줍니다. 아래 리소스들을 이용하여 HPA를 구성할 수 있습니다. Deployment Replicaset StatefulSet Recplication Controller , 쿠버네티스 HPA 구조 위와 같은 과정을 통해 replicaset을 배포하고, 모든 Pod의 사용률 총합을 구한 뒤 HPA 매니페스트 파일에 지정한 사용률을 나눠 배포할 replicas 개..

[Kubernetes] kubespray로 ansible-playbook 명령어 실행 시 "assertion: groups.etcd | length is not divisibleby 2" 에러

kubespray "assertion: groups.etcd | length is not divvisibleby 2" 에러 kubespray 설치 후 ansible-playbook 명령어로 k8s 설치 진행 시 "assertion: groups.etcd | length is not divisibleby 2" 에러가 발생할 수 있습니다. 해당 에러는 아래 이미지와 같이 inventory.ini 파일에 지정한 etcd가 짝수인 경우에 발생할 수 있습니다. 이 에러를 해결하기 위해선 etcd를 홀수로 늘리기 위해 노드를 추가하거나, -e ignore_assert_errors=yes 옵션을 추가하여 해결할 수 있습니다. 저같은 경우 테스트용이기도 하고 노드를 더이상 추가 하기가 힘들어서 -e ignore_ass..

[Docker] Ubuntu 16.04 Docker-CE 설치

Ubuntu 16.04 Docker-CE Install 아래 명령어를 입력하면 docker-ce 설치가 완료 됩니다. root 계정이 아닐 경우 앞의 명령어에 sudo를 입력하여 관리자 권한을 사용 해주세요. apt update && apt install apt-transport-https ca-certificates curl software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - apt-key fingerprint 0EBFCD88 add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(l..

Container/Docker 2020.03.24