## 3.2 쿠버네티스 설치
- Ubuntu18.04 실습
- 예제 소스 (https://github.com/uphiller/dockerbook/blob/master/kubernetes-setup.sh)
sudo apt-get update
sudo apt-get -y install \
apt-transport-https \
ca-certificates \
curl \
gnupg2 \
software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
sudo usermod -aG docker $USER
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
sudo kubeadm init (EC2 CPU 2개 이상 필요)
<토큰 - worker 노드 추가시 필요>
kubeadm join 10.0.1.52:6443 --token 5obn70.fatoytcpf7id821j \
--discovery-token-ca-cert-hash sha256:8f327e2f3dcc394306e9bf0aa14dee2695e4708413311cfedfe436bddaeee023
토큰은 24시간의 제한시간이 있고, kubeadm create token 명령어를 통해 재발급.
ubuntu@ip-10-0-1-52:~$ sudo kubeadm token create --print-join-command
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
- 파트 네트워크 Add-On설치
: 본격적으로 통신을 하기 위해서는 Pod Network Add-On을 설치해야 한다.
: 파드들의 배포와 통신을 위해 네트워크를 설정해야 하기 때문이다.
: 다양한 애드온이 있지만 Weave Net 애드온을 설치할 것이다.
: 각 클러스터마다 Network Add-On 하나씩만 설치할 수 있다.
kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
ubuntu@ip-10-0-1-52:~/.kube$ watch kubectl get pods --all-namespaces
kubectl taint nodes --all node-role.kubernetes.io/master-
ubuntu@ip-10-0-1-52:~/.kube$ kubectl get nodes -o wide
설치된 쿠버네티스의 상태를 볼수 있다. Ready 상태가 되면 정상적으로 설치 된 것.
kubectl apply -f "https://cloud.weave.works/k8s/scope.yaml?k8s-service-type=NodePort"
(무슨 용도인지 향후 확인 필요)
- 쿠버네티스 사용포트 추가
- 모두 설치되었으니 도커를 사용할 때처럼 컨테이너를 하나 실행해보자.
ubuntu@ip-10-0-1-52:~/.kube$ kubectl run nginx-app --image nginx --port=80
ubuntu@ip-10-0-1-52:~/.kube$ kubectl get pods
ubuntu@ip-10-0-1-52:~/.kube$ kubectl expose pod nginx-app --type=NodePort
ubuntu@ip-10-0-1-52:~/.kube$ kubectl get service
- 쿠버네티스에서 컨테이너를 담고 있는 객체인 파드를 생성하였고, 생성된 파드를 외부에 노출시킬수 있도록 서비스를 생성하였다.
http://52.78.131.230:30960/ (80포트가 아닌 내부포트 접속으로 성공)
- Pod 및 서비스 삭제
ubuntu@ip-10-0-1-52:~/.kube$ kubectl delete pod nginx-app
ubuntu@ip-10-0-1-52:~/.kube$ kubectl delete svc nginx-app
- 여기까지 단일 인스턴스에 쿠버네티스를 설치, nginx 컨테이너 실행했다.
'[AWS]' 카테고리의 다른 글
쿠버네티스 파드 (0) | 2020.09.22 |
---|---|
쿠버네티스 네임스페이스 (0) | 2020.09.22 |
도커 오케스트레이션 (0) | 2020.09.22 |
Docker-Compose (도커컴포즈) (0) | 2020.09.22 |
도커파일 (Dockerfile) (0) | 2020.09.22 |
댓글