22.08.18[Docker/Kubernetes] Docker / Kubernetes (3)

김스타·2022년 8월 18일

Docker/Kubernetes

목록 보기
3/3

도커 이미지 생성

컨테이너 안에서 작업한 내용을 이미지로 만드는 방법

기존의 이미지로 변경사항을 만든다.
#docker run -i -t --name commit_test ubuntu:18.04
root@d5212ea299ad:/# echo test_first! >> first

root@ubuntu:~# docker commit \
-a "alicek106" -m "my first commit" \
commit_test \
commit_test:first
sha256:4de9a18096657f932b791de9a90af6fba8f638f3760e7a494bb0667ea5dd9c84

docker images로 이미지 생성 확인

first 이미지로 second 이미지 생성
first 이미지로 컨테이너 생성 -> second 파일 추가 -> second 이미지 생성

컨테이너의 이미지 구조 이해

#docker inspect ubuntu:18.04
#docker inspect commit_test:first
#docker inspect commit_test:second
inspect 명령어를 통해 이미지 컨테이너의 16진수의 해시값이 늘어나는 것을 확인할 수 있다.

ubuntu:18.04

first

second

도커 허브 저장소에 올리는 방법

로그인 후 Create Repository

정보 입력

이미지 저장소

docker run -i -t --name commit_container1 ubuntu:18.04
echo my first puch >> test

docker commit commit_cntainer1 my-image-name:0.0

이미지 이름 추가
docker tag my-image-name:0.0 kimstar01/my-image-name:0.0

도커 허브 서버에 로그인

이미지 저장소에 올리기

이미지 확인
tags 항목에서 확인

Kubernetes

설치

쿠버네티스 저장소 추가

쿠버네티스 도커 설치

ip address 확인 방법
ip addr

쿠버네티스 클러스터 초기화

삭제하고 다시하기
kubeadm reset으로 방화벽 확인

root@ubuntu:~# ls -l /etc/apt/sources.list.d/
total 4
-rw-r--r-- 1 root root 53 Aug 18 14:27 kubernetes.list
root@ubuntu:~#
root@ubuntu:~# rm /etc/apt/sources.list.d/kubernetes.list
root@ubuntu:~# ls -l /etc/apt/sources.list.d/
total 0

  1. 메모리 스왑 해제 (성능 저하 문제때문)
    swapoff -a

  1. 구글 클라우드 퍼블릭 키 다운로드 (k8s 관련 파일)
    curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -

  1. k8s repository 생성
    cat <<EOF > /etc/apt/sources.list.d/kubernetes.list deb http://apt.kubernetes.io/ kubernetes-xenial main EOF

  1. Docker 설치 -> 생략
  2. Containerd 구성 초기화 (K8S를 containerd에 바로 연결) 후 containerd 재시작
    containerd config default > /etc/containerd/config.toml
    service containerd restart

  1. K8S 설치 (k8s 설치 sw package: kubelet, kubeadm, kubectl, kubernetes-cni)
    apt-get update

apt-get install -y kubelet kubeadm kubectl kubernetes-cni

systemctl daemon-reload

systemctl restart kubelet

  1. K8S Master Node 구성하기 (K8S cluster 초기화 또는 구성) ##ip addr는 현재 설치 노드의 IP
    kubeadm init --apiserver-advertise-address 172.20.14.26 \
    --pod-network-cidr=192.168.0.0/16 --cri-socket /run/containerd/containerd.sock

  2. K8S Master Node 설정
    -> 7번에서 표시된 Master Node용 추가 명령 입력
    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config

  3. K8S Worker Node 설정
    -> 6.번까지 설정 후 7번에서 표시된 Worker Node용 추가 명령 입력
    kubeadm join 172.20.14.29:6443 --token 1bguxv.e0rsh8dmrdwifnfc \
    --cri-socket /run/containerd/containerd.sock

  4. 컨테이너 네트워크 애드온 설치
    kubectl apply -f https://docs.projectcalico.org//manifests/calico.yaml

  5. K8S 설치 및 클러스터 구성 확인
    kubectl get namespace -> kube-system namespace가 설치 확인
    NAME STATUS AGE
    default Active 47m
    kube-node-lease Active 47m
    kube-public Active 47m
    kube-system Active 47m

kubectl get nodes -> master node 설치 확인
NAME STATUS ROLES AGE VERSION
ubuntu Ready control-plane 19m v1.24.4

kubectl get nodes -> master node와 worker node들 확인
NAME STATUS ROLES AGE VERSION
ubuntu Ready control-plane 44m v1.24.4
ubuntu-02 Ready 51s v1.24.4

kubectl get nodes
kubectl get namespance
kubectl get pod --n kube-system
kubectl describe pod [pod-name] -n [namespace]
kubectl get pod -o wide -n [namespace]

0개의 댓글