0216 kubernetes

6democratickim9·2021년 2월 16일
0

가상화를 사용하는 이유:
물리적인 하드웨어(베어메탈)에서 사용하는 과정에서 하드웨어 가상화보다 리소스를 적게 차지하고 속도를 향상시킬 수 있다!

vagrant status

우분투(데비안)/센토스(레드햇) 가장 많이 쓰는 리눅스 배포판
둘 다 많은 명령어가 비슷하지만 어플리케이션/네트워크 명령어 등의 부분에서 약간 다를 수도
오늘은 CentOS 설치!

vagrant halt <삭제하고싶은 이미지 id>
vagrant destroy <노드 이름 명시>
  • 전원 꺼짐/ 그냥 halt만 쓰면 전체 종료
  • 해당 인스턴스 완전 삭제
vagrant up

은 poweroff된것도 다시 기동시킬 때 사용

vagrant ssh master
vagrant 파일이 있는 곳에서 실행


각자 접속
골뱅이는 서버 이름

잘 안바뀌면 이렇게 그냥 vagrantfile 바꿔도됨
vagrant reload
(halt하고 up 하는거)

꼬여서 걍 다 삭제하고 다시 up함


성공......

이동하기 번거로우니
xshell 을 통해 해야된다
현재 접속된 터미널 다 로그아웃하고

vagrant ssh-config node1
vagrant ssh-config node2
vagrant ssh-config master


Identityfile 경로 잘 기억해두기!

경로를 프라이빗 키 전까지 복붙해서 폴더 들어가기

xshell도 켜준다

포트번호/호스트/이름 변경

가져오기
Identityfile 경로->private_key 가져오기

이렇게 각각 만들어서 연결해주기

연결하고 루트파일 들어가서 강사님이 올려주신 루트대로 파일 내용 복붙

각각 센토스 설치 마치면 vi에 들어가서 ip주소 매핑해주기
centOS 에서는 apt-get 대신yum으로 다운받는다!

yum install -y yum-utils device-mapper-persistent-data lvm2 
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum update && yum install docker-ce
useradd dockeradmin

실제 업무에서는 이렇게 설치하진 않고.,.설치된 리눅스 이미지를 공유한다.

작성하다가

kubeadm join 192.168.56.10:6443 --token x1qogf.3i1d8zc267sm4gq8 \
--discovery-token-ca-cert-hash sha256:1965b56832292d3de10fc95f92b8391334d9404c914d407baa2b6cec1dbe5322

이건 예시이니 화면에 나타날 커맨드로 사용할것임


이부분 복사

kubectl get pods --all-namespaces

했을때 다 running 이어야됨! 근데 아직pending이라는건...진행중이라는것이니 잠시 대기한다.

쿠버네티스는 그룹으로 묶어서 설치할 수 있는데 그 묶는 단위를pod라고 한다.
pod도 쿠버네티스의 한 종류로, 컨트롤러 등의 리소스들을 설치하기 위해 두 가지 방법이 있다.
첫 번째는 프롬프트에 명령어 입력
두 번째는 작성해야될 파일을yml 파일로 만들어서 실행하는 방법

docker run -d -p 이미지 이름
이렇게 도커를 실행할 수 있었는데 이걸 도커 컴포즈 파일로 돌리는것도 가능했다!
쿠버네티스에서도 이 두 가지를 모두 지원해준다.
오브젝트/리소스 다운 가능/ 별도의 파일 만들어서 설치도 가능

칼리코도 yaml 파일 받아서 다운 가능하다.
apply 를 통해 다운받을 수 있다

다 실행중^-^

설치완료.

이제 복사해뒀던
kubeadm join 192.168.56.10:6443 --token 2uyblq.3s2baw46dz66gnqo \
--discovery-token-ca-cert-hash sha256:2e12aa34e51ba58925729dd2a3724dad253e937e79122d1bfe96ae0ec1b5d311

포트가 사용중이라면 kubadm 리셋

  • 포트문제 떴을때
systemctl restart kubelet

