2023.08.27 - [인프라/Kubernetes] - Kubernetes 실습 및 서비스 구축
Kubernetes 실습 및 서비스 구축
예상 k8s 서비스 아키텍쳐 Kubernetes 란? 쿠버네티스는 컨테이너화된 서비스를 쉽고 빠르게 배포,확장,관리하기 자동화 해주는 오픈소스 플랫폼입니다. k8s 사용 이유 쿠퍼네티스는 분산 되어 있는
younyellow.tistory.com
다시 로컬로 돌아와서 현재 상태
여기서 인그레스 컨트롤러를 적용하여 사용자가 지정한 규칙에 따라 적절한 마이크로 서비스로 라우팅 해줄 예정입니다.
사용 중인 노드 포트 서비스 종료
root@DESKTOP-Q4VBHGG:/home/yellownyou# kubectl delete service node-port
service "node-port" deleted
root@DESKTOP-Q4VBHGG:/home/yellownyou# kubectl delete service node-port2
service "node-port2" deleted
인그레스 컨트롤러 관련 리소스 설치
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.1.1/deploy/static/provider/cloud/deploy.yaml
서비스 1,서비스2 각각 클러스터 ip 생성
kind-clusterip-service1.yaml
apiVersion: v1
kind: Service
metadata:
name: cluster-ip-service1
spec:
ports:
- name: web-server-port1
port: 7000
targetPort: 8080
selector:
app: my-web-server1
type: ClusterIP
kind-clusterip-service2.yaml
apiVersion: v1
kind: Service
metadata:
name: cluster-ip-service2
spec:
ports:
- name: web-server-port2
port: 7001
targetPort: 8080
selector:
app: my-web-server2
type: ClusterIP
kubectl apply -f kind-clusterip-service1.yaml
kubectl apply -f kind-clusterip-service2.yaml
인그레스 yaml 파일 작성
kind-ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
ingressClassName: nginx
rules:
- http:
paths:
- path: /(.*)
pathType: Prefix
backend:
service:
name: cluster-ip-service1
port:
number: 8080
- path: /service2/(.*)
pathType: Prefix
backend:
service:
name: cluster-ip-service2
port:
number: 8080
annotactions:
nginx.ingress.kubernetes.io/rewrite-target: /
이걸 사용하면 경로를 /service2 부분을 빼고 연결 해 줍니다.
root@DESKTOP-Q4VBHGG:/home/yellownyou# kubectl apply -f kind-ingress.yaml
root@DESKTOP-Q4VBHGG:/home/yellownyou# kubectl get service --all-namespaces
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
default cluster-ip-service1 ClusterIP 10.96.254.222 <none> 7000/TCP 7m7s
default cluster-ip-service2 ClusterIP 10.96.173.147 <none> 7001/TCP 7m4s
default kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 3d19h
default nfs-service ClusterIP 10.96.192.4 <none> 2049/TCP,111/UDP 3d19h
ingress-nginx ingress-nginx-controller LoadBalancer 10.96.75.97 <pending> 80:30990/TCP,443:32256/TCP 12m
ingress-nginx ingress-nginx-controller-admission ClusterIP 10.96.94.133 <none> 443/TCP 12m
kube-system kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP,9153/TCP 3d19h
kube-system metrics-server ClusterIP 10.96.117.28 <none> 443/TCP 39m
테스트
정상적으로 작동 하는 것을 볼 수 있습니다.
관련 코드는
https://github.com/Sihyun3/LearningKubernetes
GitHub - Sihyun3/LearningKubernetes
Contribute to Sihyun3/LearningKubernetes development by creating an account on GitHub.
github.com
에서 확인 할 수 있습니다.
'인프라 > Kubernetes' 카테고리의 다른 글
VitualBox를 통해 RKE2 cluster 구축 (0) | 2024.12.09 |
---|---|
AWS EKS 생성 (0) | 2023.09.12 |
Jenkins를 통한 Kubernetes rolling update (0) | 2023.09.03 |
Kubernetes Pods Auto Scalling (0) | 2023.09.03 |
Kubernetes 퍼시스턴트 볼륨 (0) | 2023.08.31 |