其他分享
首页 > 其他分享> > AKS (1) AKS最佳实践

AKS (1) AKS最佳实践

作者:互联网

  《Windows Azure Platform 系列文章目录

 

  我们在搭建Kubernetes集群的时候,需要搭建控制节点(Master)工作节点(Node),在每个节点上都会安装不同的组件

  Master: 集群的控制平面,负责集群的决策

  -  ApiServer : 资源操作的唯一入口,接收用户输入的命令,提供认证、授权、API注册和发现等机制

  -  Scheduler : 负责集群资源调度,按照预定的调度策略将Pod调度到相应的node节点上

  -  ControllerManager : 负责维护集群的状态,比如程序部署安排、故障检测、自动扩展、滚动更新等

  -  Etcd :负责存储集群中各种资源对象的信息

  Node:集群的数据平面,负责为容器提供运行环境

  -  Kubelet : 负责维护容器的生命周期,即通过控制docker,来创建、更新、销毁容器

  -  KubeProxy : 负责提供集群内部的服务发现和负载均衡

  -  Docker:负责节点上容器的各种操作

  

 

  我们在使用Azure Kubernetes集群的时候,控制节点是由微软云Azure平台运维的,用户无需管理控制节点的底层硬件部署,也无需为控制节点支持费用。

 

 

  AKS最佳实践,我在这里总结一下:

  1.Azure China镜像仓库:

  目前 *.azk8s.cn 已经仅限于 Azure China IP 使用,不再对外提供服务。

  即在Azure AKS pull image没有问题,但是如果是本地PC机,则无法pull image from *.azk8s.cn

海外仓库地址 国内镜像仓库   format example 
dockerhub dockerhub.azk8s.cn dockerhub.azk8s.cn/<repo-name>/<image-name>:<version>

dockerhub.azk8s.cn/microsoft/azure-cli:2.0.61

dockerhub.azk8s.cn/library/nginx:1.15

gcr.io gcr.azk8s.cn gcr.azk8s.cn/<repo-name>/<image-name>:<version> gcr.azk8s.cn/google_containers/hyperkube-amd64:v1.18.4
us.gcr.io usgcr.azk8s.cn usgcr.azk8s.cn/<repo-name>/<image-name>:<version> usgcr.azk8s.cn/k8s-artifacts-prod/ingress-nginx/controller:v0.34.1
k8s.gcr.io  k8sgcr.azk8s.cn k8sgcr.azk8s.cn/<repo-name>/<image-name>:<version>

k8sgcr.azk8s.cn/ingress-nginx/controller:v0.35.0

k8sgcr.azk8s.cn/autoscaling/cluster-autoscaler:v1.18.2

quay.io quay.azk8s.cn quay.azk8s.cn/<repo-name>/<image-name>:<version> quay.azk8s.cn/deis/go-dev:v1.10.0
mcr.microsoft.com mcr.azk8s.cn mcr.azk8s.cn/<repo-name>/<image-name>:<version> mcr.azk8s.cn/oss/nginx/nginx:1.17.3-alpine

 

  2.AKS有两种网络模型:

  (1)Kubenet网络

 

  (2)Azure CNI网络

 

  3.网络模型比较

  (1)Kubenet

  (2)Azure CNI

 

  4.AKS部署的先决条件

  这里的委托子网,指的是Azure subnet保留的内容,比如某些Azure PaaS需要创建在特殊命名的subnet里,比如Azure Firewall 需要创建在firewall subet里;Gateway需要创建在gateway subnet里。

 

  5.我们在使用Kubenet或者Azure CNI不同的网络模型,需要预留足够的内网IP地址

  如下图所示,我们先观察Kubenet里的内容

 

  我们再观察Azure CNI网络模型:

 

  

 

 

  

  6.每个Node的最大Pod数量

  AKS 群集中每个节点的最大 Pod 数为 250。 每个节点的默认最大 Pod 数因 kubenet 和 Azure CNI 网络以及群集部署方法而异

部署方法 kubenet默认值 Azure CNI默认值 可在部署时配置
Azure CLI 110 30 是 (最大250)
Resource Manager模板 110 30 是 (最大250)
Azure Portal 110 110 (在"节点池"中配置)

 

 

  7.AKS升级

  Kubernetes 社区大约会每隔三个月发布次要版本。 最近,Kubernetes 社区将每个版本的支持时长从 9 个月增加到了 12 个月,从版本 1.19 开始。

  AKS上的Kubernetes版本受支持窗口为"N-2",(N (最新版本) -2 (次要版本))

  例如,如果AKS当前最新的版本是1.21,则提供以下版本的支持

  1.21, 1.20, 1.19

  我们在使用AKS过程中,可能会对AKS进行升级。就需要考虑预留额外的IP地址数量

 

  8.我们在创建AKS集群的时候,某些情况下想仅针对内网用户访问,这时候我们就可以创建AKS集群类型为Private Cluster。如下图:

  

  在创建完AKS Private Cluster之后,还是会创建出一个新的公网IP地址和一个新的负载均衡器。

  在默认情况下,即使我们创建的是AKS Private Cluster,AKS仍然使用这个负载均衡器的公网IP来处理节点(Pod)到第三方的访问。

 

  9.AKS Private Cluster需要开启某些公网地址的访问权限

  为了便于管理和操作,AKS 群集中的节点需要访问特定的端口和完全限定的域名 (FQDN)。 节点与 API 服务器进行通信,或者下载并安装核心 Kubernetes 群集组件和节点安全更新都需要这些终结点。 例如,群集需要从 Microsoft 容器注册表 (MCR) 请求基础系统容器映像。

  AKS访问公网地址的具体信息,可以参考:https://docs.microsoft.com/zh-cn/azure/aks/limit-egress-traffic

  

标签:Node,cn,AKS,实践,最佳,Azure,Pod,azk8s
来源: https://www.cnblogs.com/threestone/p/15176256.html