<aside> 📌 Kubernetes 구조
k8s cluster = master + node
</aside>
<aside> 🚨 worker node의 kubelet, docker가 중지된 경우
kuberlet 중지
다른 node에 생성
docker 중지
master의 API server에 접속이 되지 않는다
</aside>
<aside> 💡 cluster에 속하지 않는 컴퓨터에서 kubectl을 설치하여 k8s 관리하기
<aside> 💡 k8s 관리도구
CLI 형태
# pod 만들기
k run mygosmall --image jesuswithme/gosmall --port 80
yaml 형태
# --dry-run=client 실행하지않고 테스트만 하기
## 결과를 yaml파일로
k run myhttp --image nginx --port 80 **--dry-run=client** **-o yaml > test.yaml**
# yaml파일 적용해서 pod 만들기
k apply -f test.yaml
k get pod -o wide
# api 보기
# version 확인
k api-resources
k api-resources | wc -l
</aside>
<aside> 💡 Kubernetes 명령어
# cluster 구성정보보기
k config view
# log 보기
k get events
</aside>
<aside> 💡 Cluster IP expose로 pod을 노출시켜 외부에서 접속하기
# pod 만들기
k run mynginxweb1 --image nginx --port 80
# 확인
k get pod -o wide
# ClusterIP로 외부에 노출
k expose pod mynginxweb1 --type=ClusterIP
# svc
k get svc
curl 10.99.114.155
curl [clusterIP]
# edit 명령으로 mynginxweb1 pod 외부 노출 type 수정
# Cluster IP -> NodePort
k edit svc mynginxweb1
# 확인
k get svc
</aside>
<aside> 💡 Service 및 Ingress 활용
<aside> ❓ Service?
<aside> 🔍 종류
※ Cluster IP에서 selector 값과 연결할 pod의 lable 값이 같아야한다
k run myweb --image jesuswithme/verify-pod --port 80
k create svc --type clusterip myweb --tcp 80:80
k get pod -o wide
curl 10.36.0.1
k get svc
curl 10.97.98.56
안됌
k edit svc myweb
curl 10.97.98.56
# 외부에서 들어갈 때
k edit svc myweb
192.168.0.[]:NodePort
# yaml 파일 다운
wget <http://down.cloudshell.kr/k8s/lab/service/nginx-deploy-clusterip.yaml>
wget <http://down.cloudshell.kr/k8s/lab/service/nginx-deploy-clusterip--add.yaml>
# pod을 만듬
kubectl apply -f nginx-deploy-clusterip.yaml
kubectl apply -f nginx-deploy-clusterip-add.yaml
k get svc
# Endpoint 확인
k describe svc clusterip-nginx-add
# yaml 파일 다운로드
wget <http://down.cloudshell.kr/k8s/lab/service/nginx-deploy-clusterip-add-externalip.yaml>
# yaml 파일 수정
vi nginx-deploy-clusterip-add-externalip.yaml
curl 192.168.0.58
※ 단 외부IP에선 접속이 안된다. type → loadbalance로 수정해야 된다.
# yaml 파일 다운
wget <http://down.cloudshell.kr/k8s/lab/service/nginx-deploy-nodeport-add.yaml>
# yaml 파일 적용
## ClusterIP와 nodePort 설정 가능
k apply -f nginx-deploy-nodeport-add.yaml
<aside> 💡 MetalLB
# 없으면 다운
wget <http://down.cloudshell.kr/k8s/namespace.yaml>
wget <http://down.cloudshell.kr/k8s/metallb.yaml>
# 확인
k get ns
# metallb-system
k apply -f namespace.yaml
# yaml파일로 만들기
k apply -f metallb.yaml
# Metallb의 secret 생성
kubectl create secret generic -n metallb-system memberlist --from-literal=secretkey="$(openssl rand -base64 128)"
# yaml파일 수정 및 적용
## 외부에서 접속할 때 사용되는 IP생성을 위해 ConfigMap생성
vi ConfigMap-Metallb.yaml
k apply -f ConfigMap-Metallb.yaml
# deployment 만들기
k create deployment mygo --image=jesuswithme/gosmall --replicas 3
# loadbalancer로 mygo service create
k create service loadbalancer mygo --tcp 80:80
</aside>
<aside> ❓ Ingress? ※ 오직 web만
</aside>
</aside>