先决条件:
1、安装了适用于 Mac / Windows 的 Docker CE(docker-for-mac-install、docker-for-windows-install)
2、Kubernetes-cli 程序或 kubectl。对于 Mac,您应该能够使用 Homebrew 包管理器和命令行命令 brew install kubernetes-cli 获取它。或者,如果您使用的是 Windows 并拥有 chocolatey 包管理器,则可以使用 choco install kubernetes-cli。您也可以使用本指南 install-kubectl。
3、在您的桌面版 Docker CE 上启用 Kubernetes。完全按照说明启用 k8s,因为这也有助于配置您的 kubectl 程序。
可选:查看 MetalLB 的文档和 github repo 以进行更深入的研究 metallb、metallb2。现在我们已经满足了先决条件,让我们开始吧。
首先,我们需要应用 MetalLB 清单。
kubectl apply -f metallb
接下来,我们要检查控制器和扬声器是否正在运行。我们可以使用此命令来执行此操作。
kubectl get pods -n metallb-system
一旦这些 pod 运行,我们就可以部署我们的 MetalLB 配置。
接下来,我们要部署一个可与 Docker CE 配合使用的配置。通常,我们会部署 MetalLB 来与启用了 dhcp 的路由器或 BGP 路由器进行通信。但为了实现 Mac 和 Windows 的 Docker CE 环境,我们将部署它来与我们桌面的本地主机环境配合使用。如果我们想在公司防火墙后面测试 MetalLB,并且无法访问 BGP 路由或 ARP 路由策略,这将对我们有所帮助。有关更多信息,请查看 MetalLB 站点 metallb concepts 上的文档。对于此快速入门,我们将使用第 2 层配置,因为它是最容易上手的。
看一下我们的配置:
apiVersion: v1
kind: ConfigMap
metadata:
namespace: metallb-system
name: config
data:
config: |
address-pools:
- name: my-ip-space
protocol: layer2
addresses:
- 127.0.0.240/28
您会注意到,这些地址仅是桌面本地地址。这是因为 DockerCE 在 Mac 和 Windows 上作为虚拟机进行了 NAT。即使您在网络上正确配置了所有内容以使用第 2 层和 DHCP,您的工作或家庭路由器也不知道该如何访问 DockerCE,因为它正在进行 NAT,这使得任何服务都只能在本地主机上使用。在更标准的部署中,您的地址看起来更像 10.0.1.240/28 或类似的地址。
话虽如此,您可以在此处访问此确切配置 metallb-testing 并下载和修改(如果需要)。如果没有,我们可以按原样应用此配置。
kubectl apply -f metallb-testing
一旦我们部署了配置,我们就可以应用部署和服务清单。
注意:由于这些 k8s 部署正在为您的应用程序使用本地主机 IP 地址方案,因此请务必记下您正在申请的端口,以确保您没有尝试映射到当前正在使用服务的端口。
apiVersion: apps/v1beta2
kind: Deployment
metadata:
name: nginx
spec:
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1
ports:
- name: http
containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginx
spec:
ports:
- name: http
port: 8080
protocol: TCP
targetPort: 80
selector:
app: nginx
type: LoadBalancer
上述配置是我们用来部署第一个应用程序的配置。我对主文档站点上的教程做了一些修改。这将部署一个 nginx 应用程序/服务到 kubernetes,我们将能够访问它。您可以根据需要下载并更改此文件(nginxlb)或按原样使用。
使用以下命令 kubectl apply -f nginxlb
我们可以使用 kubectl get services 命令来验证是否已分配 IP 地址。
一旦服务启动并运行,我们就可以在自己选择的浏览器上访问 localhost。
即使您的地址返回为 127.0.0.240,它也都可以通过您的本地主机地址访问。在 Mac 上,只有通过访问 127.0.0.1:8080 或 localhost:8080 才能路由。在 Windows 上,您应该能够通过 127.0.0.240:8080 以及 127.0.0.1:8080 访问 Nginx。
现在,您可以开始使用新的负载平衡技能了。让我知道您的体验如何