AKS Basic
创建AKS
在Azure Portal上可以直接创建AKS,需要注意的是:
可以启用Virtual nodes,但启用Virtual nodes的时候,需要单独为Virtual node启用一个子网,该子网中不能包含其他资源。
如果想要让aks和azure container registry 无缝集成,那么aks认证的时候要选择system-assigned managed identity,而不能选择service principal
在同一个aks集群中,可以创建linux的pool,也可以同时再添加一个windows 的pool。在集群创建之后,也可以再添加pool。创建好的node pool的VM在scale set中可以看到,但在VM中看不到。
在启用multi pool的情况下,AKS 的node是放在scale set中,在VM界面看不到,只能在scale set中管理,如果要启用ssh,可以对scale set的extension中发送ssh public key的方式来启用。如果不启用multi pool,那么创建出来的VM不是被scale set管理,可以直接在VM界面看到。
下载kubectl,并配置kubeconfig
可以直接下载kubectl二进制文件,或使用apt/yum/brew等下载,也可以用az aks install-cli命令下载
使用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