容忍:
即使节点上有污点,依然可以部署pod。
tolerations:
operator: "Exists"
不指定key,表示容忍所有的污点
cordon和drain
cordon: 直接标记节点为不可用,pod不能部署到该节点。新建的pod不会再部署到该节点,已有的pod不受影响。
取消
drain:不仅仅把节点标记为不可用,而且会把节点上pod驱逐到其他节点。
kubectl drain node02 --ignore-daemonsets --delete-local-data --force
--ignore-daemonsets:无视daemonsets管理pod
--delete-local-data 如果pod设置了和本地节点有挂载点,无视本地挂载,强制杀死该节点上的pod
--force:不是控制器管理的pod也会被移走
k8s不是适合部署所有业务
k8s在项目中是按照命名空间来区分的
web 使用集群的资源是有限的 2 10G
backend 2 20G
20个pod左右-------
业务pod:10个左右
nginx
kafka
redis
其他的业务pod(自定义的镜像创建的根业务相关的pod)
数据收集
图形化界面等等
普罗米修斯监控
数据库不适合用容器化部署
k8s不用tomcat,apringboot自带8080
说了k8s就不用说keepalive+轮询
存储卷
podyaml文件的三大要素
1、资源限制
2、探针
3、存储卷(数据卷,挂载卷)
指定pod内的容器与宿主机的目录进行挂载,容器内的重要升级同步到宿主机的目录。
数据卷与宿主机挂载方式:
1、emptyDir存储卷
特殊的存储卷,不和宿主机进行挂载,pod内的容器之间共享目录,pod被删除,共享目录的数据也会被删除。
容器之间共享数据,获取容器内的其他配置的端口,环境等等,用于两个容器之间交亘。
2、hostPath
pod会根据调度算法部署在node上,挂载卷设置为hostPath模式,可以和node节点上的目录进行挂载,而且只要是pod所在的节点,都会生成这个目录。
nginx1-----3副本
nginx1---node1--------/opt/test1------->/usr/share/nginx/html/
nginx1--.master1--/opt/test1-------->/usr/share/nginx/html/
nginx1----node2----/opt/test1--------->/usr/share/nginx/html/
节点故障,重置了,数据也会消失。
3、nfs
共享目录,所有的服务器都可以访问共享目录,所有pod和宿主机的同一个共享目录进行挂载,网站模式部署pod都是nfs共享。
创建共享目录 赋权
使用主机名需要做映射,使用ip不需要