Kubernetes滚动更新、可扩展性与配额管理
在Kubernetes的使用过程中,滚动更新、可扩展性以及资源配额管理是非常重要的方面,下面将详细介绍相关内容。
滚动更新与自动伸缩
在某些情况下,尽管实际CPU利用率为零或接近零,副本数量本应缩减至两个,但由于水平Pod自动伸缩器(Horizontal Pod Autoscaler)未从Heapster获取CPU指标,它并不知道需要缩减复制控制器(Replication Controller)中的副本数量。
Kubernetes支持在复制控制器级别和使用部署(Deployment)进行滚动更新。不过,使用复制控制器进行滚动更新与水平Pod自动伸缩器不兼容。这是因为在滚动部署期间,会创建一个新的复制控制器,而水平Pod自动伸缩器仍绑定到旧的复制控制器。例如,直观的kubectl rolling-update命令会触发复制控制器的滚动更新。
为了解决这个问题,建议将水平Pod自动伸缩器绑定到部署对象,而不是复制控制器或副本集(Replica Set)。当水平Pod自动伸缩器绑定到部署时,它可以设置部署规范中的副本数量,并让部署处理必要的底层滚动更新和复制。
以下是部署hue-reminders服务的配置文件示例:
apiVersion: extensions/v1beta1 kind: Deployment metadata: name: hue-reminders spec: replicas: 2 template: meta