欢迎访问宙启技术站
智能推送

kubernetes二进制集群部署 三 ——负载均衡调度器部

发布时间:2023-05-15 01:16:48

在前文中,我们介绍了如何通过kubeadm工具快速搭建kubernetes集群。但是,当我们需要在集群中运行一个有状态的应用时,需要使用到外部负载均衡器来实现域名解析、路由调度等功能。本文将介绍如何部署外部负载均衡调度器来满足这些需求。

1. 负载均衡器选择

在选择负载均衡调度器时,有很多选项可供选择,如haproxy、nginx、traefik、envoy等。我们这里选择traefik作为我们的负载均衡调度器。traefik是一个用于反向代理和负载均衡的开源工具,它能够自动地将Kubernetes Service和Ingress资源转换为负载均衡器规则,并通过使用各种后端基础设施(如Docker、Swarm、 Kubernetes、Mesos等)来将请求路由到不同的服务。

2. 安装traefik

我们在一台主机上安装traefik,作为我们的负载均衡器。我们可以使用命令helm repo add stable https://kubernetes-charts.storage.googleapis.com/来添加helm chart库。

接下来,我们使用helm install命令来安装traefik chart。注意,这里的traefik是指定的releasename,stable/traefik是指trarifk的chart名称。

helm install traefik stable/traefik \
    --namespace kube-system \
    --set ssl.insecureSkipVerify=true \
    --set rbac.enabled=true \
    --set kubernetes.ingressClass=traefik

3. 配置traefik

我们在使用traefik作为kubernetes的负载均衡调度器时,需要将traefik配置为kubernetes的ingress controller。我们在traefik的chart中,通过修改values.yaml文件来配置traefik。

...
kubernetes:
  ingressClass: traefik
  namespaces:
    enabled: false
ssl:
  insecureSkipVerify: true # 允许自签名证书
pilot:
  enabled: false # 关闭pilot,使用kubernetes本身的ingress
rbac:
  enabled: true
kind: DaemonSet
...

配置文件中,我们将kubernetes的ingressClass配置为traefik,并关闭了pilot,使用kubernetes本身的ingress。

接下来,我们为traefik安装一个证书。由于我们是在本地环境中测试,我们可以使用mkcert这个开源工具生成自签名证书。

$ brew install mkcert
$ mkcert -install
$ mkcert localhost

安装完成后,我们需要将证书文件导入到kubernetes secret中。在本地执行以下命令:

$ kubectl create secret tls traefik-cert --key localhost-key.pem --cert localhost.pem -n kube-system

最后,我们为我们的测试应用创建一个ingress资源,将其配置到traefik中。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: test-ingress
  annotations:
    kubernetes.io/ingress.class: traefik
spec:
  tls:
  - hosts:
    - localhost
    secretName: traefik-cert
  rules:
  - host: localhost
    http:
      paths:
      - path: /whoami
        pathType: Prefix
        backend:
          service:
            name: whoami
            port:
              name: http

我们可以在浏览器中访问https://localhost/whoami,将得到I'm <pod-name>。这代表着我们的负载均衡调度器已经正确地调度到了集群中的一个pod上。

总结

本文介绍了如何使用traefik作为kubernetes的负载均衡调度器,通过配置traefik和安装证书,最终将一个应用配置到ingress资源中,实现了负载均衡的功能。