K8S之深入理解Pod

本文详细介绍了Pod的基础用法,静态Pod的特点,以及ConfigMap在配置管理中的关键作用,包括环境变量和Volume挂载方式。此外,探讨了Pod的生命周期、重启策略、健康检查和在RC、Deployment中的调度过程。

一. 深入掌握Pod

1. Pod定义详解

在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述

2. Pod的基本用法

  1. Pod的基本用法为:Pod可由1个或多个容器组合而成。

    • 一个容器的Pod例子
    [root@node2 test]# cat frontend-controller.yaml 
    apiVersion: v1
    kind: ReplicationController
    metadata:
     name: frontend
     labels:
      name: frontend
    spec:
     replicas: 3
     selector:
      name: frontend
     template:
      metadata:
       labels:
        name: frontend
      spec: 
       containers:
       - name: frontend
         image: kubeguide/guestbook-php-frontend
         env:
         - name: GET_HOSTS_FROM
           value: env
         ports:
         - containerPort: 80
    

    这个frontend Pod在成功启动之后,将启动一个Docker容器;另一种场景是当frontend和redis两个容器应用为紧耦合的关系,应该组合成一个整体对外提供服务,则应该将这两个容器打包为一个Pod。
    在这里插入图片描述

  • 配置文件frontend-localredis-pod.yaml 如下:
apiVersion: v1
kind: Pod
metadata:
 name: redis-php
 labels:
  name: redis-php
spec:
   containers:
   - name: frontend
     image: kubeguide/guestbook-php-frontend
     ports:
     - containerPort: 80
   - name: redis
     image: kubeguide/redis-master
     ports:
     - containerPort: 6379

属于一个Pod的多个容器应用之间互相访问时需要通过localhost就可以通信,使得这一组容器被"绑定"在了一个环境中。

  • 查看Pod,REDY为2/2,表示这个Pod的两个容器都成功运行了。
[root@node2 test]# kubectl get pods | grep redis-php
redis-php            2/2     Running   0          3m
  • 查看Pod详细信息
[root@node2 test]# kubectl describe pod redis-php

3. 静态Pod

  • 由kubelet进行创建,并且在kubelet所在的Node上运行。
  • 静态Pod由kubelet进行管理的仅存于特定Node上的Pod。不能通过API Server进行管理。无法与RC、Deployment、DaemonSet进行关联。
  • kubelet无法对它们进行健康检查。
  • 作用:有效预防通过kubectl、或管理工具操作的误删除,可以用来部署核心组件应用。保障应用服务总是运行稳定数量和提供稳定服务。

创建静态Pod有两种方式:配置文件或者HTTP方式。

4. Pod容器共享Volume

  • 在同一个Pod中的多个容器可以共享Pod级别的存储卷Volume。
  • Volume可以被定义为各种类型,多个容器各自挂载为内部目录使用。

例子:Pod内包含两个容器,tomcat和busybox,在Pod级别设置Volume“app-logs”,用于tomcat向其中写日志文件,busybox读写日志文件。

[root@node2 kubernetes]# cat pod-volume-applogs.yaml 
apiVersion: v1
kind: Pod
metadata:
 name: volume-pod
spec:
 containers:
 - name: tomcat
   image: tomcat
   ports:
   - containerPort: 8080
   volumeMounts:
   - name: app-logs
     mountPath: /usr/local/tomcat/
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值