前言
- 本篇来学习Pod的基础知识
Pod
- Pod是kubernetes集群进行管理的最小单元,程序要运行必须部署在容器中,而容器必须存在于Pod中。
- Pod可以认为是容器的封装,一个Pod中可以存在一个或者多个容器。
- kubernetes在集群启动之后,集群中的各个组件也都是以Pod方式运行的
创建并运行
- kubernetes没有提供单独运行Pod的命令,都是通过Pod控制器来实现的
命令格式: kubectl run (pod控制器名称) [参数]
# --image 指定Pod的镜像
# --port 指定端口
# --namespace 指定namespace
kubectl run nginx --image=nginx:latest --port=80 --namespace test
查看pod信息
- 查看基本信息
kubectl get pod -n ns名称
# 例子
kubectl get pod -n test
- 查看详细信息
kubectl describe pod pod名称 -n ns名称
# 例子
kubectl describe pod pod名称 -n test
访问pod
- 获取pod IP
# 1. 获取podIP
kubectl get pod -n ns名称 -o wide
# 例子
kubectl get pods -n test -o wide
- 访问pod
culr ip:port
# 例子
curl 10.244.1.2:80
删除指定pod
# 删除指定Pod
[root@master ~]# kubectl delete pod nginx-dd6b5d745-4dxf5 -n test
pod "nginx-dd6b5d745-4dxf5" deleted
# 此时,显示删除Pod成功,但是再查询,发现又新产生了一个
[root@master ~]# kubectl get pods -n test
NAME READY STATUS RESTARTS AGE
nginx-dd6b5d745-8s7qh 1/1 Running 0 104s
# 这是因为当前Pod是由Pod控制器创建的,控制器会监控Pod状况,一旦发现Pod死亡,会立即重建
# 此时要想删除Pod,必须删除Pod控制器
# 先来查询一下当前namespace下的Pod控制器
[root@master ~]# kubectl get deploy -n test
NAME READY UP-TO-DATE AVAILABLE AGE
nginx 1/1 1 1 32m
# 接下来,删除此PodPod控制器
[root@master ~]# kubectl delete deploy nginx -n test
deployment.apps "nginx" deleted
# 稍等片刻,再查询Pod,发现Pod被删除了
[root@master ~]# kubectl get pods -n test
No resources found in dev namespace.
yaml配置
- 创建一个deploy-nginx.yaml,内容如下:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
namespace: dev
spec:
replicas: 3
selector:
matchLabels:
run: nginx
template:
metadata:
labels:
run: nginx
spec:
containers:
- image: nginx:latest
name: nginx
ports:
- containerPort: 80
protocol: TCP
-
创建:kubectl create -f deploy-nginx.yaml
-
删除:kubectl delete -f deploy-nginx.yaml