하고서 kubelet init 다시 만들어주거나 해당 포트 삭제하거나 해야될듯


sudo netstat -lnp | grep 10250
sudo kill Process_PID

이런 방식으로 해당 프로세스 삭제해주기

....
네트워크에 문제가 생겼다.

자꾸 한 노드에서 crashloopbackoff가 떴다
다른 노드 창에 들어가 get nodes 를 해보니

The connection to the server localhost:8080 was refused - did you specify the right host or port?

라고 뜸

리셋하고 구글링해봐도 뭐가 안나옴
그리고 내 얕은 지식으로...내용도 제대로 안읽힘.
정신이 아득해진다
ㅋㅋ

공부 더 열심히해야지...
꼭 짱이 돼서 컴퓨터 다 패버릴거야

master


  1  setenforce 0
    2  sestatus
    3  sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
    4  clear
    5  systemctl stop firewalld && systemctl disable firewalld
    6  systemctl stop NetworkManager && systemctl disable NetworkManager
    7  swapoff -a && sed -i '/ swap / s/^/#/' /etc/fstab
    8  xxxxxxxxxx cat <<EOF >  /etc/sysctl.d/k8s.confnet.bridge.bridge-nf-call-ip6tables = 1net.bridge.bridge-nf-call-iptables = 1EOF
    9  exit
   10  ()
   11  cat <<EOF >  /etc/sysctl.d/k8s.conf
   12  net.bridge.bridge-nf-call-ip6tables = 1
   13  net.bridge.bridge-nf-call-iptables = 1
   14  EOF
   15  sysctl --system
   16  cat <<EOF > /etc/yum.repos.d/kubernetes.repo
   17  [kubernetes]
   18  name=Kubernetes
   19  baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
   20  enabled=1
   21  gpgcheck=1
   22  repo_gpgcheck=1
   23  gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
   24  EOF
   25  yum update
   26  vi /etc/hosts
   27  clear
   28  yum install -y yum-utils device-mapper-persistent-data lvm2 
   29  yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
   30  yum update && yum install docker-ce
   31  useradd dockeradmin
   32  passwd dockeradmin
   33  curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
   34  chmod +x /usr/local/bin/docker-compose
   35  ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
   36  docker-compose -version 
   37  usermod -aG docker dockeradmin
   38  systemctl enable --now docker && systemctl start docker
   39  clear
   40  curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-
   41  chmod +x /usr/local/bin/docker-compose
   42  ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
   43  docker run hello-world
   44  yum install -y --disableexcludes=kubernetes kubeadm-1.15.5-0.x86_64 kubectl-1.15.5-0.x86_64 kubelet-1.15.5-0.x86_64
   45  systemctl enable --now kubelet
   46  kubeadm init --pod-network-cidr=10.96.0.0/16 --apiserver-advertise-address=192.168.56.10
   47  mkdir -p $HOME/.kube
   48  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
   49  sudo chown $(id -u):$(id -g) $HOME/.kube/config
   50  kubectl get pods --all-namespaces
   51  kubectl apply -f https://docs.projectcalico.org/v3.8/manifests/calico.yaml
   52  kubectl get pods --all-namespaces
   53  kubestl get nodes
   54  kubectl get nodes
   55  systemctl enable --now kubelet
   56  kubectl get nodes
   57  kubeadm reset
   58  kubectl get nodes
   59  kubectl get pods --all-namespaces
   60  clear
   61  kubectl apply -f https://docs.projectcalico.org/v3.8/manifests/calico.yaml
   62  kubectl get pods --all-namespaces
   63  kubeadm reset
   64  kubectl get pods --all-namespaces
   65  kubeadm reset
   66  history
   67  clear
   68  kubectl get pods --all-namespaces
   69  kubectl get nodes
   70  kubeadm join 192.168.56.10:6443 --token 2uyblq.3s2baw46dz66gnqo     --discovery-token-ca-cert-hash sha256:2e12aa34e51ba58925729dd2a3724dad253e937e79122d1bfe96ae0ec1b5d311
   71  curl -O https://docs.projectcalico.org/v3.8/manifests/calico.yaml 
   72  kubeadm init --pod-network-cidr=10.96.0.0/16 --apiserver-advertise-address=192.168.56.10
   73  clear
   74  kubectl get pods --all-namespaces
   75  mkdir -p $HOME/.kube
   76  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
   77  kubectl get pods --all-namespaces
   78  systemctl enable --now kubelet
   79     mkdir $HOME/.kube
   80     sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
   81  sudo chown $(id -u):$(id -g) $HOME/.kube/config
   82  kubectl get pods --all-namespaces
   83  sudo systemctl enable docker.service
   84  sudo service kubelet restart
   85  kubectl get pods --all-namespaces
   86  kubectl get nodes
   87  sudo kubeadm reset
   88  sudo swapoff -a
   89  sudo kubeadm init --pod-network-cidr=10.244.10.0/16 --kubernetes- 
   90    version "1.18.3"
   91  sudo rm -rf /home/cm/.kube
   92  mkdir -p $HOME/.kube
   93  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/confi
   94  mkdir -p $HOME/.kube
   95  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
   96  kubectl get pods --all-namespaces
   97  systemctl enable --now kubelet
   98  clear
   99  kubeadm init --pod-network-cidr=10.96.0.0/16 --apiserver-advertise-address=192.168.56.10
  100  mkdir -p $HOME/.kube
  101  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  102  kubectl apply -f https://docs.projectcalico.org/v3.8/manifests/calico.yaml
  103  kubectl get pods --all-namespaces
  104  kubectl get nodes
  105  kubectl get pods --all-namespaces
  106  clear
  107  kubectl get pods --all-namespaces
  108  mkdir -p $HOME/.kube
  109  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  110  sudo chown $(id -u):$(id -g) $HOME/.kube/config
  111  kubectl get pods --all-namespaces
  112  mkdir -p $HOME/.kube
  113  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  114  clear
  115  histmkdir -p $HOME/.kube
  116  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  117  clear
  118  mkdir -p $HOME/.kube
  119  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  120  mkdir -p $HOME/.kube
  121  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  122  kubectl get pods
  123  systemctl enable --now kubelet
  124  kubeadm init --pod-network-cidr=10.96.0.0/16 --apiserver-advertise-address=192.168.56.10
  125  kubeadm reset
  126  kubeadm init --pod-network-cidr=10.96.0.0/16 --apiserver-advertise-address=192.168.56.10
  127  mkdir -p $HOME/.kube
  128  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  129  kubectl get pods
  130  kubectl get pods --all-namespaces
  131  export KUBECONFIG=/etc/kubernetes/admin.conf
  132  systemctl enable --now kubelet
  133  kubeadm init --pod-network-cidr=10.96.0.0/16 --apiserver-advertise-address=192.168.56.10
  134  kubeadm reset
  135  kubeadm init --pod-network-cidr=10.96.0.0/16 --apiserver-advertise-address=192.168.56.10
  136  mkdir -p $HOME/.kube
  137  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  138  kubectl get pods --all-namespaces
  139  clear
  140  kubectl get pods --all-namespaces
  141  kubectl apply -f https://docs.projectcalico.org/v3.8/manifests/calico.yaml
  142  kubectl get pods --all-namespaces
  143  kubectl get nods
  144  kubectl get nodes
  145  clear
  146  kubectl get nodes
  147  kubectl version
  148  kubectl get pods --all-namespaces
  149  kubectl describe pod calico-node-g569t
  150  kubectl get pods --all-namespaces
  151  kubectl describe pod calico-node-g569t
  152  kubectl describe pod calico-node-g569t -n kube-system
  153  clear
  154  kubectl get pods --all-namespaces
  155  kubectl get all -n kube-system
  156  kubectl delete deployments calico-node
  157  kubectl delete deployments calico-node -n kube-system
  158  clear
  159  kubectl apply -f https://docs.projectcalico.org/v3.8/manifests/calico.yaml
  160  kubectl get pods --all-namespaces
  161  kubectl delete pod calico-node-g569t -n kube-system
  162  clear
  163  kubectl get pods --all-namespaces
  164  kubectl delete pod calico-node-s25xq -n kube-system
  165  kubectl get pods --all-namespaces
  166  clear
  167  kubectl get pods --all-namespaces
  168  kubectl describe pod calico-node-tj47
  169  kubectl describe pod calico-node-tj47 -n kube-system
  170  kubectl get pods --all-namespaces
  171  kubectl describe pod calico-node-tj47 -n kube-system
  172  kubectl get pods --all-namespaces
  173  kubectl get nodes
  174  clear
  175  kubectl get nodes
  176  kubectl version
  177  kubectl get nodes
  178  systemctl enable --now kubelet
  179  kubectl get nodes
  180  kubectl get pods --all-namespaces
  181  kubectl get nodes
  182  kubeadm reset
  183  clear
  184  kubeadm init --pod-network-cidr=10.96.0.0/16 --apiserver-advertise-address=192.168.56.10
  185  rm -rf $HOME/.kube
  186  mkdir -p $HOME/.kube
  187  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  188  sudo chown $(id -u):$(id -g) $HOME/.kube/config
  189  kubectl apply -f https://docs.projectcalico.org/v3.8/manifests/calico.yaml
  190  kubectl get pods --all-namespaces
  191  clear
  192  kubectl get nodes
  193  kubectl get pods 
  194  kubectl get pods --all-namespaces
  195  history

