728x90

**쿠버네티스 이용

  1. docker desktop의 쿠버네티스 사용(minikube 사용하는 것과 동일)

  2. minikube 다운

  3. 리눅스에 직접 쿠버네티스를 사용

 

 

->project 할 때는 minikube 사용 안함

->hybrid, public cloud 사용 -> AWS, GCP에 올려서 사용

 

 

# Vagrantfile

Vagrant.configure("2") do |config|
  # Node1
  config.vm.define:"node-1" do |cfg|
    cfg.vm.box = "centos/7"
    cfg.vm.provider:virtualbox do |vb|
      vb.name="node-1"
      vb.customize ["modifyvm", :id, "--cpus", 1]
      vb.customize ["modifyvm", :id, "--memory", 1024]
    end
    cfg.vm.host_name="node1"
    # cfg.vm.synced_folder ".", "/vagrant", type: "nfs"
    cfg.vm.network "private_network", ip: "192.168.56.11"
    cfg.vm.network "forwarded_port", guest: 22, host: 19211, auto_correct: false, id: "ssh"
    cfg.vm.network "forwarded_port", guest: 8080, host: 18080
    cfg.vm.provision "shell", path: "bash_ssh_conf_4_CentOS.sh"
  end
  
  # Node2
  config.vm.define:"node-2" do |cfg|
    cfg.vm.box = "centos/7"
    cfg.vm.provider:virtualbox do |vb|
      vb.name="node-2"
      vb.customize ["modifyvm", :id, "--cpus", 1]
      vb.customize ["modifyvm", :id, "--memory", 1024]
    end
    cfg.vm.host_name="node2"
    # cfg.vm.synced_folder ".", "/vagrant", type: "nfs"
    cfg.vm.network "private_network", ip: "192.168.56.12"
    cfg.vm.network "forwarded_port", guest: 22, host: 19212, auto_correct: false, id: "ssh"
    cfg.vm.network "forwarded_port", guest: 8080, host: 28080
    cfg.vm.provision "shell", path: "bash_ssh_conf_4_CentOS.sh"
  end
  
  # master
  config.vm.define:"master" do |cfg|
    cfg.vm.box = "centos/7"
    cfg.vm.provider:virtualbox do |vb|
      vb.name="master"
      vb.customize ["modifyvm", :id, "--cpus", 2]
      vb.customize ["modifyvm", :id, "--memory", 2048]
    end
    cfg.vm.host_name="master"
    #cfg.vm.synced_folder ".", "/vagrant", type: "nfs"
    cfg.vm.network "private_network", ip: "192.168.56.10"
    cfg.vm.network "forwarded_port", guest: 22, host: 19214, auto_correct: false, id: "ssh"
    cfg.vm.network "forwarded_port", guest: 8080, host: 48080
    cfg.vm.network "forwarded_port", guest: 8001, host: 48001
  end
end

$vagrant up

$vagrant status

Current machine states:

 

node-1                    running (virtualbox)

node-2                    running (virtualbox)

master                    running (virtualbox)

 

This environment represents multiple VMs. The VMs are all listed

above with their current state. For more information about a specific

VM, run `vagrant status NAME`.

 

=> linux 서버 단기간에 3대 설치됨

 

ubuntu -> demian계열

centOS -> redhat계열

 

$vagrant halt (3개의 서버 종료)

$vagrant halt node-2

 

$vagrant destory (3개의 서버 삭제)

$vagrant destory node-2

 

$vagrant up node-2(start를 내포하고 있음)

 

$vagrant ssh master(접속)

[vagrant@ansible-server ~]$ sudo vi /etc/hostname

 

$vagrant ssh node-1

[vagrant@jenkins-server ~]$ sudo vi /etc/hostname

 

 

$vagrant ssh node-2

[vagrant@tomcat-server ~]$ sudo vi /etc/hostname

 

 

$vagrant halt

$vagrant up

 

$vagrant reload(halt + up)

 

 

$vagrant ssh node-1

[vagrant@node1 ~]$ ping 192.168.56.10

[vagrant@node1 ~]$ ping 192.168.56.12

 

$vagrant ssh-config node-1

Host node-1

  HostName 127.0.0.1

  User vagrant

  Port 19211

  UserKnownHostsFile /dev/null

  StrictHostKeyChecking no

  PasswordAuthentication no

  IdentityFile /Users/mhee4/vagrant/.vagrant/machines/node-1/virtualbox/private_key

  IdentitiesOnly yes

  LogLevel FATAL

 

 

xshell 실행 ->

Node1

hostname 127.0.0.1

port 19211

사용자 이름 : vagrant

public key : /Users/mhee4/vagrant/.vagrant/machines/node-1/virtualbox/private_key

 

=vagrant ssh node-1

(node-1)ssh -i .vagrant/machines/node-1/virtualbox/private_key vagrant@192.168.56.11

(node-2)ssh -i .vagrant/machines/node-2/virtualbox/private_key vagrant@192.168.56.12

