HPA & 卷 & 网络

Horizontal Pod Autoscaler (HPA) https://mp.weixin.qq.com/s?__biz=MzIyMTUwMDMyOQ==&mid=2247489081&idx=1&sn=a17fcfc5147d9cb53eb25a348386460d&chksm=e83a90ffdf4d19e926ba59cce8a4f320dae53f0ffcfd3a7077eac70d75567a28daa1fc3d004b&scene=21#wechat_redirect

HPA会根据监测到的CPU/内存利用率(资源指标),或基于第三方指标应用程序(如Prometheus、Datadog等)提供的自定义指标,自动调整副本控制器、部署或者副本集合的pods数量(定义最小和最大pods数)
HPA是Kubernetes中弹性伸缩API组下的一个API资源。当前稳定的版本是autoscaling/v1,它只提供了对CPU自动缩放的支持。如果您想额外获得对内存和自定义指标的支持,可以使用Beta版本autoscaling/v2beta1。

对于CPU,若requests是1个核,limit是2个核,hpa里写的是80%,则当cpu使用了800m时,就开始横向扩容了。当扩容到hpa里的max后,就不会扩容了,每个pod的cpu使用情况就向2个核趋近,但不会超过2个核

 

=======================

推荐使用ReplicaSets管理Pod

Deployment API被设计为管理ReplicaSet对象的高级API

=========卷的介绍========https://mp.weixin.qq.com/s?__biz=MzIyMTUwMDMyOQ==&mid=2247490344&idx=1&sn=81148d96ceec1f5d4ca5edcfb68e2657&chksm=e83a9deedf4d14f8fdecc465c071bcea932af726d67094edcc7daa55f97cfa182979445d5208&scene=21#wechat_redirect
Kubernetes的volume:它与Pod的生命周期相同,但与容器的生命周期无关

1 emptyDir类型的Volume在Pod分配到Node上时被创建,Kubernetes会在Node上自动分配一个目录,无需指定宿主机Node上对应的目录文件。 这个目录的初始内容为空,当Pod从Node上移除时,emptyDir中的数据会被永久删除。注:容器的crashing事件并不会导致emptyDir中的数据被删除
2 hostPath类型则是映射node文件系统中的文件或者目录到pod里。在使用hostPath类型的存储卷时,也可以设置type字段,支持的类型有文件、目录、File、Socket、CharDevice和BlockDevice。注意:当Kubernetes增加了资源敏感的调度程序,hostPath使用的资源不会被计算在内。
在使用hostPath volume卷时,即便pod已经被删除了,volume卷中的数据还在!

【emptyDir是临时存储空间,完全不提供持久化支持;hostpath支持持久化】

3 Local volume 允许用户通过标准PVC接口以简单且可移植的方式访问node节点的本地存储
4

=============

进入pod中的容器中:kubectl exec -it test-pod -c test-emptydir /bin/sh 进入test-pod中的容器test-emptydir中
每一个添加到Kubernetes集群的工作负载必须放在一个命名空间中。

job会在任务完成时退出
 Kubernetes支持两种不同的文件格式,YAML和JSON。每种格式都可以描述Kubernetes的相同功能

==============

在Kubernetes中有4种网络模型:

  • 容器到容器的通信

  • Pod到Pod的通信

  • Pod到服务的通信

  • 外部到内部的通信

1 Kubernetes的网络模型假定了所有Pod都在一个可以直接连通的扁平的网络空间中

2 Flannel的功能是让集群中的不同节点主机创建的Docker容器都具有全集群唯一的虚拟IP地址。而且它还能在这些IP地址之间建立一个覆盖网络(Overlay Network),通过这个覆盖网络,将数据包原封不动地传递到目标容器内

3 Flannel之间的底层通信协议的可选余地有很多,比如UDP、VXlan、AWS VPC等等。只要能通到对端的Flannel就可以了

4 Pod的地址是与docker0在同一个网段的,但docker0网段与宿主机网卡是两个完全不同的IP网段,并且不同Node之间的通信只能通过宿主机的物理网卡进行

5 Service仅支持UDP和TCP协议,所以像ping的ICMP协议是用不了的,所以无法ping通Service IP

6 由于Pod和Service是Kubernetes集群范围内的虚拟概念,所以集群外的客户端系统无法通访问到它们。为了让外部客户端可以访问这些服务,可以将Pod或Service的端口号映射到宿主机,以使得客户端应用能够通过物理机访问容器应用。

7 Flannel默认的底层通信协议是UDP。UDP本身是非可靠协议,虽然两端的TCP实现了可靠传输,但在大流量、高并发应用场景下还需要反复调试,确保不会出现传输质量的问题。特别是对网络依赖重的应用,需要评估对业务的影响。

8 目前Kubernetes网络最快的第一就是Calico,第二种稍慢Flannel,根据自己的网络环境条件来定。 Calico目前还有些小缺陷,比如stable版本还无法支持私有网络,但希望在后面的版本中会更加强大

================

安装前disable 防火墙或iptables

 master上还要装kubectl 

 

 

 

 

 

 

 

posted on 2020-06-01 21:30  我和你并没有不同  阅读(185)  评论(0编辑  收藏  举报