k8s的几个重要的概念

• 对象 用k8s是和什么打交道? K8s 声明式API
• yaml文件 怎么打交道? 调用声明式API
• 必需字段 怎么声明?

  1. apiVersion - 创建该对象所使用的 Kubernetes API 的版本
  2. kind - 想要创建的对象的类型
  3. metadata - 帮助识别对象唯一性的数据,包括一个 name 名称 、
    可选的 namespace
  4. spec
  5. status(Pod创建完成后k8s自动生成status状态)

yaml文件及必需字段
每个API对象都有3大类属性:元数据metadata、规范spec和状态status。

在这里插入图片描述

spec和status的区别:
spec是期望状态
status是实际状态

Pod
概述:

  1. pod是k8s中的最小单元
  2. 一个pod中可以运行一个容器,也可以运行多个容器
  3. 运行多个容器的话,这些容器是一起被调度的
  4. Pod的生命周期是短暂的,不会自愈,是用完就销毁的实体
  5. 一般我们是通过Controller来创建和管理pod的

Controller:控制器
• Replication Controller和ReplicaSet
• https://kubernetes.io/zh/docs/concepts/overview/working-withobjects/labels/
#标签选择器
• https://kubernetes.io/zh/docs/concepts/workloads/controllers/replicationco
ntroller/ #Replication Controller和ReplicaSet
• Deployment
• https://kubernetes.io/zh/docs/concepts/workloads/controllers/deployment/
• Statefulset
• Daemonset
• Job

Rc,Rs和Deployment
• Replication Controller:副本控制器(selector = !=)
• ReplicaSet:副本控制集,和副本控制器的区别是:对选择器的支
持(selector 还支持in notin)
• Deployment:比rs更高一级的控制器,除了有rs的功能之外,还
有很多高级功能,,比如说最重要的:滚动升级、回滚等
• https://kubernetes.io/zh/docs/concepts/workloads/controllers/deployment/

Service
• Why:pod重启之后ip就变了,pod之间直接访问会有问题
• What:解耦了服务和应用。
• How:声明一个service对象
一般常用的有两种:
• k8s集群内的service:selector指定pod,自动创建Endpoints
• k8s集群外的service:手动创建Endpoints,指定外部服务的ip,端口和协议

kube-proxy和service的关系:
kube-proxy——————> k8s-apiserver
watch
kube-proxy监听着k8s-apiserver,一旦service资源发生变化(调k8s-api修改service信息),kube-proxy
就会生成对应的负载调度的调整,这样就保证service的最新状态。
kube-proxy有三种调度模型:
• userspace:k8s 1.1之前
• iptables:k8s1.10之前
• ipvs:k8s 1.11之后,如果没有开启ipvs,则自动降级为iptables

Volume
• Why:数据和镜像解耦,以及容器间的数据共享
• What:k8s抽象出的一个对象,用来保存数据,做存储用
• 常用的几种卷:
emptyDir:本地临时卷
hostPath:本地卷
nfs等:共享卷
configmap: 配置文件

emptyDir
• 当 Pod 被分配给节点时,首先创建 emptyDir 卷,并且只要该 Pod
在该节点上运行,该卷就会存在。正如卷的名字所述,它最初是
空的。Pod 中的容器可以读取和写入 emptyDir 卷中的相同文件,
尽管该卷可以挂载到每个容器中的相同或不同路径上。当出于任
何原因从节点中删除 Pod 时,emptyDir 中的数据将被永久删除。

hostPath
• hostPath 卷将主机节点的文件系统中的文件或目录挂载到集群中,
pod删除的时候,卷不会被删除

nfs等共享存储
• nfs 卷允许将现有的 NFS(网络文件系统)共享挂载到您的容器中。
不像 emptyDir,当删除 Pod 时,nfs 卷的内容被保留,卷仅仅是
被卸载。这意味着 NFS 卷可以预填充数据,并且可以在 pod 之间
“切换”数据。 NFS 可以被多个写入者同时挂载。

Configmap
• Why:配置信息和镜像解耦
• What:将配置信息放到configmap对象中,然后在pod的对象
中导入configmap对象,实现导入配置的操作
• How:声明一个ConfigMap的对象,作为Volume挂载到pod中

PV/PVC
• Why:实现pod和storage的解耦,这样我们修改storage的时候不
需要修改pod,也可以实现存储和应用权限的隔离
• What:PersistentVolume 和 PersistentVolumeClaim

发布了52 篇原创文章 · 获赞 1 · 访问量 1667

猜你喜欢

转载自blog.csdn.net/wx25051/article/details/105251873
今日推荐