集群部署的两种方式

  • Kubeadm部署工具,提供kubeadm init和kubeadm join,用于快速的部署k8s集群
  • 二进制包,手动部署每个组件,组成集群

Kubeadmin部署方式

  1. 创建一个Master节点,使用kubeadmin init
  2. 将Node节点加入到当前的集群当中,kubeadm join <master节点的IP和端口>

集群资源分类

  • 名称空间级别:各个命名空间之间是隔离的
  • 集群级别:资源被定义后在全集群都可以被看见
  • 元数据型:不属于名称空间级别和集群级别,通过某些指标进行操作(比如分析系统的cpu指标)

名称空间级别下资源

工作负载型资源: Pod、ReplicaSet、Deployment、StatefulSet、DaemonSet、Job\CronJob
服务发现型以及负载均衡资源: Service、Ingress
配置与存储资源:Volume、CSI(容器存储接口)
特殊类型的存储卷:ConfigMap(当配置中心来使用的资源类型)、Secret(保存敏感数据)、DownWardAPI(把外部环境中的信息输出给容器)

容器的生命周期

pod运行周期

pod的生命周期

  • init C:初始化容器阶段,只是用于初始化的一个程序,并不会一直伴随着pod程序的运行,初始化完成之后init C 就会退,在数量上≥0,在同一时间只有一个initC程序在运行,一个initC程序结束之后才会执行下一个init C程序。在这个阶段就已经会创建pause容器
  • Main C:主容器,在容器运行之前执行START操作,结束之后会执行Stop操作
  • Readiness:就绪检测,查看当前的容器是否能被集群的外面所使用,
  • liveness:生存检测

pod的健康检查

livenessProbe(存活检查): 如果检查失败就会杀死容器,根据pod的重启策略来执行接下来的操作
readinessProbe(就绪检查):如果检查失败,k8s会把pod从service endpoints中剔除

Probe支持的三种检查方式:

  1. httpGet:发送http请求,返回200-400范围状态码为成功
  2. exec 执行shell命令返回状态码是0为成功
  3. tcpSocket:发起Tcp Socket建立成功
apiVersion: V1
kind: Pod
metadata: 
	labels:
		test: liveness
	name: liveness-exec
spec: 
	containers:
	- name: liveness
	  image: busybox
	  - args: 
	  - /bin/sh
	  - -c
	  - touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy
	  #livenessProbe项用于配置健康检查
	  livenessProbe:
	  	exec:
	  		command:
	  		- cat
	  		- /tmp/healthy
	  		initialDelaySeconds: 5
	  		periodSeconds: 5

init C

  • init c包含和运行很多实用的工具,但是出于安全和冗余方面的考虑,不建议在应用程序镜像中包含这些实用工具。
  • 应用程序镜像可以分离出创建和部署的角色,而没有必要联合它们构建一个单独的镜像,创建程序的部分可以放在init C去完成
  • Init 容器实用Linux Namespace所以相对应用程序容器来说具有不同的文件系统视图。因此他们可以具备访问Secret的权限,而应用程序容器则不能。
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