혹시 모르니 선생님이 봐주신 내용 history 따서 저장...

node2


1  setenforce 0
  2  sestatus
  3  sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
  4  systemctl stop firewalld && systemctl disable firewalld
  5  systemctl stop NetworkManager && systemctl disable NetworkManager
  6  swapoff -a && sed -i '/ swap / s/^/#/' /etc/fstab
  7  cat <<EOF >  /etc/sysctl.d/k8s.conf
  8  net.bridge.bridge-nf-call-ip6tables = 1
  9  net.bridge.bridge-nf-call-iptables = 1
 10  EOF
 11  sysctl --system
 12  cat <<EOF > /etc/yum.repos.d/kubernetes.repo
 13  [kubernetes]
 14  name=Kubernetes
 15  baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
 16  enabled=1
 17  gpgcheck=1
 18  repo_gpgcheck=1
 19  gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
 20  EOF
 21  yum update
 22  vi /etc/hosts
 23  clear
 24  yum install -y yum-utils device-mapper-persistent-data lvm2 
 25  yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
 26  yum update && yum install docker-ce
 27  y
 28  useradd dockeradmin
 29  passwd dockeradmin
 30  curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
 31  chmod +x /usr/local/bin/docker-compose
 32  ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
 33  docker-compose -version 
 34  usermod -aG docker dockeradmin
 35  systemctl enable --now docker && systemctl start docker
 36  clear
 37  docker run hello-world
 38  free -h
 39  yum install -y --disableexcludes=kubernetes kubeadm-1.15.5-0.x86_64 kubectl-1.15.5-0.x86_64 kubelet-1.15.5-0.x86_64
 40  7. Kubernetes 설정 - Masterkubeadm join 192.168.56.10:6443 --token 2uyblq.3s2baw46dz66gnqo \
 41  kubeadm join 192.168.56.10:6443 --token 2uyblq.3s2baw46dz66gnqo     --discovery-token-ca-cert-hash sha256:2e12aa34e51ba58925729dd2a3724dad253e937e79122d1bfe96ae0ec1b5d311
 42  kubectl get pods --all-namespaces
 43  kubectl get nodes
 44  history
 45  kubeadm join 192.168.56.10:6443 --token 2uyblq.3s2baw46dz66gnqo     --discovery-token-ca-cert-hash sha256:2e12aa34e51ba58925729dd2a3724dad253e937e79122d1bfe96ae0ec1b5d311
 46  kubectl get nodes
 47  kubeadm reset
 48  kubeadm join 192.168.56.10:6443 --token 2uyblq.3s2baw46dz66gnqo     --discovery-token-ca-cert-hash sha256:2e12aa34e51ba58925729dd2a3724dad253e937e79122d1bfe96ae0ec1b5d311
 49  systemctl enable kubelet.service
 50  kubeadm join 192.168.56.10:6443 --token 2uyblq.3s2baw46dz66gnqo     --discovery-token-ca-cert-hash sha256:2e12aa34e51ba58925729dd2a3724dad253e937e79122d1bfe96ae0ec1b5d311
 51  clear
 52  kubeadm join 192.168.56.10:6443 --token 2uyblq.3s2baw46dz66gnqo     --discovery-token-ca-cert-hash sha256:2e12aa34e51ba58925729dd2a3724dad253e937e79122d1bfe96ae0ec1b5d311
 53  kubeadm join 192.168.56.10:6443 --token bep7x3.fiz0cude8l4lu4py     --discovery-token-ca-cert-hash sha256:bf7704a1669ee9fe73622626defc8bd396684c4bb41467e07ca6808c64a0dd17 
 54  kubeadm reset
 55  kubeadm join 192.168.56.10:6443 --token a0ysm4.muxu3f3t3nro4t87     --discovery-token-ca-cert-hash sha256:e2fc865df3498870bbd81ab7e3b89a852be7e47f9d29545b9da3683ceae13206 
 56  kubectl get nodes
 57  kubeadm reset
 58  iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X
 59  kubeadm reset
 60  kubeadm join 192.168.56.10:6443 --token k03d34.io8l347m1v6njl10     --discovery-token-ca-cert-hash sha256:7b672ddeea5cde0f6d86418c4fddec7d0d51a62c4f97a9d06eb0122923fdf0a6 
 61  kubeadm join 192.168.56.10:6443 --token k03d34.io8l347m1v6njl10     --discovery-token-ca-cert-hash sha256:7b672ddeea5cde0f6d86418c4fddec7d0d51a62c4f97a9d06eb0122923fdf0a6 
 62  kubeadm reset
 63  clear
 64  kubeadm join 192.168.56.10:6443 --token k03d34.io8l347m1v6njl10     --discovery-token-ca-cert-hash sha256:7b672ddeea5cde0f6d86418c4fddec7d0d51a62c4f97a9d06eb0122923fdf0a6 
 65  clear
 66  kubectl version
 67  docker ps -a
 68  docker system prune
 69  clear
 70  docker system prune
 71  clear
 72  docker ps -a
 73  exit
 74  systemctl enable --now kubelet
 75  kubeadm reset
 76  vlear
 77  clear
 78  kubeadm join 192.168.56.10:6443 --token 8lw9zf.zlp9mo6urxjcwsdw     --discovery-token-ca-cert-hash sha256:2177b1e20bbb303562771c0a6d7ba2251ce627b02e48356b1b04372336462f31
 79  history

