部署虚拟机。
az vm create \ --resource-group RancherK3sResourceGroup \ --name K3sNode1 \ --image UbuntuLTS \ --nics nic1 \ --admin-username ubuntu \ --generate-ssh-keys \ --custom-data cloud-init.txt az vm create \ --resource-group RancherK3sResourceGroup \ --name K3sNode2 \ --image UbuntuLTS \ --nics nic2 \ --admin-username ubuntu \ --generate-ssh-keys \ --custom-data cloud-init.txt 检查Kubernetes是否正在运行作为VM配置的一部分,K3s应该已经安装完毕。让我们连接到第一个VM并确认K3s是否正在运行。
ssh ubuntu@<publicIPofNode1>两个VM应该都在节点列表上。如果第一次没有成功,那么需要给它几分钟的时间来运行cloud-init脚本。它可能需要花费一些时间来部署Docker和K3s。
sudo k3s kubectl get nodes输出为:
ubuntu@ip-172-31-60-194:~$ sudo k3s kubectl get nodes NAME STATUS ROLES AGE VERSION ip-172-31-60-194 Ready master 44m v1.17.2+k3s1 ip-172-31-63-88 Ready master 6m8s v1.17.2+k3s1测试集群Pod的健康状态:
sudo k3s kubectl get pods --all-namespaces 保存并开始使用kubeconfig文件在连接到我们其中之一的节点的同时,我们需要获取集群的kubeconfig内容。使用以下命令将内容输出到屏幕,然后将其复制到剪贴板。
sudo cat /etc/rancher/k3s/k3s.yaml将其粘贴到文本编辑器中,以便我们可以进行更改,然后再将其添加到我们正在处理的Azure Cloud Shell会话中。
更新server:使用负载均衡器的外部URL。你可以使用xip.io服务为你提供可解析的完全限定域名。请参见下面的屏幕截图。
例如:
https://rancher..xip.io:6443>
注意:需要将截屏中的示例替换为你的负载均衡器的公共IP。
现在,在/.kube文件夹中创建一个名为config的文件,并将更新的内容粘贴到该文件中。
首先,从node1开始解除连接。
exit现在创建新的目录并编辑文件,粘贴到已经更新的内容中。
mkdir ~/.kube vi ~/.kube/config检查kubectl是否正在工作并能否与集群交互。现在Kubectl和Helm已经在Azure Cloud Shell中安装完毕。
kubectl get pods --all-namespaces 安装Rancher添加Rancher Helm Repo
helm repo add rancher-latest https://releases.rancher.com/server-charts/latest创建cattle-system命名空间
kubectl create namespace cattle-system分别安装CustomResourceDefinition资源
kubectl apply -f https://raw.githubusercontent.com/jetstack/cert-manager/release-0.12/deploy/manifests/00-crds.yaml为cert-manager创建命名空间
kubectl create namespace cert-manager添加Jetstack Helm代码库
helm repo add jetstack https://charts.jetstack.io更新你的本地Helm chart代码库缓存
helm repo update安装cert-manager Helm chart
helm install \ cert-manager jetstack/cert-manager \ --namespace cert-manager \ --version v0.12.0检查Cert-Manager是否正在运行,确保所有的pod都正在运行。
kubectl get pods --namespace cert-manager使用自签名证书安装Rancher。确保你使用Rancher Server的URL设置了主机名。在本文中,我们利用xip.io服务。在Rancher URL中使用Azure 负载均衡器的公共IP地址。
helm install rancher rancher-latest/rancher \ --namespace cattle-system \ --set hostname=rancher.<LoadBalancerPublicIP>.xip.io等待Rancher部署……
kubectl -n cattle-system rollout status deploy/rancher三个副本全部roll out之后,请点击Rancher server deployment的URL,如下所示:
清 理在Azure中创建资源会产生费用,因此请确保在完成操作后删除资源组。
az group delete --name RancherK3sResourceGroup 结 论在本文中,我们提供了一种快速简便的方法使用Rancher对Azure中的容器化工作负载进行多集群管理。通过使用K3s,我们不仅能够非常快速地启动并运行,而且移除了etcd同时避免了在生产环境中运行它会产生的一些麻烦。通过使用Azure Cloud Shell,身份验证变得十分容易,并且可以“开箱即用”地使用我们所需的所有工具。