目录

  • 一.系统环境
  • 二.前言
  • 三.pod的管理
    • 3.1 环境介绍
    • 3.2 管理pod

一.系统环境

服务器版本 docker软件版本 CPU架构
CentOS Linux release 7.4.1708 (Core) Docker version 20.10.12 x86_64

二.前言

pod的常见管理。

管理pod的前提是已经有一套可以正常运行的Kubernetes集群,关于Kubernetes(k8s)集群的安装部署,可以查看博客《Centos7 安装部署Kubernetes(k8s)集群》Centos7 安装部署Kubernetes(k8s)集群 - 人生的哲理 - 博客园

三.pod的管理

3.1 环境介绍

Kubernetes集群架构:k8scloude1作为master节点,k8scloude2,k8scloude3作为worker节点

服务器 操作系统版本 CPU架构 进程 功能描述
k8scloude1/192.168.110.130 CentOS Linux release 7.4.1708 (Core) x86_64 docker,kube-apiserver,etcd,kube-scheduler,kube-controller-manager,kubelet,kube-proxy,coredns,calico k8s master节点
k8scloude2/192.168.110.129 CentOS Linux release 7.4.1708 (Core) x86_64 docker,kubelet,kube-proxy,calico k8s worker节点
k8scloude3/192.168.110.128 CentOS Linux release 7.4.1708 (Core) x86_64 docker,kubelet,kube-proxy,calico k8s worker节点

3.2 管理pod

使用Nginx镜像创建一个pod

[root@k8scloude1 pod]# vim nginx.yaml #kind: Pod表示资源类型为Pod   labels指定pod标签   metadata下面的name指定pod名字   containers下面全是容器的定义
#image指定镜像名字  imagePullPolicy指定镜像下载策略   containers下面的name指定容器名
#resources指定容器资源(CPU,内存等)   env指定容器里的环境变量   dnsPolicy指定DNS策略
#restartPolicy容器重启策略    ports指定容器端口
[root@k8scloude1 pod]# cat nginx.yaml
apiVersion: v1
kind: Pod
metadata:creationTimestamp: nulllabels:run: nginxname: nginx
spec:containers:- image: nginximagePullPolicy: IfNotPresentname: nginxresources: {}ports:- name: httpcontainerPort: 80protocol: TCPenv:- name: xxvalue: "12"- name: yyvalue: "21"- name: zzvalue: hellodnsPolicy: ClusterFirstrestartPolicy: Always
status: {}[root@k8scloude1 pod]# ls
nginx.yaml  pod1.yaml  pod2.yaml[root@k8scloude1 pod]# kubectl apply -f nginx.yaml
pod/nginx created[root@k8scloude1 pod]# kubectl get pod
NAME    READY   STATUS    RESTARTS   AGE
nginx   1/1     Running   0          5s

不进入容器,执行ls / 命令

#不进入容器,执行命令:kubectl exec podname -- 命令
[root@k8scloude1 pod]# kubectl exec nginx -- ls /
bin
boot
dev
docker-entrypoint.d
docker-entrypoint.sh
etc
home
lib
lib64
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var

进入容器执行命令

#进入容器:kubectl exec -it podname -- bash
[root@k8scloude1 pod]# kubectl exec -it nginx -- bash
root@nginx:/# which nginx
/usr/sbin/nginx
root@nginx:/# exit
exit

从物理机复制文件到pod里

[root@k8scloude1 pod]# kubectl cp /etc/hosts nginx:/tmp[root@k8scloude1 pod]# kubectl exec nginx -- ls /tmp
hosts

从pod里复制文件到物理机

