kubernetes五大资源之Pod

Pod是kubernetes集群进行管理的最小单元,程序运行必须部署在容器中,而容器必须存在于Pod中。

Pod可以认为是容器的封装,一个Pod中可以存在一个或多个容器。

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

#查看指定kube-system名称空间中的Pod

[root@master ~]# kubectl get pod -n kube-system
NAME                             READY   STATUS    RESTARTS   AGE

coredns-6955765f44-dzhkh         1/1     Running   0          5d18h

coredns-6955765f44-rn4ds         1/1     Running   0          5d18h

etcd-master                      1/1     Running   0          5d18h

kube-apiserver-master            1/1     Running   0          5d18h

kube-controller-manager-master   1/1     Running   7          5d18h

kube-flannel-ds-2p922            1/1     Running   0          5d18h

kube-flannel-ds-fz8bz            1/1     Running   0          5d18h

kube-flannel-ds-plfvb            1/1     Running   0          5d18h

kube-proxy-7k4lf                 1/1     Running   0          5d18h

kube-proxy-h485n                 1/1     Running   0          5d18h

kube-proxy-m45qq                 1/1     Running   0          5d18h

kube-scheduler-master            1/1     Running   5          5d18h

Pod操作指令命令

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

- 命令格式:kubectl run (pod控制器名称) [参数]

- --image            #指定Pod的镜像

- --port                #指定端口

- --namespace   #指定Namespace

#创建Namespace,并将Pod运行在指定的Namespace中

[root@master ~]# kubectl create ns dev

namespace/dev created

#指定Pod运行在dev名称空间中(k8s无法设置直接控制pod的启停;由pod控制器操作

但是可以创建/删除

[root@master ~]# kubectl run nginx --image=nginx:1.17.1 --port=80 --namespace dev

kubectl run --generator=deployment/apps.v1 is DEPRECATED and will be removed in a future version. Use kubectl run --generator=run-pod/v1 or kubectl create instead.

deployment.apps/nginx created(pod控制器nginx创建成功)

查看Pod命令

#查看Namespace中Pod基本信息,默认为default名称空间Pod信息

[root@master ~]# kubectl get pods (这是查看的默认namespace下的pod)
NAME                     READY   STATUS    RESTARTS   AGE

nginx-696649f6f9-t4xm6   1/1     Running   0          5d18h

#查看dev名称空间中的Pod信息

[root@master ~] kubectl get pod -n dev
NAME                     READY   STATUS              RESTARTS   AGE

nginx-64777cd554-tjdcw   0/1     ContainerCreating   0          2m1s

#查看Pod详细信息(-o wide)

[root@master ~]# kubectl get pod -n dev -o wide(宽泛查看)

NAME                     READY STATUS  RESTARTS  AGE     IP           NODE    

nginx-64777cd554-tjdcw   1/1   Running   0       2m49s   10.244.2.5   node2

#查看Pod详细描述信息

[root@master ~]# kubectl describe pod nginx-64777cd554-tjdcw -n dev

访问Pod命令

#可通过Pod的IP端口访问Pod中运行的程序

[root@master ~]# curl http://10.244.2.5:80

#查看Pod名称

[root@master ~]# kubectl get pod -n dev

NAME                     READY   STATUS    RESTARTS   AGE

nginx-64777cd554-tjdcw   1/1     Running   0          24m

#删除Pod

[root@master ~]# kubectl delete pod  nginx-64777cd554-tjdcw -n dev

pod "nginx-64777cd554-tjdcw" deleted

#查看pod信息

[root@master ~]# kubectl get pod -n dev

NAME                     READY   STATUS    RESTARTS   AGE

nginx-64777cd554-2cptl   1/1     Running   0          34s

#可以发现刚刚的pod被删除以后,新的pod又自动生成了,该原因是应为pod控制器又自动创建一个新pod,如果想永久删除可以将pod控制器删除自动修复机制

#查看pod控制器信息(pod控制器就是deployment部署机制

[root@master ~]# kubectl get deployment -n dev

NAME    READY   UP-TO-DATE   AVAILABLE   AGE

nginx   1/1     1            1           29m

#删除pod控制器(pod控制器也是在namespace里的)

[root@master ~]# kubectl delete deployment nginx -n dev

deployment.apps "nginx" deleted

#查看pod信息

[root@master ~]# kubectl get pod -n dev

No resources found in dev namespace.

配置文件形式创建pod

[root@master ~]# vim pod_nginx.yml
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

#通过配置文件创建Pod

[root@master ~]# kubectl create -f pod_nginx.yml

pod/nginx created

#查看dev名称空间下pod信息

[root@master ~]# kubectl get pod -n dev

NAME    READY   STATUS    RESTARTS   AGE

nginx   1/1     Running   0          75s

#查看pod详细信息

[root@master ~]# kubectl get pod -n dev -o wide

NAME    READY   STATUS    RESTARTS   AGE     IP

nginx   1/1     Running   0          3m13s   10.244.2.7

#访问pod中nginx程序

[root@master ~]# curl http://10.244.2.7:80

#删除pod

[root@master ~]# kubectl delete -f pod_nginx.yml

pod "nginx" deleted

#查看pod信息

[root@master ~]# kubectl get pod -n dev

No resources found in dev namespace.

由命令行配置的创建的pod和单纯由命令行创建的pod删除;配置文件的可以直接删除pod

猜你喜欢

转载自blog.csdn.net/m0_72264240/article/details/130802835