IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 重启策略 ,健康检查,环境变量,初始化容器 -> 正文阅读

[系统运维]重启策略 ,健康检查,环境变量,初始化容器

重启策略

Always: 当容器终止退出后,总是重启容器,默认策略。
OnFailure: 当容器异常退出(退出状态码非0)时,才重启容器。
Never:当容器终止退出,从不重启容器。

[root@master ~]# kubectl explain pod.spec.restartPolicy
KIND:     Pod
VERSION:  v1

FIELD:    restartPolicy <string>

DESCRIPTION:
     Restart policy for all containers within the pod. One of Always, OnFailure,
     Never. Default to Always. More info:
     https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy

修改策略为Never

[root@master ~]# cat pod.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: pod-1
  namespace: default
  labels:
    app: web
spec:
  containers:
  - name: web1
    image: nginx
  - name: busybox
    image: busybox
    command:
    - '/bin/sh'
    - '-c'   
    - 'sleep 36000'
  restartPolicy: Never
默认的话不用修改,现在改为never,停止容器后不会重启
[root@master ~]# kubectl apply -f pod.yaml 
pod/pod-1 created
[root@master ~]# kubectl get pods
NAME    READY   STATUS    RESTARTS   AGE
pod-1   2/2     Running   0          14m

[root@master ~]# kubectl get pods -o wide -w  #-w实时监控,在node1上面用docker命令关上其中一个,发现不会重启
NAME    READY   STATUS    RESTARTS   AGE   IP           NODE    NOMINATED NODE   READINESS GATES
pod-1   2/2     Running   0          19m   10.244.1.2   node1   <none>           <none>
pod-1   1/2     NotReady   0          19m   10.244.1.2   node1   <none>           <none>
^V^C[root@master ~]# 

修改策略为Always

先修改pod.yaml文件,改为Always
[root@master ~]# cat pod.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: pod-1
  namespace: default
  labels:
    app: web
spec:
  containers:
  - name: web1
    image: nginx
  - name: busybox
    image: busybox
    command:
    - '/bin/sh'
    - '-c'   
    - 'sleep 36000'
  restartPolicy: Always
删除原先的pod.yaml ,重启启动一个新的pod
[root@master ~]# kubectl delete -f pod.yaml 
pod "pod-1" deleted
[root@master ~]# kubecel apply -f pod.yaml 
-bash: kubecel: 未找到命令
[root@master ~]# kubectl apply -f pod.yaml 
pod/pod-1 created

启动好后,在node1上面删除nginx
[root@node1 ~]# docker stop 53d1dcf613a7
53d1dcf613a7

提前监控pods
[root@master ~]# kubectl get pods -o wide -w
NAME    READY   STATUS    RESTARTS   AGE     IP           NODE    NOMINATED NODE   READINESS GATES
pod-1   2/2     Running   0          6m57s   10.244.1.3   node1   <none>           <none>
pod-1   1/2     NotReady   0          7m11s   10.244.1.3   node1   <none>           <none>
pod-1   2/2     Running    1          7m27s   10.244.1.3   node1   <none>           <none>
发现等一段时间后,会重新启动.

在这里插入图片描述

健康检查类型

livenessProbe (存活检查) :如果检查失败,将杀死容器,根据Pod的restartPolicy来操作。
readinessProbe (就绪检查) :如果检查失败,Kubernetes会把Pod从service endpoints中剔除。

[root@master ~]# kubectl explain pods.spec.containers.livenessProbe 
针对名字叫web1 的
[root@master ~]# cat pod.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: pod-1
  namespace: default
  labels:
    app: web
spec:
  containers:
  - name: web1
    image: nginx
    livenessProbe:
      httpGet:
        port: 80 
  - name: busybox
    image: busybox
    command:
    - '/bin/sh'
    - '-c'   
    - 'sleep 36000'
  restartPolicy: Always
检查80端口能否访问,能访问就不重启,不能访问就重启。

与重启策略相结合使用,

支持的检查方式

httpGet:发送HTTP请求,返回200-400范围状态码为成功。
exec: 执行hell命令返回状态码是0为成功。
tcpSocket:发起TCP Socket建立成功。

环境变量

变量值几种定义方式:

  • 自定义变量值
  • 变量值从Pod属性获取
  • 变量值从Secrt,ConfigMap

初始化容器

Init Container:顾名思义,用于初始化工作,执行完就结束,可以理解为- -次性任务。
  • 支持大部分应用容器配置,但不支持健康检查
    优先应用容器执行
应用场景:
  • 环境检查:例如确保应用容器依赖的服务启动后再启动应用容器
  • 初始化配置:例如给应用容器准备配置文件

创建一个有初始化容器的Pod
创将一个Pod,该Pod中包含一个应用容器和初始化容器。在应用容器开始之前,初始化容器的初始化任务已经完成。文件名:pod.yaml

示例:部署一个web网站,网站程序没有打到镜像中,而是希望从代码仓库中动态拉取放到应用容器中。

[root@master ~]# cat init.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: init-pod
  namespace: default
spec:
  initContainers:
  - name: download
    image: busybox
    command:
    - "wget"
    - "-O"
    - "/opt/index.html"
    - http://www.baidu.com
    volumeMounts:
    - name: wwwroot
      mountPath: "/opt"
  containers:
  - name: nginx
    image: nginx
    volumeMounts:
    - name: wwwroot
      mountPath: /usr/share/nginx/html
  volumes:
  - name: wwwroot
    emptyDir: {}

#创建
[root@master ~]# kubectl apply -f init.yaml 
pod/init-pod created

#此时init容器进行启动工作
[root@master ~]# kubectl get pods
NAME    READY   STATUS              RESTARTS   AGE
pod-1   0/2     ContainerCreating   0          22s


#当init容器完成后,应用容器启动并进行工作
[root@master ~]# kubectl get pods
NAME    READY   STATUS    RESTARTS   AGE
pod-1   2/2     Running   0          4m47s

当我们Pod正常Running之后,我们可以通过kubectl describe pod [pod-name]查看到init容器的一个状态
如果失败init容器默认会在State中显示CrashLoopBackOff (重启/异常),在Reason会显示Error

State 代表状态
Reason 原因
Terminated 终止
Completed 完成

深入理解Pod对象:调度

  • 创建一个Pod的工作流程
    Kubernetes基于list-watch机制的控制器架构,实现组件间交互的解耦。
    其他组件监控自己负责的资源,当这些资源发生变化时,kube- apiserver会通知这些组件,这个过程类似于发布与订阅。
    在这里插入图片描述
  • Pod中影响调度的主要属性
    根据资源调度,根据策略调度
    在这里插入图片描述
  • 资源限制对Pod调度的影响
  • nodeSelector & nodeAffinity
  • Taint (污点) & Tolerations (污点容忍)
  • nodeName
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-09-01 12:21:05  更:2021-09-01 12:22:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 11:36:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码