首页 > 其他分享 >k8s02 - 集群操作基础命令(持续补充)

k8s02 - 集群操作基础命令(持续补充)

时间:2023-01-30 21:12:33浏览次数:32  
标签:容器 ctr 补充 containerd -- 集群 io docker k8s02

目录

基础操作命令

1、kubectl 命令

1.1 自动补全

在k8s 1.3版本之前,设置kubectl命令自动补全是通过以下的方式:
source ./contrib/completions/bash/kubectl
但是在k8s 1.3版本,源码contrib目录中已经没有了completions目录,无法再使用以上方式添加自动补全功能。

1.3版本后,kubectl添加了一个completions的命令, 该命令可用于自动补全

source <(kubectl completion bash)

具体步骤如下:

yum install -y bash-completion
source /usr/share/bash-completion/bash_completion
source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc

2、containerd 常用命令

在了解容器相关命令前,先看一张图,了解一下 docker/ctr/crictl 三者的关系:

  • 主要有以下区别

    • docker 底层使用的是 containerd, 但 docker 操作的是 containerd 下 moby 命名空间下的资源,只能操作容器,而不能操作 containerd 的镜像
    • ctr 是 containerd 自带工具,对接是 containerd 的 api,操作的是 containerd下 的 default 空间,并且镜像保存目录与docker 不通,ctr 也不能操作docker的镜像
    • crictl 是 k8s 提供的,操作的是 containerd下的 k8s.io 空间,其命名用法几乎与 docker 一致,甚至可以使用 alias docker=crictl 在系统中建立快捷命令
  • 万事不明, 先看帮助 -h

# ctr -h

# 以下是输出
NAME:
   ctr - 
        __
  _____/ /______
 / ___/ __/ ___/
/ /__/ /_/ /
\___/\__/_/

containerd CLI


USAGE:
   ctr [global options] command [command options] [arguments...]

VERSION:
   v1.6.14

DESCRIPTION:
   
ctr is an unsupported debug and administrative client for interacting
with the containerd daemon. Because it is unsupported, the commands,
options, and operations are not guaranteed to be backward compatible or
stable from release to release of the containerd project.

COMMANDS:
   plugins, plugin            provides information about containerd plugins
   version                    print the client and server versions
   containers, c, container   manage containers
   content                    manage content
   events, event              display containerd events
   images, image, i           manage images  # images,image,i 都可以用,是相同的意思,i是简写
   leases                     manage leases
   namespaces, namespace, ns  manage namespaces
   pprof                      provide golang pprof outputs for containerd
   run                        run a container
   snapshots, snapshot        manage snapshots
   tasks, t, task             manage tasks
   install                    install a new package
   oci                        OCI tools
   shim                       interact with a shim directly
   help, h                    Shows a list of commands or help for one command

GLOBAL OPTIONS:
   --debug                      enable debug output in logs
   --address value, -a value    address for containerd's GRPC server (default: "/run/containerd/containerd.sock") [$CONTAINERD_ADDRESS]
   --timeout value              total timeout for ctr commands (default: 0s)
   --connect-timeout value      timeout for connecting to containerd (default: 0s)
   --namespace value, -n value  namespace to use with commands (default: "default") [$CONTAINERD_NAMESPACE]
   --help, -h                   show help
   --version, -v                print the version

images,image, i 都可以用,三者是相同的含义,例如拉取镜像时,可以使用 ctr images pull <image>,也可以用ctr image pull <image>,日常经常使用ctr i pull <image>