[root@k8scloude1 pod]# kubectl cp nginx:/etc/hosts nginx_hosts
tar: Removing leading `/' from member names[root@k8scloude1 pod]# ls
nginx_hosts  nginx.yaml  pod1.yaml  pod2.yaml[root@k8scloude1 pod]# cat nginx_hosts
# Kubernetes-managed hosts file.
127.0.0.1   localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
fe00::0 ip6-mcastprefix
fe00::1 ip6-allnodes
fe00::2 ip6-allrouters
10.244.251.202  nginx[root@k8scloude1 pod]# rm -rf nginx_hosts

查看pod的日志

[root@k8scloude1 pod]# kubectl logs nginx
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
2022/01/12 13:41:43 [notice] 1#1: using the "epoll" event method
2022/01/12 13:41:43 [notice] 1#1: nginx/1.21.5
2022/01/12 13:41:43 [notice] 1#1: built by gcc 10.2.1 20210110 (Debian 10.2.1-6)
2022/01/12 13:41:43 [notice] 1#1: OS: Linux 3.10.0-693.el7.x86_64
2022/01/12 13:41:43 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576
2022/01/12 13:41:43 [notice] 1#1: start worker processes
2022/01/12 13:41:43 [notice] 1#1: start worker process 31
2022/01/12 13:41:43 [notice] 1#1: start worker process 32

当一个pod里有两个容器,怎么查看?kubectl exec -it podname -c 容器名 -- 命令

首先创建一个包含2个容器的pod

[root@k8scloude1 pod]# vim pod2.yaml [root@k8scloude1 pod]# cat pod2.yaml
apiVersion: v1
kind: Pod
metadata:creationTimestamp: nulllabels:run: pod1name: pod1
spec:containers:- image: nginximagePullPolicy: IfNotPresentname: n1resources: {}- image: nginximagePullPolicy: IfNotPresentcommand: ["sh","-c","sleep 10"]name: n2resources: {}dnsPolicy: ClusterFirstrestartPolicy: Always
status: {}[root@k8scloude1 pod]# kubectl apply -f pod2.yaml
pod/pod1 created[root@k8scloude1 pod]# kubectl get pod
NAME    READY   STATUS    RESTARTS   AGE
pod1    2/2     Running   0          6s

查看pod1的描述信息

[root@k8scloude1 pod]# kubectl describe pod pod1
Name:         pod1
Namespace:    pod
Priority:     0
Node:         k8scloude2/192.168.110.129
Start Time:   Wed, 12 Jan 2022 21:53:05 +0800
Labels:       run=pod1
Annotations:  cni.projectcalico.org/containerID: d103a6cb8e6535c5cfa8cf52153a80c11b75c0b7a744c7ad1028f3f4e88a627ecni.projectcalico.org/podIP: 10.244.112.141/32cni.projectcalico.org/podIPs: 10.244.112.141/32
Status:       Running
IP:           10.244.112.141
IPs:IP:  10.244.112.141
Containers:n1:Container ID:   docker://e54540c02e54109af7437fd00f18bcca3969e75eafb336dadb9ddb21022520edImage:          nginxImage ID:       docker-pullable://nginx@sha256:0d17b565c37bcbd895e9d92315a05c1c3c9a29f762b011a10c54a66cd53c9b31Port:           <none>Host Port:      <none>State:          RunningStarted:      Wed, 12 Jan 2022 21:53:06 +0800Ready:          TrueRestart Count:  0Environment:    <none>Mounts:/var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-42h2q (ro)n2:Container ID:  docker://2d09c058d4c11f51c1c22c58012c79f5b8ec8327fcdd43e17f4533cb01f098d0Image:         nginxImage ID:      docker-pullable://nginx@sha256:0d17b565c37bcbd895e9d92315a05c1c3c9a29f762b011a10c54a66cd53c9b31Port:          <none>Host Port:     <none>Command:sh-csleep 10State:          TerminatedReason:       CompletedExit Code:    0Started:      Wed, 12 Jan 2022 21:53:39 +0800Finished:     Wed, 12 Jan 2022 21:53:49 +0800Last State:     TerminatedReason:       CompletedExit Code:    0Started:      Wed, 12 Jan 2022 21:53:17 +0800Finished:     Wed, 12 Jan 2022 21:53:27 +0800Ready:          FalseRestart Count:  2Environment:    <none>Mounts:/var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-42h2q (ro)
Conditions:Type              StatusInitialized       True Ready             False ContainersReady   False PodScheduled      True
Volumes:kube-api-access-42h2q:Type:                    Projected (a volume that contains injected data from multiple sources)TokenExpirationSeconds:  3607ConfigMapName:           kube-root-ca.crtConfigMapOptional:       <nil>DownwardAPI:             true
QoS Class:                   BestEffort
Node-Selectors:              <none>
Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300snode.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:Type     Reason     Age                From               Message----     ------     ----               ----               -------Normal   Scheduled  46s                default-scheduler  Successfully assigned pod/pod1 to k8scloude2Normal   Pulled     46s                kubelet            Container image "nginx" already present on machineNormal   Created    46s                kubelet            Created container n1Normal   Started    46s                kubelet            Started container n1Normal   Pulled     13s (x3 over 46s)  kubelet            Container image "nginx" already present on machineNormal   Created    13s (x3 over 46s)  kubelet            Created container n2Normal   Started    13s (x3 over 46s)  kubelet            Started container n2Warning  BackOff    3s (x2 over 24s)   kubelet            Back-off restarting failed container

查看pod里的n1容器的/tmp目录

#当一个pod里有两个容器,怎么查看:kubectl exec -it podname -c 容器名 -- 命令
[root@k8scloude1 pod]# kubectl exec -it pod1 -c n1 -- ls /tmp

查看pod里的n2容器的/tmp目录

[root@k8scloude1 pod]# kubectl exec -it pod1 -c n2 -- ls /tmp

进入pod1里的n1容器

[root@k8scloude1 pod]# kubectl exec -it pod1 -c n1 -- bash
root@pod1:/# which nginx
/usr/sbin/nginx
root@pod1:/# exit
exit

查看pod1里的n1容器日志

[root@k8scloude1 pod]# kubectl logs pod1 -c n1
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
2022/01/12 13:53:06 [notice] 1#1: using the "epoll" event method
2022/01/12 13:53:06 [notice] 1#1: nginx/1.21.5
2022/01/12 13:53:06 [notice] 1#1: built by gcc 10.2.1 20210110 (Debian 10.2.1-6)
2022/01/12 13:53:06 [notice] 1#1: OS: Linux 3.10.0-693.el7.x86_64
2022/01/12 13:53:06 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576
2022/01/12 13:53:06 [notice] 1#1: start worker processes
2022/01/12 13:53:06 [notice] 1#1: start worker process 32
2022/01/12 13:53:06 [notice] 1#1: start worker process 33

编辑pod: kubectl edit pod podname

[root@k8scloude1 pod]# kubectl edit pod nginx
Edit cancelled, no changes made.

容器里运行命令的一种写法是使用command

[root@k8scloude1 pod]# vim pod2.yaml [root@k8scloude1 pod]# cat pod2.yaml
apiVersion: v1
kind: Pod
metadata:creationTimestamp: nulllabels:run: pod1name: pod1
spec:containers:- image: nginximagePullPolicy: IfNotPresentname: n1resources: {}- image: nginximagePullPolicy: IfNotPresentcommand: ["sh","-c","sleep 10"]name: n2resources: {}dnsPolicy: ClusterFirstrestartPolicy: Always
status: {}

容器里运行命令的另一种写法是使用args

[root@k8scloude1 pod]# kubectl run podtest --image=nginx --dry-run=client -o yaml -- sh -c sleep 100
apiVersion: v1
kind: Pod
metadata:creationTimestamp: nulllabels:run: podtestname: podtest
spec:containers:- args:- sh- -c- sleep- "100"image: nginxname: podtestresources: {}dnsPolicy: ClusterFirstrestartPolicy: Always
status: {}

致力于一条龙式的为您解决问题

转载至https://www.cnblogs.com/renshengdezheli/p/16707021.html

pod(三):pod的管理相关推荐

  1. 深入kubernetes之Pod——一pod多容器

    六.深入Pod--一pod多容器 一pod多容器,可以说是kube精华所在,让多个同应用的单一容器可以整合到一个类虚拟机中,使其所有容器共用一个vm的资源,提高耦合度,神来之笔,从而方便副本的复制,提 ...

  2. C++大法:举世闻名之BOOST大法精华浅析(三)内存管理库(小白piao分享)

    文章目录 三.内存管理库 3.1 smart_ptr 3.1.1 RAII机制 3.1.2 智能指针 3.1.3 scoped_ptr 3.1.4 scoped_array 3.1.5 shared_ ...

  3. 【K8s】什么是Pod?Pod的调度与控制器

    文章目录 一.Pod介绍 1.Pod结构 2.Pod的定义 二.Pod配置:spec.containers 1.基本配置 name和image 2.镜像拉取策略 imagePullpolicy 3.启 ...

  4. k8s创建pod - 启动pod的流程

    目录 知识点一:启动一个pod 1.使用命令启动一个nginx pod 1.1.访问刚才创建的pod的nginx服务 1.2.删除deployment 2.将pod里的服务发布出去 首先创建根据yam ...

  5. 《Linux内核设计与实现》读书笔记 第三章 进程管理

    第三章进程管理 进程是Unix操作系统抽象概念中最基本的一种.我们拥有操作系统就是为了运行用户程序,因此,进程管理就是所有操作系统的心脏所在. 3.1进程 概念: 进程:处于执行期的程序.但不仅局限于 ...

  6. Gradle for Android 第三篇( 依赖管理 )

    Gradle for Android 第三篇( 依赖管理 ) 依赖管理是Gradle最闪耀的地方,最好的情景是,你仅仅只需添加一行代码在你的build文件,Gradle会自动从远程仓库为你下载相关的j ...

  7. 操作系统第三章-内存管理

    写在前面:本文参考王道论坛的 操作系统考研复习指导单科书 下面的流程图很重要. 加入快表的基本分页 加入快表的二级页表!! 虚拟存储器:请求分页的流程图. 文章目录 第三章 内存管理 3.1 内存管理 ...

  8. 操作系统:第三章 内存管理2 - 详解虚拟内存,页面置换算法,页面分配策略

    本文已收录至 Github(MD-Notes),若博客中有图片打不开,可以来我的 Github 仓库:https://github.com/HanquanHq/MD-Notes,涵盖了互联网大厂面试必 ...

  9. 操作系统(三)内存管理

    操作系统(三)内存管理 一.程序执行过程 装入的三种方式 链接的三种方式 二.内存管理的概念 内存空间的分配与回收 连续分配管理方式 单一连续分配 固定分区分配 动态分区分配 首次适应算法 最佳适应算 ...

最新文章

  1. MATLAB读取文本文件----textread
  2. python实现画图哆啦A梦
  3. android studio配置java_android studio配置Javah 和ndk-build
  4. sql server 分页
  5. c语言将字符串按空格分割_字符串单词输入反向输出怎么搞?C语言又带着二维数组来了!...
  6. 机器学习概念 —— 样本距离矩阵
  7. Java基本数据类型总结(转)
  8. HTML5七夕情人节表白网页制作【蓝色3D动态相册】HTML+CSS+JavaScript 程序员表白3D相册代码 html生日快乐祝福网页制作
  9. Raisecom 交换机防止ARP欺骗攻击及防止多个DHCP服务器方法
  10. sql查询每科成绩最高的人和分数
  11. opencv与darknet在python2.7下报错问题
  12. texstudio设置暗黑主题
  13. 长尾关键词排名优化技巧
  14. 远程主机强迫关闭一个现有连接-=-解决办法
  15. 微信昵称乱码 mysql_微信昵称乱码及mysql编码格式设立(utf8mb4)_mysql
  16. win10无线网卡(该设备无法启动,代码10)
  17. Windows 10/11 官方下载工具 镜像制作U盘启动盘 快速安装
  18. 点成方案| 麦氏比浊仪用于微生物检验
  19. 我的世界服务器怎么发全部消息,我的世界服务器指令
  20. 2019年十大开源WEB应用防火墙点评

热门文章

  1. 【观察】与“懂行人”同行,共筑城市智能生命体
  2. 论文阅读 【CVPR-2022】 A ConvNet for the 2020s
  3. Postman使用教程详解
  4. 《5分钟商学院》4周年:写了100万字,我学到的3件事
  5. Unity 3D 屏幕适配全方面解析!
  6. 怎么设置自动提醒客户们的生日呢?
  7. particles超炫酷的粒子背景特效
  8. 【CV】第 3 章:使用 OpenCV 和 CNN 进行面部检测
  9. 创建Integration Services项目时,错误为0x8002801D 库没有注册
  10. C语言杂记 0x02