AKS Basic

创建AKS

在Azure Portal上可以直接创建AKS,需要注意的是:

  1. 可以启用Virtual nodes,但启用Virtual nodes的时候,需要单独为Virtual node启用一个子网,该子网中不能包含其他资源。

  2. 如果想要让aks和azure container registry 无缝集成,那么aks认证的时候要选择system-assigned managed identity,而不能选择service principal

  3. 在同一个aks集群中,可以创建linux的pool,也可以同时再添加一个windows 的pool。在集群创建之后,也可以再添加pool。创建好的node pool的VM在scale set中可以看到,但在VM中看不到。

  4. 在启用multi pool的情况下,AKS 的node是放在scale set中,在VM界面看不到,只能在scale set中管理,如果要启用ssh,可以对scale set的extension中发送ssh public key的方式来启用。如果不启用multi pool,那么创建出来的VM不是被scale set管理,可以直接在VM界面看到。

下载kubectl,并配置kubeconfig

  1. 可以直接下载kubectl二进制文件,或使用apt/yum/brew等下载,也可以用az aks install-cli命令下载

  2. 使用az cli命令更新kubeconfig文件:az aks update-credentials --resource-group myResourceGroup --name myAKSCluster

验证集群状态

kubectl get nodes
kubectl get svc
kubectl get pod -n kube-system

部署一个简单的nginx deployment,并指定replicas为3

保存下面的文件为 nginx-dep.yaml,然后执行 kubectl apply -f nginx-dep.yaml

之后执行 kubectl get pod -o wide 看下pod分布状态.

有关Storage Class和PVC

Storage Class定义了创建PV的时候卷的类型,PVC用于动态创建卷 示例:创建一个managed premium disk的storage class。将下面代码复制为azure-premium-sc.yaml,然后执行 kubectl apply -f azure-premium-sc.yaml。下同,后续不再说明

然后创建pvc

执行 kubectl get pvc 可以看到pvc已经创建成功,登录Azure Portal上在Disk界面也可以看到这个磁盘。

手动挂载卷,需要记录下刚创建的卷Resource ID,在卷的属性界面可以看到,同时也要指定卷的名字,这个名字是在Azure Portal中看到的名字。

创建Service,利用Azure Load Balancer将服务发布出去

AKS创建的Load Balancer类型的SVC,默认情况下就是和api server共用同一个lb,不过会添加一个新的front ip address。在load balancer rules里面能够看到转发的具体规则

试用application gateway ingress

  • 首先要安装ingress controller,然后才能使用。

创建service principal, 将配置信息保存到parameters.json

  • 下载ingress安装文件,创建一个新的resource group (创建az group deployment的过程会比较长,大概5分钟左右)

  • 设置AAD Pod Identity, 添加 application-gateway-kubernetes-ingress helm 包

  • 安装ingress controller helm chart

修改一下变量

开始安装

首先先通过上一步创建nginx deployment,并通过lb将其发布出去,之后再创建application gw ingress

使用nginx 做为ingress controller(heml3):

  • 对于发布单一应用,可以创建一个ingress,然后发布应用的时候,默认就使用这个ingress

  • 如果应用比较多,每个应用要使用单独的ingress,那么可以通过ingress.class的方法指定.

  • 使用let's encrypt自动申请证书

kubectl get ingress,获得ingress的HOSTS名字,然后浏览器https访问下,即可访问成功

备注: K8s的一些基本知识

  • 使用Azure CNI的网络插件,每一个pod上的ip都直接用了网卡的ip。还有常见的几个网络插件如calico(三层), flannel (overlay)

  • Service的类型为Cluster, Nodepod, LoadBalancer,其中cluster模式只能在集群内通信,nodepod模式通过iptables上做了转发,该iptables在每一个node上都有,loadbalancer模式则直接利用了云厂商的4层负载均衡器

  • 可以用application gateway替代ingress

Last updated