Azure Kubernetes Service (AKS) 经过半年多的预览终于昨天宣布 GA,同时也意味着全球三朵云的托管 Kubernetes 服务已全面上线。
AKS 优势
既然全球三大云厂商都推出了托管 Kubernetes 服务,那么 Azure 在这边与其他云厂商有什么不同或者优势呢?
首先,普通用户第一次接触 Kubernetes 时可能会觉得它太过复杂而产生怯意。Azure 发布了一些列的产品和工具极大简化了 Kubernetes 的门槛,比如
用于简化 Kubernetes 应用管理的开源项目 Helm
用于简化 Kubernetes 应用开发和部署的开源项目 Draft
用于创建和管理工作流的开源项目 Brigade 和 Kashti
用于集成和管理无服务器容器产品(如 Azure Container Instance 和 AWS Fargate 等)的开源项目 Virtual Kubelet
用于在 Visual Studio 和 Visual Studio Code 中管理 Kubernetes 应用的插件
用于构建云原生应用的标准库 Metaparticle
原生的 CI/CD 工具支持(如 Jenkins 和 VSTS 等)
其次,AKS 提供了托管的控制平面,在保证控制平面可用性的同时还免费提供给用户。用户无需关心 Kubernetes 集群本身的管理和维护,只需要关注其上的应用即可。
最后,在应用需要集成 Azure 已有的服务时,还可以通过 Open Service Broker 简化这些服务的访问。
在 AKS 发布 GA 的第一时间,Tirumarai Selvan 对 AKS、EKS 以及 GKE 等三个主流托管 Kubernetes 服务做了简单对比,如下图所示

AKS 入门
AKS 本身的使用非常简单,甚至都无需用户本地安装任何工具就可以开始使用。
打开 Azure Cloud Shell(https://shell.azure.com/),直接运行下面的命令即可
$ az group create -n myResourceGroup
$ az aks create --resource-group myResourceGroup --name myAKSCluster
稍等一会,就部署好了一个 3 节点的 Kubernetes 集群。接着配置 kubectl 客户端
$ az aks get-credentials -g myResourceGroup -n myAKSCluster
然后就可以使用 kubectl 来管理 Kubernetes 应用了,比如最简单的 nginx 服务
$ kubectl run nginx --image=nginx
$ kubectl expose deployment nginx --type=LoadBalancer --port=80
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-8586cf59-c62l2 1/1 Running 0 38s
$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 5h
nginx LoadBalancer 10.0.2.198 <pending> 80:30266/TCP 21s
如果实际使用中 3 个节点不够不满足实际需要,那可以使用 az 命令扩展节点数,比如
$ az aks scale --name myAKSCluster --resource-group myResourceGroup --node-count 5
当然了,如果想进一步节省成本,还可以使用 Virtual Kubelet 将容器运行在 ACI 中,即先将节点数收缩到 1 个,然后部署 Virtual Kubleet:
$ az aks scale --name myAKSCluster --resource-group myResourceGroup --node-count 1
$ az aks install-connector --resource-group myAKSCluster --name myAKSCluster --connector-name virtual-kubelet --os-type Both
$ $ kubectl get nodes
NAME STATUS ROLES AGE VERSION
aks-nodepool1-23443254-0 Ready agent 10m v1.9.6
virtual-kubelet-virtual-kubelet-linux Ready agent 4m v1.8.3
virtual-kubelet-virtual-kubelet-win Ready agent 4m v1.8.3
Virtual Kubelet 会创建 2 个无限节点,分别用于 Linux 容器和 Windows 容器。
参考文档
Azure Kubernetes Service (AKS) GA – New regions, more features, increased productivity
GKE vs AKS vs EKS: The state of managed Kubernetes by industry’s top cloud providers
Azure Kubernetes Service (AKS) documentation




