K8s 命令行

前言:关于k8s 与 docker

Docker和Kubernetes(通常简称为K8s)是两个在容器化应用程序方面非常流行的开源工具。

Docker:

Docker 是一种轻量级的容器化平台,允许开发者将应用程序及其所有依赖项打包到一个称为容器的可移植容器中。每个容器都运行在宿主操作系统的独立进程中,具有自己的文件系统和网络空间。Docker 提供了一种标准化的方式,使应用程序能够在不同的环境中轻松部署和运行。Docker 镜像包含了应用程序的代码、运行时、系统工具、系统库等。

Kubernetes (K8s):

Kubernetes 是一个用于自动部署、扩展和管理容器化应用程序的开源容器编排工具。它提供了一种容器编排系统,可以自动化应用程序的部署、伸缩和管理。Kubernetes 允许用户定义容器的部署、配置和调度,确保它们在整个集群中以高效和可靠的方式运行。K8s 提供了强大的功能,如自动负载均衡、滚动更新、自动扩展等,使得在大规模容器化环境中管理应用变得更加容易。

关系与区别:

  1. 关系: Docker 可以用于创建、打包和分发容器,而 Kubernetes 用于在一个集群中管理这些容器的部署、伸缩和运维。

  2. 单机 vs. 集群: Docker 主要关注单个主机上的容器化,而 Kubernetes 更专注于在多个主机上协调和管理容器。

  3. 抽象层次: Docker 提供了一个容器运行时环境,而 Kubernetes 提供了容器编排和管理的整体解决方案。

  4. 自动化: Kubernetes 提供更高级别的自动化,例如自动负载均衡、自动扩展、滚动更新等功能,使得在生产环境中更容易管理大规模应用。

通常,组合使用 Docker 和 Kubernetes 可以提供一个完整的容器化解决方案,使开发者能够方便地开发、测试和部署应用程序,并在生产环境中有效地管理这些应用程序。


kubectl 常用命令集合

1. 语法规则

kubectl [command] [TYPE] [NAME] [flags]

其中 command 、 TYPE 、 NAME 和 flags 分别是:

  • command :指定要对一个或多个资源执行的操作,例如 create 、 get 、 describe 、 delete
  • TYPE :指定资源类型。资源类型不区分大小写,可以指定单数、复数或缩写形式。

例如,以下命 令输出相同的结果:
kubectl get pod pod1
kubectl get pods pod1
kubectl get po pod1

  • NAME :指定资源的名称。名称区分大小写。如果省略名称,则显示所有资源的详细信息 kubectl get pods 。
    在对多个资源执行操作时,您可以按类型和名称指定每个资源,或指定一个或多个文件:
    要按类型和名称指定资源:
    要对所有类型相同的资源进行分组,请执行以下操作:
    TYPE1 name1 name2 name<#> 。
    例子: kubectl get pod example - pod1 example - pod2
    分别指定多个资源类型:
    TYPE1/name1 TYPE1/name2 TYPE2/name3 TYPE<#>/name<#> 。
    例子: kubectl get pod/example - pod1 replicationcontroller/example - rc1
    用一个或多个文件指定资源: - f file1 - f file2 - f file<#>
    使用 YAML 而不是 JSON 因为 YAML 更容易使用,特别是用于配置文件时。
    例子: kubectl get pod - f ./pod.yaml

  • flags : 指定可选的参数。例如,可以使用 -s 或 -server 参数指定 Kubernetes API 服务器的地址和端口。

注意:
从命令行指定的参数会覆盖默认值和任何相应的环境变量。
如果您需要帮助,只需从终端窗口运行 kubectl help 即可。

1.1 get****命令

kubectl get - 列出一个或多个资源。

查看集群状态信息

kubectl cluster-info

查看集群状态

kubectl get cs

查看集群节点信息

kubectl get nodes

查看集群命名空间

kubectl get ns

查看指定命名空间的服务

kubectl get svc -n kube-system

以纯文本输出格式列出所有 pod 。

kubectl get pods

以纯文本输出格式列出所有 pod ,并包含附加信息 ( 如节点名 ) 。

kubectl get pods -o wide

以纯文本输出格式列出具有指定名称的副本控制器。提示:您可以使用别名 'rc' 缩短和替换

'replicationcontroller' 资源类型。
kubectl get replicationcontroller <rc-name>

以纯文本输出格式列出所有副本控制器和服务。

kubectl get rc,services

以纯文本输出格式列出所有守护程序集,包括未初始化的守护程序集。

kubectl get ds --include-uninitialized

列出在节点 server01 上运行的所有 pod

kubectl get pods --field-selector=spec.nodeName=server01

1.2 describe 命令

