K8S 의 비 즈 니스 애플 리 케 이 션 방문 방법 깊이 놀 기 (Traefik - ingress 편)
먼저 Traefik 이 무엇 인지 소개 하 겠 습 니 다. Traefik 은 마이크로 서 비 스 를 더욱 편리 하 게 배치 하기 위해 탄생 한 현대 HTTP 역방향 대리, 부하 균형 도구 입 니 다.다양한 배경 (Docker, Swarm, Kubernetes, Marathon, Mesos, Consul, Etcd, Zookeeper, BoltDB, Rest API, file...) 을 지원 하여 설정 파일 설정 을 자동화 하고 동적 으로 적용 합 니 다.
왜 도 메 인 Traefik 에 편향 되 어 있 습 니까? 다음은 간단하게 비교 해 보 겠 습 니 다.
ingress:
nginx 를 전단 부하 균형 으로 사용 하고 ingress contrller 를 통 해 kubernetes api 와 끊임없이 상호작용 을 하여 실시 간 으로 백 엔 드 서비스, pod 등의 변 화 를 얻 은 다음 에 동적 으로 nginx 설정 을 업데이트 하고 새로 고침 을 통 해 설정 을 효력 을 발생 시 켜 서비스 발견 의 목적 을 달성 합 니 다.
traefik:
traefik 자체 가 디자인 한 것 은 실시 간 으로 kubernetes api 와 상호작용 을 하고 백 엔 드 서비스, pod 등의 변 화 를 감지 하 며 설정 을 자동 으로 업데이트 하고 다시 불 러 올 수 있 습 니 다.
상대 적 으로 traefik 은 더욱 빠 르 고 편리 하 며 더 많은 특성 을 지원 하여 역방향 대리, 부하 균형 을 더욱 직접적 이 고 효율 적 으로 한다.
어떻게 배치 하 는 지 알 아 보 겠 습 니 다. 간단 합 니 다. 먼저 소스 코드 를 clone 하 세 요.
[root@k8smaster ~]# git clone https://github.com/containous/traefik.git
디 렉 터 리 아래 에 무엇이 있 는 지 살 펴 보 는 김 에 해당 하 는 K8S 파일 을 찾 아 보 세 요.
[root@k8smaster ~]# cd traefik/
[root@k8smaster traefik]# cd examples/
[root@k8smaster examples]# cd k8s
[root@k8smaster k8s]# ls
cheese-default-ingress.yaml cheese-ingress.yaml cheeses-ingress.yaml traefik-ds.yaml ui.yaml
cheese-deployments.yaml cheese-services.yaml traefik-deployment.yaml traefik-rbac.yaml
[root@k8smaster k8s]# pwd
/root/traefik/examples/k8s
OK, 이 층 에 도착 하면 필요 한 파일 을 찾 을 수 있 습 니 다. 보통 두 개의 파일 만 필요 합 니 다. 첫 번 째 는 deployment 과 rbac 입 니 다.
이 유 는 간단 합 니 다. 첫 번 째 배치 에서 저 희 는 Kubernets 1.6 이후 RBAC 인증 체 제 를 사 용 했 기 때문에 ClusterRole 과 ClusterRole Binding 을 설정 하여 api - server 에 해당 하 는 권한 을 부여 하 는 인증 권 을 설정 해 야 합 니 다.
그럼 rbac 라 는 파일 은 ClusterRole 과 ClusterRoleBinding 을 만 든 것 입 니 다. deployment 파일 에 대해 서 는 말 하지 않 겠 습 니 다. 이 글 을 본 어린이 신발 은 K8S 에 대해 기본 적 인 인식 을 가지 고 있 을 것 이 라 고 믿 습 니 다.
rbac 생 성 시작
[root@k8smaster k8s]# kubectl apply -f traefik-rbac.yaml
clusterrole.rbac.authorization.k8s.io "traefik-ingress-controller" created
clusterrolebinding.rbac.authorization.k8s.io "traefik-ingress-controller" created
[root@k8smaster k8s]# kubectl get clusterrolebinding
NAME AGE
cluster-admin 113d
flannel 113d
heapster 113d
kubeadm:kubelet-bootstrap 113d
……….
traefik-ingress-controller 3s
[root@k8smaster k8s]# kubectl get clusterrole
NAME AGE
admin 113d
cluster-admin 113d
edit 113d
flannel 113d
clusterrole 을 볼 수 있 습 니 다. clusterrolebinding 이 모두 만 들 어 졌 습 니 다. 아래 에 Traefik 을 만 듭 니 다.
[root@k8smaster k8s]# kubectl apply -f traefik-deployment.yaml
serviceaccount "traefik-ingress-controller" created
deployment.extensions "traefik-ingress-controller" created
service "traefik-ingress-service" created
[root@k8smaster k8s]# kubectl get svc,deployment,pod -n kube-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
heapster ClusterIP 10.106.236.144 80/TCP 113d
kube-dns ClusterIP 10.96.0.10 53/UDP,53/TCP 113d
kubernetes-dashboard-external NodePort 10.108.106.113 9090:30090/TCP 113d
traefik-ingress-service NodePort 10.98.76.58 80:30883/TCP ,8080:30731/TCP 17s
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
heapster 1 1 1 1 113d
kube-dns 1 1 1 1 113d
kubernetes-dashboard 1 1 1 1 113d
traefik-ingress-controller 1 1 1 0 18s
NAME READY STATUS RESTARTS AGE
etcd-k8smaster 1/1 Running 6 113d
heapster-6595c54cb9-f7gvz 1/1 Running 4 113d
kube-apiserver-k8smaster 1/1 Running 6 113d
……….
traefik-ingress-controller-bf6486db6-jzd8w 1/1 Running 0 17s
서비스 와 pod 가 모두 일어 나 는 것 을 볼 수 있 습 니 다.
아까 앞에서 도 말씀 드 렸 듯 이 아주 간결 하고 예 쁜 인터페이스 가 있어 서 운영 통계 관리 에 매우 적합 합 니 다. 다음은 보 겠 습 니 다.
[root@k8smaster k8s]# cat ui.yaml
---
apiVersion: v1
kind: Service
metadata:
name: traefik-web-ui
namespace: kube-system
spec:
selector:
k8s-app: traefik-ingress-lb
ports:
- name: web
port: 80
targetPort: 8080
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: traefik-web-ui
namespace: kube-system
spec:
rules:
- host: traefik-ui.minikube
http:
paths:
- path: /
backend:
serviceName: traefik-web-ui
servicePort: web
[root@k8smaster k8s]# kubectl apply -f ui.yaml
service "traefik-web-ui" created
ingress.extensions "traefik-web-ui" created
[root@k8smaster k8s]# kubectl describe ing traefik-web-ui -n kube-system
Name: traefik-web-ui
Namespace: kube-system
Address:
Default backend: default-http-backend:80 ()
Rules:
Host Path Backends
---- ---- --------
traefik-ui.minikube
/ traefik-web-ui:web (10.0.100.203:8080,10.0.100.204:8080)
방금 traefix - web - ui 의 ingress 를 발 표 했 습 니 다. 그 다음 에 우 리 는 도 메 인 이름 을 통 해 방문 할 수 있 습 니 다. K8S 를 놀 았 을 때 방금 ui - incress 라 는 yml 파일 에 도 메 인 이름 이 있 습 니 다. traefik - ui. minikube, 백 엔 드 traefix - web - ui 라 는 서 비 스 는 pod 주소 10.100.203: 8080 과 10.100.204: 8080 을 볼 수 있 습 니 다.
traefik - ui. minikube 도 메 인 이름 으로 traefix - ui 에 접근 할 수 있 도록 이 컴퓨터 hosts 파일 을 수정 합 니 다.
자, 본 고 는 여기 서 마 치 겠 습 니 다. 이 글 은 Traefix 의 http 방문 대 리 를 초보 적 으로 실 현 했 을 뿐 입 니 다. 어떻게 하면 traefix 가 https 대 리 를 실현 하고 traefix 에 대해 더 많은 설정 을 할 수 있 는 지 후속 블 로그 에서 토론 할 것 입 니 다.
본문 참고 자료:
http://traefik.cn/
http://blog.51cto.com/goome/2151353
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.