node1


      1  setenforce 0
    2  sestatus
    3  sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
    4  systemctl stop firewalld && systemctl disable firewalld
    5  systemctl stop NetworkManager && systemctl disable NetworkManager
    6  swapoff -a && sed -i '/ swap / s/^/#/' /etc/fstab
    7  cat <<EOF >  /etc/sysctl.d/k8s.conf
    8  net.bridge.bridge-nf-call-ip6tables = 1
    9  net.bridge.bridge-nf-call-iptables = 1
   10  EOF
   11  sysctl --system
   12  cat <<EOF > /etc/yum.repos.d/kubernetes.repo
   13  [kubernetes]
   14  name=Kubernetes
   15  baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
   16  enabled=1
   17  gpgcheck=1
   18  repo_gpgcheck=1
   19  gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
   20  EOF
   21  yum update
   22  vi /etc/hosts
   23  clear
   24  yum install -y yum-utils device-mapper-persistent-data lvm2 
   25  yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
   26  yum update && yum install docker-ce
   27  y
   28  useradd dockeradmin
   29  passwd dockeradmin
   30  curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
   31  chmod +x /usr/local/bin/docker-compose
   32  ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
   33  docker-compose -version 
   34  usermod -aG docker dockeradmin
   35  systemctl enable --now docker && systemctl start docker
   36  clear
   37  docker run hello-world
   38  free -h
   39  yum install -y --disableexcludes=kubernetes kubeadm-1.15.5-0.x86_64 kubectl-1.15.5-0.x86_64 kubelet-1.15.5-0.x86_64
   40  7. Kubernetes 설정 - Masterkubeadm join 192.168.56.10:6443 --token 2uyblq.3s2baw46dz66gnqo \
   41  kubeadm join 192.168.56.10:6443 --token 2uyblq.3s2baw46dz66gnqo     --discovery-token-ca-cert-hash sha256:2e12aa34e51ba58925729dd2a3724dad253e937e79122d1bfe96ae0ec1b5d311
   42  kubectl get pods --all-namespaces
   43  kubectl get nodes
   44  history
   45  kubeadm join 192.168.56.10:6443 --token 2uyblq.3s2baw46dz66gnqo     --discovery-token-ca-cert-hash sha256:2e12aa34e51ba58925729dd2a3724dad253e937e79122d1bfe96ae0ec1b5d311
   46  kubectl get nodes
   47  kubeadm reset
   48  kubeadm join 192.168.56.10:6443 --token 2uyblq.3s2baw46dz66gnqo     --discovery-token-ca-cert-hash sha256:2e12aa34e51ba58925729dd2a3724dad253e937e79122d1bfe96ae0ec1b5d311
   49  systemctl enable kubelet.service
   50  kubeadm join 192.168.56.10:6443 --token 2uyblq.3s2baw46dz66gnqo     --discovery-token-ca-cert-hash sha256:2e12aa34e51ba58925729dd2a3724dad253e937e79122d1bfe96ae0ec1b5d311
   51  clear
   52  kubeadm join 192.168.56.10:6443 --token 2uyblq.3s2baw46dz66gnqo     --discovery-token-ca-cert-hash sha256:2e12aa34e51ba58925729dd2a3724dad253e937e79122d1bfe96ae0ec1b5d311
   53  kubeadm join 192.168.56.10:6443 --token bep7x3.fiz0cude8l4lu4py     --discovery-token-ca-cert-hash sha256:bf7704a1669ee9fe73622626defc8bd396684c4bb41467e07ca6808c64a0dd17 
   54  kubeadm reset
   55  kubeadm join 192.168.56.10:6443 --token a0ysm4.muxu3f3t3nro4t87     --discovery-token-ca-cert-hash sha256:e2fc865df3498870bbd81ab7e3b89a852be7e47f9d29545b9da3683ceae13206 
   56  kubectl get nodes
   57  kubeadm reset
   58  iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X
   59  kubeadm reset
   60  kubeadm join 192.168.56.10:6443 --token k03d34.io8l347m1v6njl10     --discovery-token-ca-cert-hash sha256:7b672ddeea5cde0f6d86418c4fddec7d0d51a62c4f97a9d06eb0122923fdf0a6 
   61  kubeadm join 192.168.56.10:6443 --token k03d34.io8l347m1v6njl10     --discovery-token-ca-cert-hash sha256:7b672ddeea5cde0f6d86418c4fddec7d0d51a62c4f97a9d06eb0122923fdf0a6 
   62  kubeadm reset
   63  clear
   64  kubeadm join 192.168.56.10:6443 --token k03d34.io8l347m1v6njl10     --discovery-token-ca-cert-hash sha256:7b672ddeea5cde0f6d86418c4fddec7d0d51a62c4f97a9d06eb0122923fdf0a6 
   65  clear
   66  kubectl version
   67  docker ps -a
   68  docker system prune
   69  clear
   70  docker system prune
   71  clear
   72  docker ps -a
   73  exit
   74  systemctl enable --now kubelet
   75  kubeadm reset
   76  vlear
   77  clear
   78  kubeadm join 192.168.56.10:6443 --token 8lw9zf.zlp9mo6urxjcwsdw     --discovery-token-ca-cert-hash sha256:2177b1e20bbb303562771c0a6d7ba2251ce627b02e48356b1b04372336462f31
   79  history