序号 操作含义 命令 说明
1 拉取镜像 ctr i pull docker.io/library/redis:alpine 镜像需要输入完整的域名,不像docker会自动补全从 docker.io拉取,containerd并没有默认的仓库地址
2 列出镜像 ctr i ls, ctr imae list, ctr i list
3 列出命名空间 ctr ns ls 引申出一个问题,如果节点上同时安装了containerd和docker,他们的镜像是否能共享?默认是不能共享的,二者存贮镜像的位置不一样,containerd的镜像文件存贮在 /var/lib/containerd,而docker的镜像文件存贮在/var/lib/docker,docker改革为docker-ce后(理解为新版docker即可)默认会创建一个moby的命名空间,ctr -n moby i ls 可以尝试列出 moby空间下的镜像 ,看不到 docker 下载的镜像。实际上,docker镜像和containerd是通用的。
4 列出指定空间下的镜像 ctr -n k8s.io i ls
5 删除镜像 ctr -n k8s.io i rm docker.io/library/redis:alpine
6 镜像标记tag ctr -n k8s.io i tag rdocker.io/library/redis:alpine docker.io/library/redis:alpine_v1 ctr -n (namespace) tag (旧tag) (新tag),若新tag已存在,可用参数 --force强制覆盖
7 推送镜像 ctr -n k8s.io i push -k docker.io/library/redis:alpine_v1 -k:--skip-verify, -k skip SSL certificate validation
8 导出镜像 ctr -n k8s.io i export pause.tar k8s.gcr.io/pause:3.2
9 导入镜像 ctr -n k8s.io i import pause.tar
10 查看容器 ctr task ls
11 直接运行一个动态的容器1 ctr run -t -d docker.io/library/redis:alpine_v1 redis_v1 -d: 后台运行,当task执行后就进行下一步shell命令,如没有选项,则会等待用户输入,并定向到容器内
直接运行一个动态的容器2 ctr run -d --net-host docker.io/library/nginx:alpine nginx_v2 -d: 代表dameon,后台运行, --net-host: 代表容器的IP就是宿主机的IP(相当于docker里的host类型网络)
12 进入容器操作 ctr -n default task exec --exec-id $RANDOM -t redis_v1 sh $RANDOM 可以是常数,如 1
13 停止容器 ctr task kill redis_v1 使用kill命令停止容器中运行的进程,既为停止容器
14 暂停容器 ctr tasks pause redis_v1
15 恢复容器 ctr tasks resume redis_v1 只能恢复 PAUSE 状态的容器,不能恢复处于 STOPPED 的容器
16 删除容器 ctr tasks delete redis_v1
17 创建一个静态的容器 ctr c create docker.io/library/redis:alpine_v1 redis_v2 静态容器创建后处于非运行状态,可使用 ctr c ls 查看容器列表,使用ctr t ls 查看容器的状态,ctr t ls 不会列出静态容器
18 查看容器详细信息 ctr c info redis_v3
19 日志查看 containerd 作为k8s的容器运行时的情况下,容器日志的落盘由kubelet完成,保存到 /var/log/pods/$CONTAINER_NAME 目录下,同时在 var/log/containers 目录下建立软链接,指向日志文件
20 日志配置 kubelet参数中指定:--container-log-max-files=10,--container-log-max-size=200Mi

延伸1:docker run 运行的容器与 containerd 是什么关系?
当同一台主机同时安装了 docker 和 containerd 时,docker run 运行的容器处于docker自动创建的 moby 空间下,此时如果用 ctr -n moby task ls 查看 containerd 下的 task, 是能够看到 docker run 启动的容器的

延伸2:容器c与任务t的关系
容器可以是静态的,也可以是动态的;静态容器是指创建了容器,但容器中没有任务在运行,只是一个空壳子,是无状态的,静态容器可以用 ctr c ls查看;ctr t ls 只能看到有状态的容器,如STOPPED,RUNNING,PAUSE,看不到静态容器

3、crictl

crictl 可以直接查看 k8s 中的容器,由 k8s 提供,它使用的命名空间是 k8s.io,单conntainerd环境下,该命令无输出
crictl 的命令大部分与 docker 类似

序号 操作含义 命令 说明
1 crictl images 列出镜像
2 crictl ps 列出所有在运行的pod
3 crictl pods 列出所有pod

其余命令可以查看帮助

crictl -h 

# 以下为输出
NAME:
   crictl - client for CRI

USAGE:
   crictl [global options] command [command options] [arguments...]

VERSION:
   1.24.1

COMMANDS:
   attach              Attach to a running container
   create              Create a new container
   exec                Run a command in a running container
   version             Display runtime version information
   images, image, img  List images
   inspect             Display the status of one or more containers
   inspecti            Return the status of one or more images
   imagefsinfo         Return image filesystem info
   inspectp            Display the status of one or more pods
   logs                Fetch the logs of a container
   port-forward        Forward local port to a pod
   ps                  List containers
   pull                Pull an image from a registry
   run                 Run a new container inside a sandbox
   runp                Run a new pod
   rm                  Remove one or more containers
   rmi                 Remove one or more images
   rmp                 Remove one or more pods
   pods                List pods
   start               Start one or more created containers
   info                Display information of the container runtime
   stop                Stop one or more running containers
   stopp               Stop one or more running pods
   update              Update one or more running containers
   config              Get and set crictl client configuration options
   stats               List container(s) resource usage statistics
   statsp              List pod resource usage statistics
   completion          Output shell completion code
   help, h             Shows a list of commands or help for one command

