自己如何创建一个网站关键词优化按天计费
Pod是一个逻辑抽象概念,kubernetes创建和管理的最小单元,一个Pod由一个容器或多个容器组成。
 
 
特点:
 
一个Pod可以理解为是一个应用实例,提供服务Pod中容器始终部署在一个Node上Pod中容器共享网络、存储资源
Pod主要用法:
 
运行单个容器:最常见的用法,在这种情况下,可以将Pod看作是单个容器的抽象封装。运行多个容器:边车模式(Sidecar),通过在Pod中定义专门容器,来执行主业务容器需要的辅助工作,这样好处是将辅助功能同主业务容器解耦,实现独立发布和能力重用。
例如:
 
日志收集
 
应用监控
 
 
Pod对象:资源共享实现机制
 
 
Pod管理命令
 
创建Pod: 
 kubectl apply -f pod.yaml
或者使用命令: kubectl run nginx --image=nginx 查看Pod: 
 kubectl get pods
kubectl describe pod <Pod名称> 查看日志: 
 kubectl logs <Pod名称> [-c CONTAINER]
kubectl logs <Pod名称> [-c CONTAINER] -f 进入容器终端:
 kubectl exec -it <Pod名称> [-c CONTAINER] -- bash 删除Pod:
 kubectl delete pod <Pod名称> Pod对象:资源共享实现机制
 
Pod对象:重启策略+健康检查(应用自修复)
 
重启策略(restartPolicy):
 
• Always:当容器终止退出后,总是重启容器,默认策略。• OnFailure:当容器异常退出(退出状态码非0)时,才重启容器。• Never:当容器终止退出,从不重启容器。
健康检查有以下3种类型:
 
• livenessProbe(存活检查):如果检查失败,将杀死容器,根据Pod的restartPolicy来操作。• readinessProbe(就绪检查):如果检查失败, Kubernetes会把Pod从service endpoints中剔除。• startupProbe(启动检查):检查成功才由存活检查接手, 用于保护
慢启动容器
 
支持以下三种检查方法:
 
• httpGet发送HTTP请求,返回200-400范围状态码为成功。• exec:执行Shell命令返回状态码是0为成功。• tcpSocket:发起TCP Socket建立成功。
rollout 查看历史版本
 rs 可以看到历史版本号与rs对应关系,从rs可以再得知当前对应的镜像
# 获取发布版本与对应镜像
 kubectl describe $(kubectl get rs -o name -n test |grep "web1-") -n test |grep -E "revision:|Image:" # 回滚到上一个版本或者指定版本 
  kubectl rollout undo deployment web1 -n test
kubectl rollout undo deployment web1 --to-revision=1 -n test 常规健康检查方法:端口监听、运行进程、HTTP状态码、端口探测
 
环境变量
 
创建 Pod 时,可以为其下的容器设置环境变量。
应用场景:
 
容器内应用程序获取Pod信息容器内应用程序通过用户定义的变量改变默认行为
变量值几种定义方式:
 
• 自定义变量值• 变量值从Pod属性获取• 变量值从Secret、 ConfigMap获取
Pod对象:Init Container
 
Init Container:顾名思义,用于初始化工作,执行完就结束,可以理解为一次性任务。• 支持大部分应用容器配置,但不支持健康检查• 优先应用容器执行
应用场景:
 
• 环境检查:例如确保应用容器依赖的服务启动后再启动应用容器• 初始化配置:例如给应用容器准备配置文件
Pod中会有这几种类型的容器?
 
1、Infrastructure Container: 基础容器维护整个Pod网络空间2、 InitContainers: 初始化容器先于业务容器开始执行3、 Containers: 业务容器并行启动
Pod对象:静态Pod
 
静态Pod特点:
 
Pod由特定节点上的kubelet管理不能使用控制器Pod名称标识当前节点名称
在kubelet配置文件启用静态Pod的参数:
 
vi /var/lib/kubelet/config.yaml
 ...staticPodPath: /etc/kubernetes/manifests
注:将部署的pod yaml放到该目录会由kubelet自动创建
 
 
