일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 컨테이너
- 도커
- docker
- springboot
- devops #engineer
- java
- multivm
- linux
- mongodb operator
- httpd실행
- ioredirection
- Vagrant
- WEB
- bash
- devops #jenkins
- nginx
- python
- variable
- container
- Strimzi
- k8s
- namespace
- RSS
- 파이썬
- 쿠버네티스
- aws #engineer
- Engineer
- Kubernetes
- 초간단파이썬
- DOIK
- Today
- Total
목록Container (24)
샤인의 IT (막 적는) 메모장
실제 Kubenetes Cluster들을 운영하면서 발생한 문제입니다.(v1.18.4) Worker 노드별로 각각 분류하여 서비스를 하고 있는데 어느날 kubelet 에러로그에 찍히더라구요. #Kubelet Orphen 파드 에러 내용 .. kubelet_volumes.go: 154] orphaned pod "c6d6f77b-asdf-bc54-418391de" found, \ but volume subpaths are still present on disk : There were a total of 4 errors similar to this. Turn up verbosity to see them 으잉? 하면서 확인했습니다. log flooding 상태더라구요. 해당 파드 정보를 찾을수 없다는 로그를 보..
K8s 네임스페이스의 공식적인 Official 정의는 쿠버네티스의 물리 클러스터에 가상 클러스터를 지원하는데 이 가상 클러스터를 네임스페이스라고 부른다고 명칭 구조화된 인프라 환경에서 개발-검증-운영으로 나눌수 있는데(하나의 물리적인 클러스터라고 가정시) dev-namespace / verif-namespace / oper-namespace 이런식으로 각각의 네임스페이스를 만들고 해당 네임스페이스에서 각각의 작업을 수행할 수 있다. 생성은 단순하다. #Create Namespace kubectl create ns my-namespace YAML도 단순한데 크게 설정하는 부분은 없다. apiVersion: v1 kind: Namespace metadata: creationTimestamp: null nam..
쿠버네티스가 직접 관리하는 사용자 계정 인증방법으로는 기본 RootCA 인증서, Key를 통한 인증, TLS 인증, Bearer Token 지원 Bearer Token은 HTTP 헤더에 포함하여 인증하기 때문에 JWT(JSON Web Token)을 사용하는데 BASE64로 인코딩 되어 있음 (sa.key, sa.pub) 생각보다 오픈소스 배포할 때 굉장히 많이 사용하는데 SA 생성 -> Clusterrole 생성 -> Clusterrolebinding 연결 작업이 많다. #ServiceAccount 생성 kubectl create sa -n #ServiceAccount 확인 kubectl get sa -n #생성 후 yaml 확인 kubectl get sa default -n kube-system -oy..
기본 구조. Kubernetes에서 배포할 때 기본적으로 Deployment나 Statefulset을 이용하여 Pod를 배포한다 Pod는 하나의 컨테이너 뿐 아니라 내부에 복수 컨테이너를 집어넣어 배포할 수 있다. 예로들면 개발자가 App을 만들어 이미지로 만들고(Dockerfile) App이 올라가는 곳이 파드이다. 보통 Pod만 배포해서 사용하지 않고 그 Pod들을 관리하기 위해 Deployment나 Statefulset을 사용한다. Deployment = Stateless Pod 배포 리소스 Statefulset = Stateful Pod 배포 리소스 Stateless와 Stateful에 대해서 알아야하는데 해석 그대로 상태를 가지냐 안가지냐로 나뉜다. 나는 주로 데이터를 저장하느냐 안하느냐로 St..
쿠버네티스는 Container Orchestration Framework로 컨테이너를 조화롭게 해주는 틀을 제공항한다. 앞전에 도커 설명할 떄 Host 위에 바로 컨테이너가 올라가는 것과 같이 이렇게 올라가는 컨테이너들을 관리해준다. 주요기능으로 서비스 디스코버리, 셀프 힐링, 로드밸런싱, 롤링업데이트를 지원한다. (K8s 리소스의 기능들) 여기서 쿠버네티스에서 사용하는 컴포넌트와 오브젝트에 대해 알아보면 kube-api-server : 모든 요청을 처리하는 API 서버 etcd : 분산 데이터 키-값 저장소, 클러스터의 모든 설정 및 상태 저장 kube-controller-manager : K8s의 모든 리소스를 관리하는 역할 수행 cloud-controller-manager : 퍼블릭 클라우드에 특화..
도커를 설치하게 되면 자동으로 Network Driver가 설치된다. 여러가지 네트워크 옵션을 사용할 수 있는데 Host Network, Bridge, Macvlan, UDN(User Defined Network) 등등 사용 가능하다. 대세는 역시 SDN.. Network 명령어 정리 #--net=network-option Flag를 추가하여 사용한다. --net=host --net=bridge --net=macvlan #UDN(서브넷,게이트웨이,네트워크 드라이버 보조 IP) --subnet=subnet --gateway=gateway --aux-address 1=address1 --aux-address 2=address2 #Ex default option은 bridge 모드다. docker run -d..
컨테이너는 일시적, 일회성으로 사용한다. (Stateless) 즉, 상태가 유지되지 않기 때문에 컨테이너가 종료되면 사라진다. 따라서 컨테이너를 볼륨을 통해 데이터를 저장해야 한다. Docker Storage 연결 #Docker Host 볼륨 공유 #-v Host-dir:/Container-dir #ex docker run -d --name web nginx:latest -v /root/data:/usr/share/nginx/html -p 80:80 따로 데이터만 저장하는 컨테이너를 생성한 후 Volume을 붙여서 저장공간으로만 활용도 가능하다 alpine Linux에 볼륨으로 웹서버 볼륨을 붙이는 경우? 따로 run 명령어로 바로 생성하지 않고 볼륨을 먼저 생성한 후 적용도 가능하다. 앞 예제에서 /r..
도커에서 이미지를 생성하기 위해 Dockerfile로도 작성이 가능하다. build 명령어를 통해서 Dockerfile을 생성하는데 디렉토리를 생성한 후 Build를 수행하는 것이 좋다. Docker build -t : . Dockerfile 정리 #받아올 이미지 FROM IMAGE:TAG #작성자 작성 MAINTAINER NAME #환경변수 설정 ENV user=sshine #HOST 볼륨 지정 VOLUME /mydata #컨테이너 내 명령어를 수행한다. RUN Shell Command #COPY는 파일 복사, ADD는 Archive와 같이 압축파일을 풀어서 컨테이너로 전달 COPY Hostfile-path Container-path ADD Hostfile-path Container-path #Shel..
도커 저장소는 보통 Docker Hub를 사용하는데 폐쇄망에서 이미지 레포지토리를 구성해야하는 경우엔 어떤 방법을 사용해야 할까요? 도커에서 해당 이미지들을 보관하기 위해 Docker-registry를 사용합니다. 물론 지금 글을 적는 이 시점에서 Docker-registry도 많이 사용하진 않지만 (안타까운 Docker...) 항상 Docker를 구성할 때 나오는 얘기였습니다. (요샌 대부분 Harbor 씁니다) 그럼 Docker Registry를 설치하고 사용해보겠습니다. 레지스트리는 컨테이너로 올라가게되며 Port를 설정한 후 로그인을 하게 됩니다. docker run -d -p 5000:5000 --restart always --name registry registry:2 #Default ID/P..
도커 이미지 및 가동된 컨테이너를 tar 파일로 만드는 법에 대해 알아보겠습니다. 보통 실무에서는 해당 이미지를 빌드해서 tar 파일로 압축해서 해당 서버에 올리는 작업을 수행합니다. 이미지를 압축하는 방법은 두가지로 분류되는데 이미지 실행중인 컨테이너 두가지를 압축할 수 있습니다. 압축을 실행하기에 앞서 해당 이미지를 Tagging하는 작업이 우선적으로 필요합니다. 이미지 태깅 #Image Tag docker tag nginx:1.14 nginx:v1 [root@docker docker]# docker tag nginx:1.14 nginx:v1 [root@docker docker]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx 1.14 295c7..