K8S常用资源认识( 二 )


Pod在设计支持就不是作为持久化实体的 。在调度失败、节点故障、缺少资源或者节点维护的状态下都会死掉会被驱逐 。
通常,用户不需要手动直接创建Pod,而是应该使用(例如),即使是在创建单个Pod的情况下 。可以提供集群级别的自愈功能、复制和升级管理 。
# 命令格式: kubectl run pod控制器名称 [参数]# --image指定Pod的镜像# --port指定容器暴露的端口# -n指定namespace,如果不指定就默认创建在 default 命名空间中[root@k8s-master ~]# kubectl create ns testnamespace/test created[root@k8s-master ~]# kubectl run my-nginx --image=nginx:1.17.1 --port=80 -n test# 确保namespace 是存在的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/my-nginx created [root@k8s-master ~]#
查看pod信息
# 查看指定命名空间下的所有pod# kubectl get pod -n namespace[root@k8s-master ~]# kubectl get pod -n testNAMEREADYSTATUSRESTARTSAGEmy-nginx-6b7fbbc894-8z57b1/1Running020s# 上面的 my-nginx-6b7fbbc894-8z57b 这个pod就是由控制器my-nginx创建并管理的[root@k8s-master ~]# kubectl get deploy -n testNAMEREADYUP-TO-DATEAVAILABLEAGEmy-nginx1/11137s#查看pod更多信息# kubectl get pod -n namespace -o wide[root@k8s-master ~]# kubectl get pod -n test -o wideNAMEREADYSTATUSRESTARTSAGEIPNODENOMINATED NODEREADINESS GATESmy-nginx-6b7fbbc894-8z57b1/1Running05m37s10.244.1.7k8s-node01# pod名称 当前pod中的容器就绪数/当前pod中的容器个数(pause根容器不计算在内) pod状态 重启次数 启动时常 pod的IP 该pod被调度到哪个节点上运行# 查看pod的详细信息# kubectl describe pod pod名 -n namespace[root@k8s-master ~]# kubectl describe pod my-nginx-6b7fbbc894-4wrvc -n test
访问pod
# 获取pod的IP[root@k8s-master ~]# kubectl get pod -n test -o wideNAMEREADYSTATUSRESTARTSAGEIPNODENOMINATED NODEREADINESS GATESmy-nginx-6b7fbbc894-8z57b1/1Running05m37s10.244.1.7k8s-node01# pod的重启会导致IP变化# 访问pod[root@k8s-master ~]# curl 10.244.1.7:80Welcome to nginx!……省略……
删除指定pod
# kubectl delete pod pod名 -n namespace [root@k8s-master ~]# kubectl delete pod my-nginx-6b7fbbc894-8z57b-n testpod "my-nginx-6b7fbbc894-8z57b" deleted [root@k8s-master ~]# kubectl get pod -n testNAMEREADYSTATUSRESTARTSAGEmy-nginx-6b7fbbc894-2xl4t1/1Running06s# 发现虽然显示删除成功,但是再查询发现立刻又重启了一个pod,这是因为使用 kubectl run 命令# 创建的pod默认是会先创建pod控制器,再创建pod 。所以此时的pod是由pod控制器管理的,控制器会# 监控pod的状态,一旦发现pod死亡,会立即重建,这是deployment控制器的功能 。# 所以,此时要删除pod,必须删除该pod的控制器# 查询该pod的控制器[root@k8s-master ~]# kubectl get deploy -n testNAMEREADYUP-TO-DATEAVAILABLEAGEmy-nginx1/11126m# 删除该pod控制器[root@k8s-master ~]# kubectl delete deploy my-nginx -n testdeployment.apps "my-nginx" deleted# 稍等片刻,再查询,发现pod被删除了(对应pod的控制器被删除,那么该控制器下的pod也会相应自动被删除)[root@k8s-master ~]# kubectl get deploy -n testNo resources found in test namespace.
配置操作
使用配置文件创建pod
[root@k8s-master ~]# vim pod-nginx.yamlapiVersion: v1kind: Pod# 资源类型podmetadata:name: my-nginx# 该pod资源的名称namespace: test# 位于的namespacespec:containers:# 指定该pod中镜像相关信息- image: nginx:1.17.1# 镜像及版本imagePullPolicy: IfNotPresent# 镜像拉取策略name: mypod# 容器名称ports:# 容器端口相关- name: nginx-portcontainerPort: 80protocol: TCP# 创建[root@k8s-master ~]# kubectl create -f pod-nginx.yamlpod/my-nginx created# 查看[root@k8s-master ~]# kubectl get pod -n testNAMEREADYSTATUSRESTARTSAGEmy-nginx1/1Running010s# 删除[root@k8s-master ~]# kubectl delete -f pod-nginx.yamlpod "my-nginx" deleted # 或者使用 kubectl delete pod my-nginx -n test 进行删除,因为这种方式创建的pod为自主式pod,不会创建pod的管理器