시간이 정말 후딱 간다...

클라우드 그루에서

  • Launching an EKS Cluster
  • Deploying to a Google Kubernetes Engine Cluster

이거 해보긔
ㅎㅎ.......

대쉬보드는minikube dashboard
대부분의 일은 master에서 처리할것

namespace

클라우드 네이티브 어플리케이션 개발을 위해 필수적인것 4가지 요소

  • MSA
  • CI/CD
  • DevOps
  • 컨테이너 가상화

가상 머신 상태로 개발하면 많은 리소스들이 필요하기 때문에 컨테이너 가상화 사용중...필수적으로 사용할 것은 이런 컨테이너들을 다룰 수 있는 오케스트레이션 기술이 필요하다
오케스트레이션 도구의 표준화라 불리는 쿠버네티스를 사용하는 이유.
쿠버네티스가 사용하는 각각의 단위 기억하자!
쿠버네티스는 가장 작은 단위인 컨테이너를 그루핑 해서 부르고 이 단위를pod 라고 부른다.

node

  • 컨테이너가 배치되는 서버
    - 여기서 워크노드는 두 개임!
  • 노드는 컨테이너가 배치되는 서버를 얘기한다.

namespace

  • 여러 개를 가질 수 있다.
  • 클러스터끼리 구성할 수 있는 가상의 작업공간

