kubernetes 水平伸缩及yaml格式编写
Replication Controller:用来部署、升级Pod
Replica Set:下一代的Replication Controller
Deployment:可以更加方便的管理Pod和Replica Set
$ mkdir rc-demo
$ vim rc-demo.yaml
---
apiVersion: v1
kind: ReplicationController
metadata:
name: rc-demo
labels:
app: rc
spec:
replicas: 3
# selecter:
# app: rc
template:
metadata:
labels:
app: rc
spec:
containers:
- name: nginx-demo
image: nginx
ports:
- containerPort: 80
$ kubectl edit rc rc-demo
在里面可以修改副本集数量
滚动更新:
kubectl rolling-update rc-demo --image=nginx:1.7.9 ##(更新到1.7.9版本)
~~~~~RC不是实现一键回滚~~~~~
Deployment:
Deployment主要职责和RC一样都是保证Pod的数量和健康
RC的全部功能:Deployment具备上面描述的RC的全部功能
事件和状态查看:可以查看Deployment的升级详细进度和状态
回滚:当升级Pod的时候如果出现问题,可以使用回滚操作回滚到之前的任一版本
版本记录:每一次对Deployment的操作,都能够保存下来,这也是保证可以回滚到任一版本的基础
暂停和启动:对于每一次升级都能够随时暂停和启动
---
apiVersion: apps/v1beta1
kind: Deployment
metedata:
name: nginx-deploy
labels:
app: nginx-demo
spec:
replicas: 3
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
template就相当于pod 只是省略apiVersion kind name
不指定name,自动生成name,避免重复
$ vim deploy-demo.yaml
---
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: nginx-deploy
labels:
app: nginx-demo
spec:
replicas: 3
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
滚动升级设置:
---
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: nginx-deploy
labels:
app: nginx-demo
spec:
replicas: 3
revisionHistoryLimit: 15
minReadySeconds: 5
stragety:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
查询滚动更新状态:
kubectl rollout status deploy nginx-deploy
kubectl rollout pause deploy nginx-deploy ##暂停滚动更新
kubectl rollout resume deploy nginx-deploy ##恢复滚动更新
kubectl rollout history deploy nginx-deploy #查看回滚历史版本
kubectl apply -f deploy-demo.yaml --record=true
rollout 历史版本跟rs有关,rs删除某一版本,rollout 历史版本中也会删除掉同一版本
kubectl rollout ando deploy nginx-deploy ##回退上一版本最近的
kubectl rollout ando deploy nginx-deploy --to-revision=3 ##回退到指定版本
一.Pod水平自动伸缩(horizontal-pod-autoscaler)
1. kubectl autoscale命令来创建一个HPA资源对象
2. 可通过kube-controller-manager的标志--horizontal-pod-autoscaler-sync-period进行设置(轮询设置默认是30s)
3. HPA可以从heapster或者用户自定义的restclient端获取每一个的利用率
4.
Heapster:仅支持CPU使用率
自定义监控:我们到后面的监控的课程中再给大家讲解这部分的使用方法
安装 heapster:需要influxdb和grafana支持
1.https://github.com/kubernetes-retired/heapster/blob/v1.5.4/deploy/kube-config/influxdb/influxdb.yaml
https://github.com/kubernetes-retired/heapster/blob/v1.5.4/deploy/kube-config/influxdb/heapster.yaml
https://github.com/kubernetes-retired/heapster/blob/v1.5.4/deploy/kube-config/influxdb/grafana.yaml
2.查看heapster日志:
kubectl logs -f heapster-5d4bf58946-hwqbz -n kube-system
### E0520 09:58:35.150249 1 reflector.go:190] k8s.io/heapster/metrics/util/util.go:30: Failed to list *v1.Node: nodes is forbidden: User "system:serviceaccount:kube-system:heapster" cannot list resource "nodes" in API group "" at the cluster scope
这个意思是heapster用户没有权限需要添加serviceaccount相对应的admin最高权限ClusterRole
集群规则绑定:ClusterRoleBinding
在heapster.yaml中的serviceaccount下面添加
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: heapster-admin
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: heapster
namespace: kube-system
Hpa:
$ vim hap-demo.yaml
---
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: hpa-demo
labels:
app: hpa
spec:
replicas: 1
revisionHistoryLimit: 15
minReadySeconds: 5
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
template:
metadata:
labels:
app: hpa
spec:
containers:
- name: nginx
image: nginx:1.9.7
resources:
requests:
cpu: 100m
# limit:
# cpu: 200m
# memory:
ports:
- containerPort: 80
---
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
name: hpa-demo
namespace: default
spec:
maxReplicas: 10
minReplicas: 1
scaleTargetRef:
apiVersion: extensions/v1beta1
kind: Deployment
name: hpa-demo
targetCPUUtilizationPercentage: 5
$ kubectl autoscale deploy hpa-demo --min=1 --max=10 --cpu-percent=5
$ kubectl get hpa
kubernetes 水平伸缩及yaml格式编写的更多相关文章
- kubernetes yaml格式的Pod配置文件
kubernetes yaml文件解析 # yaml格式的pod定义文件完整内容: apiVersion: v1 #必选,版本号,例如v1 kind: Pod #必选,Pod metadata: #必 ...
- kubernetes内yaml格式
yaml格式的pod定义文件完整内容: apiVersion: v1 #必选,版本号,例如v1 可通过 kubectl api-versions 获取 kind: Pod #必选,Pod metada ...
- Kubernetes自动伸缩pod-HPA
在运维中,虽然能预先知道负载何时会飙升,或者如果负载的变化是较长时间内逐渐发生的,手动扩容也是可以接受的,但指望靠人工干预来处理突发而不可预测的流量增长,仍然不够理想. 幸运的是,Kubernetes ...
- Kubernetes 弹性伸缩全场景解析 (四)- 让核心组件充满弹性
前言 在本系列的前三篇中,我们介绍了弹性伸缩的整体布局以及HPA的一些原理,HPA的部分还遗留了一些内容需要进行详细解析.在准备这部分内容的期间,会穿插几篇弹性伸缩组件的最佳实践.今天我们要讲解的是 ...
- Kubernetes 弹性伸缩全场景解读(二)- HPA 的原理与演进
前言 在上一篇文章 Kubernetes 弹性伸缩全场景解析 (一):概念延伸与组件布局中,我们介绍了在 Kubernetes 在处理弹性伸缩时的设计理念以及相关组件的布局,在今天这篇文章中,会为大家 ...
- Kubernetes 弹性伸缩全场景解析 (一)- 概念延伸与组件布局
传统弹性伸缩的困境 弹性伸缩是Kubernetes中被大家关注的一大亮点,在讨论相关的组件和实现方案之前.首先想先给大家扩充下弹性伸缩的边界与定义,传统意义上来讲,弹性伸缩主要解决的问题是容量规划与实 ...
- Kubernetes 弹性伸缩全场景解读(五) - 定时伸缩组件发布与开源
作者| 阿里云容器技术专家刘中巍(莫源) 导读:Kubernetes弹性伸缩系列文章为读者一一解析了各个弹性伸缩组件的相关原理和用法.本篇文章中,阿里云容器技术专家莫源将为你带来定时伸缩组件 kub ...
- Kubernetes 弹性伸缩全场景解析 (一):概念延伸与组件布局
传统弹性伸缩的困境 弹性伸缩是 Kubernetes 中被大家关注的一大亮点,在讨论相关的组件和实现方案之前.首先想先给大家扩充下弹性伸缩的边界与定义,传统意义上来讲,弹性伸缩主要解决的问题是容量规划 ...
- Fiddler插件---将Mapi请求自动转为HTTPRunner测试用例(YAML格式)
背景 继之前鼓捣出了Mapi解密插件之后,在团队内已经使用了三年之久,一跃成为团队最爱欢迎的测试工具之一(加个之一,低调谦虚一点). 随着团队推行HttpRunner搞接口自动化:编写和维护Case带 ...
随机推荐
- mysql 常见面试题
附录: https://mp.weixin.qq.com/s/pC0_Y7M7BkoUmlRwneZZdA 一.为什么用自增列作为主键 1.如果我们定义了主键(PRIMARY KEY),那么InnoD ...
- 课下选做作业MyOD
2019-2020-1 20175227 <信息安全系统设计基础> 课下选做作业MyOD 要求 复习c文件处理内容 编写myod.c 用myod XXX实现Linux下od -tx -tc ...
- CDH构建大数据平台-Kerberos高可用部署【完结篇】
CDH构建大数据平台-Kerberos高可用部署[完结篇] 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.安装Kerberos相关的软件包并同步配置文件 1>.实验环境 ...
- 如何使用git cherry-pick将同一个仓库的某个分支的某些commit合并到当前分支?
答: git cherry-pick <another-branch's commit-id>
- Java同步数据结构之DelayQueue/DelayedWorkQueue
前言 前面介绍了优先级队列PriorityBlockingQueue,顺带也说了一下PriorityQueue,两者的实现方式是一模一样的,都是采用基于数组的平衡二叉堆实现,不论入队的顺序怎么样,ta ...
- LC 988. Smallest String Starting From Leaf
Given the root of a binary tree, each node has a value from 0 to 25 representing the letters 'a' to ...
- 各个处理器架构ISA编程指南
1.Intel官方文档: http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manu ...
- pandas总结
### 一.创建对象 # 1.可以通过传递一个list对象来创建一个Series,pandas会默认创建整型索引: # s=pd.Series([1,3,5,np.nan,6,8]) # print ...
- 一百三十四:CMS系统之版块管理二
编辑 html,将数据渲染到tr上,方便js取值 js //编辑板块$(function () { $('.edit-board-btn').click(function (event) { var ...
- 查看mycat日志
查看日志: tail -f /usr/local/mycat/logs/wrapper.log