K8S 의 비 즈 니스 애플 리 케 이 션 방문 방법 깊이 놀 기 (Traefik - ingress 편)

6881 단어
전편 에 서 는 nginx - ingress 한 편 을 아예 옮 기 는 것 이 귀 찮 았 습 니 다. 이 편 은 우리 가 신기 Traefik 을 보 았 습 니 다. 저 는 개인 적 으로 Traefik 과 비교적 좋 고 편향된 편 입 니 다. 가 볍 고 사용 하기 쉬 우 며 인터페이스 도 있 습 니 다.
 
먼저 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

좋은 웹페이지 즐겨찾기