pod

  • 컨테이너의 관리하는 집합 중 가장 작은 단위
  • 장고 컨테이너/파이썬 컨테이너 같은 것들을 그루핑해서 관리하는 것을 파드라고 부른다.
  • 파드 안에 여러 가지 컨테이너가 정의되어 있다.
kubectl get pods --all-namespaces

  • 모든 네임스페이스를 가진 파드들을 조사한다
    - READY: 클러스터를 구축한 상태이기 때문에 하나의 파드를 두 개의 노드에 나눠 작업 가능하다. 하나가 완벽하게 설치되었다.

  • namespace에 아무것도 적지 않으면 디폴트를 찾는거라 아무것도 나오지 않을것.

nohup kubectl proxy --port=8000 --address=192.168.56.14 --accept-hosts='^*$' >/dev/null 2>&1 &

프록시 설정은 하나만 해보기

kubectl run nginx-test --image=nginx --port 80 --generator=run-pod/v1

쿠버네티스가 알아서 리소스가 가장 한가한 pc에 설치했음(노드2번에 설치)

서비스

  • pod에 접근하기 위한 경로를 정의한다
  • 게이트웨이를 열어줌
  • 네트워크에 관련된 설정들은 서비스에서 관리한다!

kubectl edit service nginx-test # (ClusterIp -> NodePort)
외부로 열어놓도록 할것

