文章目录
一. 深入掌握Pod
1. Pod定义详解




2. Pod的基本用法
-
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/

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

被折叠的 条评论
为什么被折叠?



