<aside> 📌 Kubernetes 구조

</aside>

<aside> 🚨 worker node의 kubelet, docker가 중지된 경우

</aside>

<aside> 💡 cluster에 속하지 않는 컴퓨터에서 kubectl을 설치하여 k8s 관리하기

<aside> 💡 k8s 관리도구

</aside>

<aside> 💡 Kubernetes 명령어

# cluster 구성정보보기
k config view

# log 보기
k get events

</aside>

<aside> 💡 Cluster IP expose로 pod을 노출시켜 외부에서 접속하기

Untitled

# pod 만들기
k run mynginxweb1 --image nginx --port 80

# 확인
k get pod -o wide

Untitled

# ClusterIP로 외부에 노출
k expose pod mynginxweb1 --type=ClusterIP

# svc
k get svc

Untitled

curl 10.99.114.155
curl [clusterIP]

Untitled

# edit 명령으로 mynginxweb1 pod 외부 노출 type 수정
# Cluster IP -> NodePort
k edit svc mynginxweb1
# 확인
k get svc

Untitled

</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

Untitled

# 외부에서 들어갈 때
k edit svc myweb

192.168.0.[]:NodePort

Untitled

Untitled


ClusterIP 서비스

# 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

Untitled

# Endpoint 확인
k describe svc clusterip-nginx-add

Untitled


# yaml 파일 다운로드
wget <http://down.cloudshell.kr/k8s/lab/service/nginx-deploy-clusterip-add-externalip.yaml>

# yaml 파일 수정
vi nginx-deploy-clusterip-add-externalip.yaml

Untitled

Untitled

curl 192.168.0.58

Untitled

※ 단 외부IP에선 접속이 안된다. type → loadbalance로 수정해야 된다.


NodePort

# 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

Untitled


LoadBalancer

<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

Untitled

# 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

Untitled

</aside>


Headless


<aside> ❓ Ingress? ※ 오직 web만

</aside>

</aside>