쿠버네티스 잘 사용하려면 yml 파일 잘 사용하도록 해볼것

바로 반영된당

바뀜!

엔진엑스 실행된것 잘 확인할 수 있다

host pc 위에 Virtual box 설치했음. 그 안에 세 대의 CentOS라는 리눅스가 있다.
그리고 이 안에 도커가 있다. 우리가 도커와 쿠버네티스를 설치해놓은 상태. 그리고 이 안에 nginx 설치해뒀다 가상화해서 띄워놓음!

지난주에는 도커 데스크탑에 nginx를 띄워놓았음.
현재는 centOS 위에 엔진엑스를 띄워놓은 것이고 각종 컨테이너들을 띄워놓을 예정.
가상화를 얘기할 때 포트포워딩...
쿠버네티스와 현재 베이그란트까지 씌워둔것이라 고민할게 많아졌다.
(..됐다)
현재 컨테이너삼아서 배포가능

nginx는 변경하지 않으면 80포트를 사용한다. 해당 포드는 이 안에서만 사용한다 (웹서버라서)
만약에 컨테이너 밖에서 실행한다면?
curl 명령어와 웹브라우저 실행과 같은것이라고 생각하자.
80포트는 웹서버라는 얘기. centOS자체는 80포트가 없다.

yum install -y net-tools

