K8s之存储卷

一、容忍、crodon和drain

1.容忍

即使节点上有污点,依然可以部署pod。

字段:tolerations

实例

当node01上有标签test1=1,污点类型为NoSchedule,而node02没有标签和污点,此时pod可以在node01 node02上都部署,如果在node02上添加污点为NoExecute,则所有pod都会在node01上
tolerations:

#容忍污点的字段

  • operator: "Exists"

#不指定key,容忍所有的污点类型

#此时master01,node01和node02上都会有pod

2.cordon

直接标记节点不可用,pod不能部署到该节点。新建的pod的不会再部署到该节点,已有的pod不受影响。

kubectl cordon node02 #标记不可用

kubectl uncordon node02 #解除标记

kubectl get nodes #查看nodes的状态

但是如果有容忍字段或者容忍字段里面用了exists则无效

3.drain

不仅仅把节点标记为不可用,而且会把节点上pod驱逐到其他节点。

kubectl drain node02 --ignore-daemonsets --delete-local-data --force

--ignore-daemonsets 无视daemonSet管理的pod

--delete-local-data 如果pod设置了和本地节点有挂载点,无视本地挂载,强制杀死该节点上的pod

--force 不是控制器管理的pod会被直接杀死

kubectl uncordon node02 没有undrain,还是用uncordon

二、数据卷

指定pod内的容器和宿主机的目录进行挂载,把容器内的重要数据同步到宿主机的目录。

1.emptyDir存储卷

特殊的存储卷,不和宿主机进行挂载,pod内的容器之间共享目录,pod被删除,共享目录的数据也会被删除。

容器之间共享数据,获取容器内的其他配置的端口,环境等等,用于两个容器之间交互。

实例

2.hostPath

pod会根据调度算法部署在node上,挂载卷设置为hostPath,可以和node节点上的目录进行挂载,而且只要是pod所在的节点,都会生成这个目录。

实例

3.nfs 共享存储卷

共享目录,所有的服务器都可以访问共享目录,所有的pod和宿主机的同一个共享目录进行挂载。网站模式部署pod都是用nfs共享。

192.168.206.10 master01

192.168.206.20 node01

192.168.206.30 node02

192.168.206.60 nginx1 在这台主机上配置共享目录

所有节点都 apt -y install nfs-kernel-server

60主机上的操作如下:

mkdir /opt/k8s1

chmod 777 /opt/k8s1/

vim /etc/exports

/opt/k8s1 192.168.206.0/24(rw,root_squash)

systemctl restart nfs-kernel-server

cd /opt/k8s1

cat index.html

echo 123 > index.html

集群可以直接访问ip地址

curl 10.244.196.153

如果server字段用的是nginx1主机名, 则需要集群上做本地映射(/etc/hosts)

相关推荐
可观测性用观测云11 分钟前
Kubernetes APIServer 可观测最佳实践
kubernetes
阿里云云原生31 分钟前
Java版Manus实现来了,Spring AI Alibaba发布开源OpenManus实现
云原生
阿里云云原生35 分钟前
当实时消费遇到 SPL:让数据处理更高效、简单
云原生
碣石潇湘无限路2 小时前
【云原生】Kubernetes CEL 速查表
容器·贪心算法·kubernetes
阿里云云原生3 小时前
大模型 Token 的消耗可能是一笔糊涂账
云原生
mingyuewu4 小时前
MAC安装docker 后提示com.docker.vmnetd”将对您的电脑造成伤害
macos·docker·容器
企鹅侠客6 小时前
Prometheus operator怎么添加targets和告警规则
运维·云原生·kubernetes·prometheus·pod
专注代码七年7 小时前
Docker运维篇
运维·docker·容器
一杯敬朝阳 一杯敬月光8 小时前
WIN11 企业版 部署Dify+Docker
运维·docker·容器
Leo Han8 小时前
k8s常用命令(持续更新中)
docker·容器·kubernetes