使用k3d启动k3s集群
完整的 Kubernetes 集群往往非常复杂,需要较高的资源,往往我们在开发期间需要一个完整的 Kubernetes 来运行我们的应用,但是并不要求达到生产级别的集群,K3d 是一个允许我们在 Docker 容器内运行 k3s 的工具。
安装k3d
1 | curl -Lo k3d http://rancher-mirror.cnrancher.com/k3d/v4.2.0/k3d-linux-amd64 |
启动集群
使用k3d启动k3s集群
1 | k3d cluster create mycluster \ |
上面的创建集群命令有几个需要注意的地方:
- 使用指定版本镜像,因为默认安装最新版,使用起来可能有未知问题。
- 我们将本地主机的80和443端口映射到 k3s 虚拟负载均衡器上,这可以让我们能够直接从本地主机上访问到 ingress 资源。
- 群集的部署没有使用默认的 Traefik Ingress 控制器。
--k3s-server-arg
参数使用参考安装选项为什么要禁用 Traefik?因为我们可能想使用另一个 Ingress 控制器,或者因为 k3s 默认是与 Traefik 1 绑定在一起的,后面我们会安装Traefik 2 版本。
因为需要配置docker.io镜像加速
创建registries.yaml
文件
1 | sudo tee registries.yaml >> EOF |
启动k3s集群
1 | k3d cluster create mycluster \ |
获取凭证
运行下面的命令获取你的凭证,将其保存在文件中并导出到你的环境中:
1 | cat ~/.kube/config |
通过运行一个简单的 Kubectl 命令来测试你是否可以访问集群。
kubectl自行安装
1 | kubectl cluster-info |
安装Traefik2
我们可以直接使用 Helm 来快速安装 Traefik 2
helm安装本文不再赘述
1 | # Add Traefik's chart repository to Helm |
安装到指定命名空间
1 | # Install in a Dedicated Namespace |
大概需要2-3分钟
出于安全考虑,默认情况下HelmChart不公开Traefik Dashboard。
等待traefik pod running后通过端口转发检查traefik是否正常工作。
1 | kubectl port-forward --address=0.0.0.0 $(kubectl get pods --selector "app.kubernetes.io/name=traefik" --output=name) 9000:9000 |
通过master节点IP:9000/dashboard/
访问traefik仪表盘
部署应用
接下来部署一个简单的应用程序来验证我们的 Ingress Controller 是否正确配置了
我将demo的yml文件放在github
在这个例子中,暴露了两个服务,每一个 URL 会被发送到对应服务上,我们可以在 Traefik Dashboard 上看到新的路由器。
要测试这个应用我们可以直接在浏览器中访问相应的域名即可,这是因为上面我们安装 Traefik 的时候自动创建了一个 LoadBalancer 的 Service 服务。