k8s-实战入门-Pod(六)
2025-03-01 00:00:59  阅读数 873

Pod

Pod是kubernetes集群进行管理的最小单元,程序要运行必须部署在容器中,而容器必须存在于Pod中。
Pod可以认为是容器的封装,一个Pod中可以存在一个或者多个容器。
k8s通过管理pod进而控制容器进而控制里面的程序。


image

kubernetes在集群启动之后,集群中的各个组件也都是以Pod方式运行的。可以通过下面命令查看:

[root@master ~]# kubectl get pod -n kube-system
image

创建并运行

kubernetes没有提供单独运行Pod的命令,都是通过Pod控制器来实现的

# 命令格式: kubectl run (pod控制器名称) [参数]
# --image  指定Pod的镜像
# --port   指定端口
# --namespace  指定namespace
[root@master~]# kubectl run nginx --image=nginx:1.17.1 --port=80 --namespace dev

查看pod信息

# 查看Pod基本信息
[root@master~]# kubectl get pods -n dev
# 查看Pod的详细信息
[root@master~]# kubectl describe pod *nginx-64777cd554-9ctwh* -n dev
image

image

image

访问Pod

# 获取pod **IP**
[root@master~]# kubectl get pods -n dev -o wide
#访问POD
[root@master~]# curl http://10.244.1.11:80
image

删除指定Pod

# 删除指定Pod
[root@master~]# kubectl delete pod nginx-64777cd554-9ctwh -n dev
# 此时,显示删除Pod成功,但是再查询,发现又新产生了一个
[root@master~]# kubectl get pods -n dev
image
**# 这是因为当前Pod是由Pod控制器创建的,控制器会监控Pod状况,一旦发现Pod死亡,会立即重建**
**# 此时要想删除Pod,必须删除Pod控制器**
# 先来查询一下当前namespace下的Pod控制器
[root@master~]# kubectl get deploy -n  dev
# 接下来,删除此Pod控制器
[root@master~]# kubectl delete deploy nginx -n dev
image
# 稍等片刻,再查询Pod,发现Pod被删除了
[root@master~]# kubectl get pods -n dev
Noresourcesfoundindevnamespace.
image

配置操作

创建一个pod-nginx.yaml,内容如下:

vim pod-nginx.yaml
apiVersion: v1
kind: Pod 
metadata:
  name: nginx
  namespace: dev 
spec: 
  containers: 
  - image: nginx:1.17.1 
     name: pod 
     ports:
    - name: nginx-port 
       containerPort: 80 
       protocol: TCP
image

然后就可以执行对应的创建和删除命令了:
创建:

kubectl  create  -f  pod-nginx.yaml
删除:
kubectl  delete  -f  pod-nginx.yaml
image