Pod基本概念

本文介绍了Kubernetes中的Pod基本概念,强调Pod是管理容器的最小单位,可包含一个或多个共享存储和网络的容器。Pod的存在意义包括运行单个或多个紧密耦合的应用,并详细讨论了Pod的资源共享、管理命令、重启策略、健康检查、环境变量以及init Container的使用场景。通过示例展示了Pod如何实现应用的初始化和自修复功能。
摘要由CSDN通过智能技术生成

Pod基本概念

Pod是Kubernetes创建和管理的最小单元,一个Pod由一个容器或多个容器组成,这些容器共享存储、网络。

Pod特点

  • .一个Pod可以理解为是一个应用实例,提供服务.
  • Pod中容器始终部署在一个Node上
  • Pod中容器共享网络、存储资源
  • Kubernetes直接管理Pod,而不是容器

Pod存在意义

Pod主要用法:

  • ·运行单个容器:最常见的用法,在这种情况下,可以将Pod看做是单个容器的抽象封装
  • 运行多个容器:封装多个紧密耦合且需要共享资源的应用程序

如果有这些需求,你可以运行多个容器:

  • 两个应用之间发生文件交互
  • 两个应用需要通过127.0.0.1或者socket通信
  • 两个应用需要发生频繁的调用

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 <Pod名称> [-c CONTAINER] -- bash

//删除pod
kubectl delete <Pod名称>
//定义Pod
apiVersion: v1
kind: Pod
metadata:
  name: my-podspec:
containers:
- name: container1
  image: nginx
- name: container2
  image: centos

重启策略

  • Always:当容器终止退出后,总是重启容器,默认策略(总是重启)
  • OnFailure:当容器异常退出(退出状态码非0)时,才重启容器 (非正常退出,比如stop、kill)
  • 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 test.yml 
apiVersion: v1
kind: Pod
metadata: 
  name: web
spec: 
  containers:
  - name: nginx
    image: nginx
    imagePullPolicy: IfNotPresent
  - name: test
    image: busybox
    imagePullPolicy: IfNotPresent
    command: ["bin/sh","-c","sleep 45"]
  restartPolicy: Never 		#默认的话不用修改,改为never后停止容器不会重启
 
[root@master ~]# kubectl apply -f test.yml 
pod/web created
[root@master ~]# kubectl get pod
NAME   READY   STATUS    RESTARTS   AGE
web    2/2     Running   0          18s
[root@master ~]#  kubectl get pod -o wide -w		#-w实时监控,在node2上面用docker命令关上其中一个,发现不会重启
NAME   READY   STATUS    RESTARTS   AGE   IP            NODE    NOMINATED NODE   READINESS GATES
web    2/2     Running   0          35s   10.244.1.25   node1   <none>           <none>
web    1/2     NotReady   0          49s   10.244.1.25   node1   <none>           <none>


//修改为Always
[root@master ~]# cat test.yml 
apiVersion: v1
kind: Pod
metadata: 
  name: web
spec: 
  containers:
  <
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值