해보고

netstat -ntpl

해보면 80 없음
리눅스에는 웹서비스 80이 안된다. 컨테이너 안에 80이 열려있는것임
CentOS 사용하기 위해 포트포워딩이 사용되어있음

80:30926

  • 80: 컨테이너
  • 30926: 윈도우즈 포트
    - 윈도우즈에서 30926에서 해야 접속이 가능해진다.

호스트pc에서는 못들어간다!
버추얼박스가 막아뒀기 때문.
우리는 현재 베이그란트에서 버추얼박스 대신 관리중.
그럼 베이그란트에서 포트포워딩을 해주면 된다.

3만번대의 포트가 6만번대의 포트와 연결될것이다.

포트포워딩을 해주지 않으면 접속이 어렵다!

베이그란트에서 이런 내용을 어디서 추가하느냐?
베이그란트 파일에서!

하단에 포트포워딩 넣어줌

이런 식의 구성이 된다.
수정 후

vagrant reload master 

하면
수정 내용이 반영된다.

kubestl get nodes

그리고 다시접속해보면..!

refused?

나는 아예 su -가 접속이 안된다
ㅋㅋ미친

systemctl status kubelet

으로 상태확인해보기

kubectl get svc
curl -x GET https://127.0.0.1:60000

기억하자!!!!

어떠한 서비스가 되었던간에 리눅스에 설치되어야 사용가능
nodejs 는 외부에서 접속가능
기본적인 그림!
이걸 도커에서 사용할때

  • 도커에서 사용할때 첫 번째 필요한것은 이미지!

  • 이미지가 있어야 컨테이너를 생성할 수 있다.

  • 실행하기위해서는 CMD나 ENTRYPOINT 사용.

  • 도커파일로 이미지 만들어서 컨테이너화 시키면 외부에서 접속하려면 포트 사용

  • 내부적인 컨테이너는 기본적으로 8000번으로 사용한다.

	docker run -d -p <포트포워딩> <이미지 이름:태그>

쿠버네티스로 설치할 때 (허브사이트에 이미지가 올라와있다고 가정)
최소 단위인 파드 만든다.
파드를 만들 때 기본적인 틀

  • 헬로우라는 이름의 라벨링..
  • 이미지는 컨테이너스 정보에 tmkube의 이미지를 가져온다(도커 컴포즈와 비슷)
  • ports에 포트 번호 명시 가능
  • 쿠버네티스의 서비스 오브젝트 필요. 여기서 포워딩 해주면 된다


서비스도...


이런게 있당

  • 쿠버네티스 데모버전 테스트해보기 전에 리눅스 버전에서 자바스크립트파일 먼저 작성한다음에 실행할것
    기본적으로 노드js는 8000번으로 시작.
  • 리눅스의 버추얼박스는 8000번으로 기동된다. 하지만 윈도우즈에서는 8000번 사용 못함. 그래서 포트포워딩을 문서에 작성해서 추가해준다. 윈도우즈에서 8080열고 8000번으로 포워딩 할 수 있도록 해주면 윈도우즈에서 http://127.0.0.1:8080 이라고 호출하면 8000번 포트가 응답할것!


요로케

이렇게 리눅스 버전이 완성되면 도커버전을 만들어볼것.
현재 리눅스에는 다 도커가 있기때문에 실행가능
이미지 빌드하고 실핼할 때 포워딩 걸어주면 실행될것ㅇㅣ야~~
쿠버네티스 버전을 만들땐 파드를 먼저 생성해준다.
vi editor 사용해서 만들어준다. 그 다음에 서비스 만들어줄것
쿠버네티스의 서비스가 포트를 열어주는 기능이기때문!

profile
인생은 그렇게 호락호락하지 않다..

0개의 댓글

관련 채용 정보