六、pod(k8s中最小的调度单元)
pod中可以有一个或多个容器
1、官网
2、简介
Pod是k8s中最小的调度单元、Pod具有命名空间隔离性
3、如何创建一个Pod资源(主要两种方式)
1)kubctl run
①kubectl run nginx–image=registry.cn-chengdu.aliyuncs.com/qzcsbj/nginx:1.16.1
命令含义:
run后面是指定pod的名称,–是指定容器里面image的镜像。
kubectl get po可以查看到刚才创建的pod,此容器还没创建好,ready是0/1,两侧为1就表示容器已经起好。
kubectl get po -owide可以进行访问pod,直接通过pod的ip来访问nginx,此处可以看到是调度在k8s-node02这个节点。
这个pod的ip是172开头
不常用,因为如果要写很多参数不方便
一般是获取yaml方式
2)yaml文件
此处可以通过运行的pod进行来获取
在k8s文件中,所有的资源都可以使用一个yaml配置文件来创建。
kubectl get po 后面可以进行加名字,如果不加名字,就要将所有pod列出来。
①获取yaml方式是通过-oyaml,kubectl get po nginx -oyaml > nginx.yaml
以下就是pod的yaml文件
以上的yaml文件做了以下浓缩
pod的yaml文件压缩主要内容
②压缩后的yaml文件解释(简单的pod的yaml文件)
apiVersion:v1
kind:Pod
metadata:
name:
spec:
contains:
-name:nginx
image:registry.cn-chengdu.aliyuncs.com/qzcsbj/nginx:1.16.1
ports:
-containerPort:80
第一行是api版本
第二行是创建资源的类型
第三行metadata是源数据
第四行是要创建的pod(nginx)的名称
第五行spec是创建资源的规格,
第六行 contains,表示可以加多个容器,一个pod是由一个或多个容器组成nginx,和上面的nginx有不一样的地方。
第七行是 -name 表示列表,第一个容器的定义,此处的name也是nginx,此处的name表示容器的name叫nginx,一个pod中可以有多个容器,容器之间的name不一样。这个name是来区分不同容器。
第八行是镜像,容器使用的镜像。
第九、十行容器端口,容器端口80
③创建pod:https://kubernetes.io/zh-cn/docs/concepts/workloads/pods/,不知怎么写,可以参考官网。
④若不知每一行是什么含义,可以通过kubectl explain 进行查看每一行含义
列如:
想看pod的yaml文件中image的含义:kubectl explain po.spec.containers
⑤通过yaml文件创建pod:kubectl apply -f nginx-pod.yaml
也是可以访问的
以上两种方式都是可以的,建议用yaml文件创建pod
4、查看pod
4.1kubectl get po
kubectl get po
4.2kubectl get po -owide查看pod扩展信息(查看pod调度到哪个节点或者pod的ip)
4.3kubectl get -f nginx-pod.yaml
和kubectl get po看到的结果是一样的
创建pod时可以通过yam文件 -f创建,查看时也可以通过 -f进行查看
5、进入容器
5.1单容器
进入nginx的pod容器
kubectl exec -it nginx --bash
5.2多容器(pod中既有nginx,也有tomcat容器,但是想要进入tomcat容器,即需要加参数 -c)
指定进入tomcat的容器
kubectl exec -it nginx -c tomcat --bash
5.3补充
没有bash就用sh
kubectl exec -it calico-node-g8hsp -n kube-system --sh
5.4(有的时候想要获取容器的信息,可以不进入容器,直接执行容器里面的命令)
– 后面跟上要执行的命令即可
如想看环境变量
kubectl exec nginx – env
如想看进入容器后的路径
kubectl exec nginx – pwd
6、删除pod kubectl delete po pod_name
6.1也可以通过yaml文件进行删除 kubectl delete -f nginx-pod.yaml
6.2删多个 kubectl po busybox busybox2 nginx
7、日志kubectl logs
7.1格式kubectl logs -f POD_NAME -n POD_NAMESPACE
kubectl logs -f nginx
kubectl logs -f nginx-fc84677f-fxb47 --tail 10