(master)ssh -i .vagrant/machines/master/virtualbox/private_key vagrant@192.168.56.10

 

 

**docker & kubernetes 설치하기**

(참고)

https://github.com/joneconsulting/k8s/blob/master/kubernetes_install.md

 

joneconsulting/k8s

Contribute to joneconsulting/k8s development by creating an account on GitHub.

github.com

 

  1. Virtual Box 설치

  2. Vagrant 설치

  3. 작업 폴더 생성

  4. 사전 준비 - Masteer, Node 모두

  5. Docker 설치, 실행 -Master, Node 모두

    1. Docker compose 설치

    2. Docker 설치 확인

  6. Kubernetes 설치 - Master, Node 모두

  7. Kubernetes 설정 - Master

  8. Kubernetes 노드 연결 - Node

  9. Dashboard 설치 - Master

  10. Test

 

 

kubeadm join 192.168.56.10:6443 --token 6h030a.ecbnj3rtn3qifq1i     --discovery-token-ca-cert-hash sha256:d0ca18edc55fd23f5b5cfa67297dd6ab5b5658e7d791cf9ef3878c0a808106d3

 

--에러 잡기

node에 설치한 kubelet 버전과 master에 설치한 버전이 달라서 생기는 에러

 

(node)$yum erase kube*

(node)$kubelet version

(node)$docker version

(node)$kubeadm reset

(node)$rm -rf $HOME/.kube/config

(node)$yum install -y kubeadm kubectl kubelet

 

(master)$kubectl get pods

(master)$kubectl get nodes

(master)$kubectl get pods --all-namespaces

(master)$kubectl get pods --all -n kube-system

 

(master)$kubectl get pods -o wide

NAME         READY   STATUS    RESTARTS   AGE     IP                NODE    NOMINATED NODE   READINESS GATES

nginx-test   1/1     Running   0          2m36s   192.168.166.129   node1   <none>           <none>

 

(master)$kubectl expose pod nginx-test

(master)$kubectl get services

NAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)   AGE

kubernetes   ClusterIP   10.96.0.1      <none>        443/TCP   140m

nginx-test   ClusterIP   10.96.141.61   <none>        80/TCP    6s

 

 

(master)$kubectl edit service nginx-test (service : 외부랑 이어주기 위한 경로역할)

apiVersion: v1
kind: Service
metadata:
  creationTimestamp: "2021-02-16T06:46:02Z"
  labels:
    run: nginx-test
  name: nginx-test
  namespace: default
  resourceVersion: "12630"
  uid: 68edf7c2-a04f-42e0-a178-ae46b4fd4b57
spec:
  clusterIP: 10.96.141.61
  clusterIPs:
  - 10.96.141.61
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    run: nginx-test
  sessionAffinity: None
  type: NodePort
status:
  loadBalancer: {}

 

(master)$kubectl get services

NAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE

kubernetes   ClusterIP   10.96.0.1      <none>        443/TCP        149m

nginx-test   NodePort    10.96.141.61   <none>        80:30069/TCP   9m49s

 

(master)$curl -X GET http://127.0.0.1:30069

(기존의 실습했었던 도커)

 

(오늘 실습한 상황)

 

 

 

$netstat -ntpl (열려져 있는 포트 확인)

$kubectl get svc (port-forwarding 확인)

NAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE

kubernetes   ClusterIP   10.96.0.1      <none>        443/TCP        3h4m

nginx-test   NodePort    10.96.141.61   <none>        80:30069/TCP   44m

 

(Port-Forwarding 해준 모습) -> hostPC에서는 아직 사용불가
(Vagrant에서 포트포워딩 추가) -> hostPC에서 사용가능

 

 

#Vagrantfile

# master
config.vm.define:"master" do |cfg|
  cfg.vm.box = "centos/7"
  cfg.vm.provider:virtualbox do |vb|
    vb.name="master"
    vb.customize ["modifyvm", :id, "--cpus", 2]
    vb.customize ["modifyvm", :id, "--memory", 2048]
  end
  cfg.vm.host_name="master"
  #cfg.vm.synced_folder ".", "/vagrant", type: "nfs"
  cfg.vm.network "private_network", ip: "192.168.56.10"
  cfg.vm.network "forwarded_port", guest: 22, host: 19214, auto_correct: false, id: "ssh"
  cfg.vm.network "forwarded_port", guest: 8080, host: 48080
  cfg.vm.network "forwarded_port", guest: 8001, host: 48001
  end
end

 

$vagrant reload master

$sudo ssh master

password : dockeradmin

 

$kubectl get nodes

$kubectl get svc

 

(master)$curl -X GET http://127.0.0.1:30069

 

Kubernetes Demo

 

 

⭐️cloud-guru 실습해보기

Launching an EKS Cluster

GCP, Kubernetes

Deploying to a Google Kubernetes Engine Cluster

https://learn.acloud.guru/handson/61a6bef0-24f6-446e-8c30-e89fccb7d6d9

 

 

 

 

 

 

 

 

 

 

 

 

728x90

+ Recent posts