GLOBAL OPTIONS:
   --config value, -c value            Location of the client config file. If not specified and the default does not exist, the program's directory is searched as well (default: "/etc/crictl.yaml") [$CRI_CONFIG_FILE]
   --debug, -D                         Enable debug mode (default: false)
   --image-endpoint value, -i value    Endpoint of CRI image manager service (default: uses 'runtime-endpoint' setting) [$IMAGE_SERVICE_ENDPOINT]
   --runtime-endpoint value, -r value  Endpoint of CRI container runtime service (default: uses in order the first successful one of [unix:///var/run/dockershim.sock unix:///run/containerd/containerd.sock unix:///run/crio/crio.sock unix:///var/run/cri-dockerd.sock]). Default is now deprecated and the endpoint should be set instead. [$CONTAINER_RUNTIME_ENDPOINT]
   --timeout value, -t value           Timeout of connecting to the server in seconds (e.g. 2s, 20s.). 0 or less is set to default (default: 2s)
   --help, -h                          show help (default: false)
   --version, -v                       print the version (default: false)

(未完待续)

标签:容器,ctr,补充,containerd,--,集群,io,docker,k8s02
From: https://www.cnblogs.com/unchch/p/17076322.html

相关文章

  • 第四章 k8s集群安装1.25.0版本
    k8s决定在1.20开始放弃Docker,并在1.21完全抛弃Docker的支持。引入containerd,它是Kubernetes容器运行时更好的选择,性能远优于docker,至于具体原因,请自行查找,废话不多......
  • drf前戏知识补充
    内容概要web应用模式api接口接口测试工具postman内容详细1web应用模式djangoweb框架,专门用来写web项目之前学的,写的bbs项目,图书管理系统,用的是,前后端混合开发......
  • zookeeper集群
    目录ZooKeeper是什么?Zookeeper的用途,使用场景zookeeper集群zookeeper集群角色zookeeper集群工作原理zookeeper集群选举的原理zookeeperwatcher机制客户端注册Watcher服......
  • k8s集群不可用:The connection to the server 192.168.117.161:6443 was refused -
    虚拟机非正常关机后,k8s集群不可用获取节点,报如下错,kubectlgetnode 查看env:env|grep-ikubernetes 查看docker状态:systemctlstatusdocker 查看kubelet状态:systemct......
  • chunjun同步两个带Kerberos认证的CDH集群数据
        最近在项目中遇到同步两个CDH数据文件的需求,调研了一圈,发现datax不支持两个cdh同时进行kerberos认证,因此切换到chunjun,chunjun在kerberos认证的配......
  • 启用ceph dashboard及并通过prometheus 监控ceph集群状态
      cephdashboard  Dashboard介绍  Cephdashboard是通过一个web界面,对已经运行的ceph集群进行状态查看及功能配置等功能,早期ceph使用的是第三方的dashboa......
  • Rancher 集群添加节点
    Rancher集群添加节点 1. 打开集群管理  2. 进入要添加节点的集群  3. 点击注册,并点选所需的集群角色,再左键单击注册命令,以复制注册命令。  4. 复......
  • 手把手教你搭建mongodb分片集群
    本章用的自己的电脑win10系统 因为工作上的环境也是win的 就没在虚拟机上玩 (ps:其实上面环境都大同小异)在MongoDB(版本6.xx)中,分片是指将collection分散存储到不同......
  • velero备份恢复k8s集群
    参考文档:https://blog.51cto.com/kaliarch/4919159https://blog.csdn.net/john1337/article/details/123335046一、什么是velero?Velero是一个云原生的灾难恢复和迁移......
  • 将Portiner部署到MicroK8s集群
    在MicroK8s的帮助下,你可以部署Portiner,从而使Kubernetes的管理变得容易多了。Portainer是一个强大的容器管理平台,不仅可以在Docker部署中使用,还可以在Kubernetes环境中使用......