容器组(Pod)
- 在k8s中是最小的资源分配和调度单位,由一个或多个容器组成。同一个Pod中,不同容器共享命名空间(网络、IPC、文件系统)、Cgroup和存储卷。
- 创建过程
先创建一个pause容器,该容器创建相关命令空间,然后创建Pod中的其他应用容器,并共享pause创建的命名空间和Cgroup、存储
- 定义
apiVersion: v1
kind: Pod
metadata:
name: nginx-test
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort:80
- 容器组的状态
- 待定Pending:容器镜像未就绪
- 运行Running:所有容器都被创建,至少一个容器在运行中
- 成功Succeeded:所有容器都正常退出,任务完成
- 失败Failed:所有容器都退出,至少一个容器是非正常退出
- 未知Unknown:未知状态,例如所在节点无法汇报状态
服务
- 主要是为了解决Pod地址可变后继续给外部提供服务的问题
- 服务类型:ClusterIP(产生一个集群内的地址,该地址只能在集群内被解析和访问)、NodePort(在每个集群节点上映射服务到一个静态的本地端口)、LoadBalancer(使用外部的路由服务,自动路由到NodePort和ClusterIP上面)、ExternalName
- 创建过程
服务在创建后会分配一个集群地址,通过kube-proxy进程负责将访问Service的请求代理到具体的Pod
- 服务健康检查
- 通过HTTP获取资源是否成功
- 在容器中执行命令,返回值是否为0
- 打开给定的socker端口是否成功
包括成功、失败、位置三个状态,其中LivenessProbe反映的是容器自身状态,如配置了重启策略,则失败后会自动重启,ReadinessProbe则用来反映容器内的服务是否可用
存储卷
- 存储卷即容器挂载的数据卷,和Pod有一致的生命周期
- 存储卷类型,emptyDir、hostPath、nfs、gcePersistentDisk、awsElastic、gitRepo、secret
- 定义
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv01
spec:
capacity:
storage: 100Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Recycle
nfs:
path: /tmp
server:192.168.137.33
网友评论