aks使用
aks 使用
背景
公司使用azure提供的k8s托管服务,即aks服务。所以学习了一下aks的一些知识。
azure cli的部署安装
什么是 Azure CLI?
Azure 命令行接口 (CLI) 是一个跨平台的命令行工具,可连接到 Azure 并对 Azure 资源执行管理命令。 它允许使用交互式命令行提示符或脚本通过终端执行命令。
可以在 Linux、Mac 或 Windows 计算机上本地安装 Azure CLI。 还可以通过 Azure Cloud Shell 在浏览器中使用,或者从 Docker 内部运行。
安装
在 Linux 上安装 Azure CLI
1 | sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc |
在 Docker 容器中运行 Azure CLI
1 | docker run -it mcr.microsoft.com/azure-cli |
通过azure cli连接到aks服务
登录
默认可以使用 az login 登录,
如果 CLI 可以打开默认浏览器,它将初始化授权代码流,并打开默认浏览器来加载 Azure 登录页面。
否则,它将启动设备代码流,并指示你打开浏览器页面 (https://aka.ms/devicelogin),并输入终端中显示的代码。
如果没有可用的 Web 浏览器或 Web 浏览器无法打开,可通过 az login --use-device-code 强制使用设备代码流。
也可以使用其他方式,具体详见 使用 Azure CLI 登录。
安装aks管理端
使用 az aks install-cli 安装,实际是安装一个 kubectl 命令。我在实际使用中发现访问超时,所以我按照提示的连接手动下载了一个压缩包,将解压后的 kubectl 文件放到了/usr/bin 中了,也可以使用。
认证
按照 aks 的连接指南,即可完成认证。示例如下:
1 | az account set --subscription xxx |
安装helm
目前 azure cli 还不支持通过 az 命令安装 helm3,我是自己通过 dnf 方式安装的。
基础使用
上述配置之后,可以通过 kubectl 像是访问本地集群一样访问 aks 集群。
一些和自建k8s不同的地方
- 公网ip
在使用中,我有一个ingress,但是azure一直没给这个ingress分配外部 ip,即公网 ip。
查了一下发现,如果ingress需要分配公网地址,需要一些特殊配置。
首先需要在网络菜单中启用 HTTP 应用程序路由。
其次ingress中需要有一个如下标签。1
2
3metadata:
annotations:
kubernetes.io/ingress.class: ddon-http-application-routing #这个绑定
具体官方文档地址为 官方文档 。
- 即使有了
公网 ip,也无法访问
无法直接通过给分配的公网 ip访问到自己的aks 服务。原因是因为azure给每个aks分配了一个dns。
使用如下命令可以查看分配的dns,结果类似c4893a3171c1456fbd55.eastus.aksapp.io:我们需要给每个1
az aks show --resource-group <resource-group> --name <aks-cluster> --query addonProfiles.httpApplicationRouting.config.HTTPApplicationRoutingZoneName -o tsv
ingress中配置一个基于这个 dns 的域名,类似aks.c4893a3171c1456fbd55.eastus.aksapp.io,这样就可以通过访问这个域名来访问ingress。
当然也可以使用其他方式将服务代理出去,具体可以查看官方文档:将静态公共 IP 地址和 DNS 标签用于 Azure Kubernetes 服务 (AKS) 负载均衡器 。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 符十三郎!

