jsp网站开发 英文,销售平台排行榜前十名,建筑工地找工作的平台,网站开发按工时收费文章目录 进入pod容器的命令pod中只有1个用户容器pod中只有2个#xff08;含#xff09;以上用户容器 yaml中的字段不清楚后面跟什么#xff0c;通过explain来查看查看pod内指定容器的日志Pod内各个容器的服务端口不能相同资源对象的创建方式一方式二 查看pod的详细信息查看… 文章目录 进入pod容器的命令pod中只有1个用户容器pod中只有2个含以上用户容器 yaml中的字段不清楚后面跟什么通过explain来查看查看pod内指定容器的日志Pod内各个容器的服务端口不能相同资源对象的创建方式一方式二 查看pod的详细信息查看yaml文件的创建后的资源对象的信息查看pod的事件信息pod状态异常时有用查看node的详情信息删除pod的方式 进入pod容器的命令
可选项-c, --container: 容器的名字. 如果忽略, 默认是进入pod中的第一个容器-p, --pod: Pod的名字 -p 可以省略 后面直接跟 pod的名字-i, --stdinfalse: 传递标准输入到容器中-t, --ttyfalse: 标准输入是一个终端-n, --namespace string 如果存在, 命令行请求的命名空间作用范围pod中只有1个用户容器 只有一个容器时进入时不需要指定容器# 例如 test-pod 为pod名称kubectl exec -it test-pod -n test -- /bin/shpod中只有2个含以上用户容器
当有多个容器时就必须加上指定容器否则默认进入第一个容器
因此需要明确指定你想进入的容器名称kubectl exec -it test-pod -c mysql -n test -- /bin/shexec表示在容器内执行命令
-- /bin/sh表示在容器内打开一个shell终端遇到的问题 kubectl exec -it -p mysql-n6tc2 -c mysql -n default – /bin/sh 提示-p POD_NAME is DEPRECATED and will be removed in a future version. Use exec POD_NAME instead。 意思大概说的是 将来的版本不再 支持 -p pod名字 使用 exec pod名字来代替。
kubectl exec -it -c mysql -n default – /bin/sh #错误会报错 提示error: expected ‘exec POD_NAME COMMAND [ARG1] [ARG2] … [ARGN]’. POD_NAME and COMMAND are required arguments for the exec command 意思是说对于exec命令来说 POD的名字和 命令是必须的 See ‘kubectl exec -h’ for help and examples.
kubectl exec -h #查看exec后面可以跟什么命令或参数 -h 是 -help的缩写 Usage: kubectl exec POD [-c CONTAINER] – COMMAND [args…] [options]
yaml中的字段不清楚后面跟什么通过explain来查看
kubectl explain pods.spec.volumes.emptyDirkubectl explain pods.spec.containers.command查看pod内指定容器的日志
和kubectl exec 一样如果一个pod内存在多个容器时需要通过 -c 指定容器名
kubectl logs test-pod -c nginx-1 #test-pod是pod名称 nginx-1是容器名称如果存在多个容器不指定 -c的话会报以下错误 #error: a container name must be specified for pod redis-php, choose one of: [frontend redis-master] 意思大概是必须为pod名为redis-php的pod指定一个容器名可选择的容器为 frontend 和 redis-master。
Pod内各个容器的服务端口不能相同
1.注意不能在同一个Pod中创建两个使用相同端口的容器因为同一个pod内容器之间的访问是通过localhost:端口/接口名的方式即共享网络栈。pod有自己的ip但是pod内的容器没有自己的独立ip。公用pod的ip。
2.同一个node里的不同pod之间是隔离的类似于直接通过docker命令 在虚拟机或物理机上创建的容器。而同一个pod内的不同容器之间是不隔离的会共享ip数据卷等资源。 3.k8s管理调度的最小单元是pod不是pod内的各个容器。
4.一般情况下一个pod内只有一个用户容器只有当一组容器有紧密联系时才把这组容器放到一个pod里。
资源对象的创建
方式一 kubectl create -f xxxx.yaml用于创建 Kubernetes 对象。如果对应的资源已经存在则会返回错误此时需要先删除原有的资源对象然后再执行创建操作。如果资源对象不存在则会自动创建对应的资源对象
kubectl replace -f pod1.yaml --force这种先使用 kubectl create 命令修改yaml配置文件后然后再使用 kubectl replace 命令的操作称为命令式配置文件操作。 命令执行完成后名为 pod1 的 Pod 会被删除后再新建
例如 [rootk8s-master k8s]# kubectl replace -f frontend-localredis-pod.yaml --force pod “redis-php” deleted pod/redis-php replaced
方式二
kubectl apply -f xxxx.yaml
用于创建或更新一个 Kubernetes 对象。如果该资源对象已经存在则会首先尝试更新对应的字段值和
配置如果不存在则会自动创建资源对象。
kubectl apply -f pod1.yaml 修改yaml配置文件后
再次使用 kubectl apply 命令更新 Pod。
命令执行完成后名为 pod1 的 Pod 不会删除后再新建也不会另外创建新 Pod。只会在原 Pod 基础
上进行内部配置修改。注意由 kubectl apply 命令创建的 Pod可以修改对应的 YAML 文件来修改 Pod中的参数。但不能修改metadata.namePod名否则将重新创建一个新 Pod。
kubectl create -f 适用于初始化资源对象的场景 而kubectl apply -f 则更加适合更新和修改已有的资源对象因为它会对比新的 YAML 配置文件和已有的资源对象配置只更新需要更新的部分而不会覆盖已有的全部配置
查看pod的详细信息
kubectl get pods -n 命名空间 # 查看指定命名空间下的pod
kubectl get pods -o wide # 显示pod的IP地址及Pod所在的Node节点机器主机名称
kubectl get pods -A # 显示所有命名空间下的pod信息并在第一列展示命名空间
kubectl get pods # 不指定命名空间则只显示默认 default,等价于 kubectl get pods -n default
kubectl get pods -A -o wide #显示的比较全的信息命令组合查看yaml文件的创建后的资源对象的信息
kubectl -n default get pod -o yaml redis-php查看pod的事件信息pod状态异常时有用
kubectl describe pod POD名称 #pod启动失败 就看这个的事件日志就行查看node的详情信息
kubectl describe node node名称或者node的地址 #查看node的详情信息删除pod的方式
kubectl delete pod pod名称 或 kubectl delete -f vmware-nginx.yaml #创建pod的资源配置文件 都可以实现删除pod