kubectl describe - 显示一个或多个资源的详细状态,默认情况下包括未初始化的资源。

显示名称为 <node-name> 的节点的详细信息。

kubectl describe nodes <node-name>

显示名为 <pod-name> 的 pod 的详细信息。

kubectl describe pods/<pod-name>

显示由名为 <rc-name> 的副本控制器管理的所有 pod 的详细信息。

记住:副本控制器创建的任何 pod 都以复制控制器的名称为前缀。

kubectl describe pods <rc-name>

描述所有的 pod ,不包括未初始化的 pod

kubectl describe pods --include-uninitialized=false
说明: kubectl get 命令通常用于检索同一资源类型的一个或多个资源。 它具有丰富的参数, 允许您使用 - o 或 -- output 参数自定义输出格式。您可以指定 - w 或 -- watch 参数以开始观察 特定对象的更新。 kubectl describe 命令更侧重于描述指定资源的许多相关方面。它可以调用 对 API 服务器 的多个 API 调用来为用户构建视图。 例如,该 kubectl describe node 命令不 仅检索有关节点的信息,还检索在其上运行的 pod 的摘要,为节点生成的事件等。

1.3 delete****命令

kubectl delete` - 从文件、 stdin 或指定标签选择器、名称、资源选择器或资源中删除资源。

使用 pod.yaml 文件中指定的类型和名称删除 pod 。

kubectl delete -f pod.yaml

删除标签名 = <label-name> 的所有 pod 和服务。

kubectl delete pods,services -l name=<label-name>

删除所有具有标签名称 = <label-name> 的 pod 和服务,包括未初始化的那些。

kubectl delete pods,services -l name=<label-name> --include-uninitialized

删除所有 pod ,包括未初始化的 pod 。

kubectl delete pods --all

1.4 进入容器命令

kubectl exec - 对 pod 中的容器执行命令。与 docker 的 exec 命令非常类似

从 pod <pod-name> 中获取运行 'date' 的输出。默认情况下,输出来自第一个容器。

kubectl exec <pod-name> date

运行输出 'date' 获取在容器的 <container-name> 中 pod <pod-name> 的输出。

kubectl exec <pod-name> -c <container-name> date

获取一个交互 TTY 并运行 /bin/bash <pod-name > 。默认情况下,输出来自第一个容器。

kubectl exec -ti <pod-name> /bin/bash

1.5 logs****命令

kubectl logs - 打印 Pod 中容器的日志。

从 pod 返回日志快照。

kubectl logs <pod-name>

从 pod <pod-name> 开始流式传输日志。这类似于 'tail -f' Linux 命令。

kubectl logs -f <pod-name>

1.6 格式化输出

将 pod 信息格式化输出到一个 yaml 文件
kubectl get pod web-pod-13je7 -o yaml

1.7 资源缩写汇总

2. namespace 命名空间

kubectl get namespace
查看所有命名空间的 pod 资源
kubectl get pod --all-namespaces
kubectl get pod -A
简写命令
kubectl get ns
default 用户创建的 pod 默认在此命名空间
kube-public 所有用户均可以访问,包括未认证用户
kube-node-lease kubernetes 集群节点租约状态 ,v1.13 加入
kube-system kubernetes 集群在使用

3.pod

Pod 是 kubernetes 集群能够调度的最小单元。 Pod 是容器的封装
查看 default 命名空间下的 pods
kubectl get pods
查看 kube-system 命名空间下的 pods
kubectl get pods -n kube-system
查看所有命名空间下的 pods
kubectl get pod --all-namespaces
kubectl get pod -A

3.

相关推荐
angushine3 分钟前
让Docker端口映射受Firewall管理而非iptables
运维·docker·容器
孔令飞1 小时前
Go:终于有了处理未定义字段的实用方案
人工智能·云原生·go
玄明Hanko1 小时前
Quarkus+Docker最全面完整教程:手把手搞定Java云原生
后端·docker·云原生
SimonLiu0092 小时前
清理HiNas(海纳斯) Docker日志并限制日志大小
java·docker·容器
高峰君主5 小时前
Docker容器持久化
docker·容器·eureka
能来帮帮蒟蒻吗5 小时前
Docker安装(Ubuntu22版)
笔记·学习·spring cloud·docker·容器
言之。9 小时前
别学了,打会王者吧
java·python·mysql·容器·spark·php·html5
秦始皇爱找茬12 小时前
docker部署Jenkins工具
docker·容器·jenkins
hoho不爱喝酒14 小时前
微服务Nacos组件的介绍、安装、使用
微服务·云原生·架构
樽酒ﻬق16 小时前
Kubernetes 常用运维命令整理
运维·容器·kubernetes