前言

在搭建k8s集群之前,我们需要先了解下kubectl的使用,以便在集群部署出现问题时进行检查和处理。命令和语法记不住没有关系,但是请记住主要的语法和命令以及帮助命令的使用。

在下一篇,我们将讲述使用Kubeadm来创建k8s集群。


目录

使用kubectl管理k8s集群

  • 概述
  • 语法
  • 主要命令(command)说明
  • 资源类型(TYPE)说明
  • 命令标准(flags)说明
  • 格式化输出

使用kubectl管理k8s集群

概述

Kubectl是一个命令行界面,用于运行针对Kubernetes集群的命令。Kubectl的配置文件在$HOME/.kube目录。我们可以通过设置KUBECONFIG环境变量或设置命令参数--kubeconfig来指定其他位置的kubeconfig文件。

语法

我们可以使用以下语法kubectl从终端窗口运行命令:

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

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

  • command:指定要在一个或多个资源进行的操作,例如create,get,describe,delete。例如“kubectl get cs”。
  • TYPE:指定资源类型。资源类型不区分大小写,可以指定单数,复数或缩写形式。例如,以下命令产生相同的输出:

kubectl get pod pod1

kubectl get pods pod1

kubectl get po pod1

  • NAME:指定资源的名称。名称区分大小写。如果省略名称,则显示所有资源的详细信息,如“kubectl get pods”。

在对多个资源执行操作时,我们可以按类型和名称指定每个资源,或指定一个或多个文件:

1)         要按类型和名称指定资源:

    • 如果资源类型相同,则对资源进行分组: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

2)    
要使用一个或多个文件指定资源: -f file1 -f file2 -f file<#>

    • 注意使用YAML而不是JSON,因为YAML往往更加用户友好,特别是对于配置文件。
      例:kubectl
      get pod -f ./pod.yaml
  • flags:指定的可选标志,不过值得注意的是,使用命令行指定参数会覆盖默认值以及相关的环境变量。例如,我们可以使用-s或--server标志来指定Kubernetes API服务器的地址和端口。

主要命令(command)说明

Kubectl的主体操作命令如下表所示:

操作

描述

annotate

添加或更新一个或多个资源的注释。

api-versions

列出可用的API版本。

apply

通过文件名或标准输入流(stdin)对资源进行配置,例如“kubectl apply --prune
-f manifest.yaml -l app=nginx”

attach

附加到一个正在运行的容器,以查看输出流或与容器(stdin)交互。

autoscale

自动缩放由Replication Controller管理的pod集。

cluster-info

显示有关群集中主服务器和服务的端点信息。

config

指定kubeconfig文件。

create

从文件或标准输入流(stdin)创建一个或多个资源。例如使用pod.json创建pod“kubectl create -f ./pod.json”。

delete

通过文件,标准输入、指定标签选择器,名称,资源选择器或资源来删除资源。例如删除所有的pod“kubectl delete pods
--all”。

describe

显示一个或多个资源的详细。例如查看pod“coredns-5c98db65d4-h5v9h”的详情“kubectl describe pod
coredns-5c98db65d4-h5v9h -n kube-system”,这里使用了“-n”指定了命名空间。

edit

在服务器上编辑一个资源。

exec

在Pod容器中执行命令。

explain

查看资源的文档。例如pod,节点,服务等。例如“kubectl explain pods”。

expose

将复制控制器,服务或pod公开为新的Kubernetes服务。

get

列出一个或多个资源。例如“kubectl get pods -n kube-system
-o wide”命令将列出“kube-system”命名空间下的所有pod并且以表格状输出pod的相关附加信息(节点名称)。

label

添加或更新一个或多个资源的标签。

logs

输出容器在pod中的日志。例如执行以下命令“kubectl logs
etcd-k8s-master -n kube-system”将在终端中输出该容器的日志。

patch

使用patch策略更新资源的字段。

port-forward

将一个或多个本地端口转发到pod。

proxy

运行代理指定到Kubernetes
API server。

replace

从文件或标准输入中替换资源。

rolling-update

通过逐步替换指定的Replication
Controller及其pod来执行滚动更新。

run

在群集上运行指定的映像。例如运行Nginx“kubectl run nginx
--image=nginx”。

scale

设置新的Deployment,
ReplicaSet, Replication Controller 或者 Job副本数量。例如“ubectl
scale --replicas=3 -f foo.yaml”。

version

显示客户端和服务器上运行的Kubernetes版本。

api-resources

输出服务端支持的所有的API资源类型。

api-versions

输出服务端支持的API版本。

更多命令,我们可以执行“kubectl help”来查看当前所有支持的命令,也可以访问官方地址“https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands”来查看所有的命令说明。在使用的过程中,如果我们不了解单个命令的具体语法,我们可以使用“kubectl <command> --help”来获取详细介绍,如:

kubectl scale --help

资源类型(TYPE)说明

我们可以使用“kubectl
api-resources”命令来获取服务端目前支持的所有的资源类型,如下图所示:

命令标准(flags)说明

同样的,我们可以使用命令“kubectl
options”来输出当前支持的所有可选标志:

其中,在前面我们说过,“-s”可以指定Kubernetes API 服务器地址,“-n”可以指定命名空间,“--kubeconfig”可以指定kubeconfig配置文件。主要的一些说明如下所示:

格式化输出

默认情况下,所有的kubectl命令默认输出格式是可读的纯文本格式。要以特定格式将详细信息输出到终端窗口,我们需要使用“-o”或多个“-output”标志。

语法:

kubectl [command] [TYPE] [NAME]
-o=<output_format>

支持的输出格式如下表所示:

输出格式

描述

-o=custom-columns=<spec>

输入指定的逗号分隔的列名列表来打印表格 。

-o=custom-columns-file=<filename>

使用文件中的自定义列模板来打印表。

-o=json

输出JSON格式的API对象。

-o=jsonpath=<template>

打印在jsonpath表达式中定义的字段

-o=jsonpath-file=<filename>

打印由文件中的jsonpath表达式定义的字段。

-o=name

仅打印资源名称。

-o=wide

以纯文本格式输出任何附加信息。对于pod,包括节点名称。

-o=yaml

输出YAML格式的API对象。

例如:

kubectl get pods -n kube-system -o wide

往期内容链接

Docker最全教程——从理论到实战(一)

Docker最全教程——从理论到实战(二)

Docker最全教程——从理论到实战(三)

Docker最全教程——从理论到实战(四)

Docker最全教程——从理论到实战(五)

Docker最全教程——从理论到实战(六)

Docker最全教程——从理论到实战(七)

Docker最全教程——从理论到实战(八)

Docker最全教程之使用Tencent Hub来完成CI(九)

Docker最全教程——数据库容器化(十)

Docker最全教程——数据库容器化之持久保存数据(十一)

Docker最全教程——MongoDB容器化(十二)

Docker最全教程——Redis容器化以及排行榜实战(十三)

Docker最全教程之Ubuntu下安装Docker(十四)

Docker最全教程之树莓派和Docker(十五)

Docker最全教程之使用TeamCity来完成内部CI、CD流程(十六)

Docker最全教程之使用Docker搭建Java开发环境(十七)

Docker最全教程之Go实战,墙裂推荐(十八)

Docker最全教程之使用.NET Core推送钉钉消息(十九)

Docker最全教程之使用 Visual Studio Code玩转Docker(二十)

Docker最全教程之Python爬网实战(二十一)

Docker最全教程之使用PHP搭建个人博客站点(二十二)

Docker最全教程之使用Node.js搭建团队技术文档站(二十三)

Docker最全教程之MySQL容器化 (二十四)

Docker+ Kubernetes已成为云计算的主流(二十五)

容器化之后如何节省云端成本?(二十六)

了解Kubernetes主体架构(二十七)

使用Minikube部署本地Kubernetes集群(二十八)

使用kubectl管理k8s集群(二十九)的更多相关文章

  1. 在node节点部署kubectl管理k8s集群

    感谢!原文链接:https://blog.csdn.net/sinat_35930259/article/details/79994078 kubectl是k8s的客户端程序,也是k8s的命令行工具, ...

  2. 使用kubeseal加密和管理k8s集群的secret

    使用kubeseal加密和管理k8s集群的secret 在k8s的管理过程中,像secret这种资源并不好维护,kubeseal提供了一种相对简单的方式来对原始secret资源进行加密,并通过控制器进 ...

  3. kubectl管理kubernetes集群

    [root@master ~]# kubectl get nodes  查看集群节点NAME      STATUS    AGEnode1     Ready     25mnode2     Re ...

  4. 基于 kubeadm 搭建高可用的kubernetes 1.18.2 (k8s)集群二 搭建高可用集群

    1. 部署keepalived - apiserver高可用(任选两个master节点) 1.1 安装keepalived # 在两个主节点上安装keepalived(一主一备) $ yum inst ...

  5. 使用kuboard界面管理k8s集群时使用ConfigMap挂载挂载到pod容器中,映射成一个文件夹

    将 ConfigMap 作为一个数据卷(在挂载时不指定数据卷内子路径,需要指定ConfigMap的子路径)挂载到容器,此时 ConfigMap 将映射成一个文件夹,每一个 KEY 是文件夹下的文件名, ...

  6. 使用Kubeadm创建k8s集群之部署规划(三十)

    前言 上一篇我们讲述了使用Kubectl管理k8s集群,那么接下来,我们将使用kubeadm来启动k8s集群. 部署k8s集群存在一定的挑战,尤其是部署高可用的k8s集群更是颇为复杂(后续会讲).因此 ...

  7. 使用Kubeadm创建k8s集群之节点部署(三十一)

    前言 本篇部署教程将讲述k8s集群的节点(master和工作节点)部署,请先按照上一篇教程完成节点的准备.本篇教程中的操作全部使用脚本完成,并且对于某些情况(比如镜像拉取问题)还提供了多种解决方案.不 ...

  8. k8s集群部分常见问题处理

    目录 部分常见问题处理 Coredns CrashLoopBackOff 导致无法成功添加工作节点的问题 添加工作节点时提示token过期 kubectl 执行命令报“The connection t ...

  9. K8s集群部署(二)------ Master节点部署

    Master节点要部署三个服务:API Server.Scheduler.Controller Manager. apiserver提供集群管理的REST API接口,包括认证授权.数据校验以 及集群 ...

随机推荐

  1. Win8Metro(C#)数字图像处理--2.26图像减法

    原文:Win8Metro(C#)数字图像处理--2.26图像减法  [函数名称] 图像减法函数SubtractionProcess(WriteableBitmap src, WriteableBi ...

  2. 【Linux】scp“免密” 远程copy较多文件

    一.linux脚本实现自动输入密码 使用Linux的程序员对输入密码这个举动一定不陌生,在Linux下对用户有严格的权限限制,干很多事情越过了权限就得输入密码,比如使用超级用户执行命令,又比如ftp. ...

  3. UWP入门(三) -- StackPanel与Grid的区别

    原文:UWP入门(三) -- StackPanel与Grid的区别 ##1.Grid 下布局 <Grid Background="{ThemeResource ApplicationP ...

  4. 配置QSslConfiguration让客户端程序跳过本地SSL验证

    大家下午好哦.今天我们在重新制作我们萌梦聊天室的时候,出现了这样的问题.那就是我们的客户端能够对qtdream.com服务器进行登录,但是不能对localhost服务器(也就是本机啦)进行登录.这究竟 ...

  5. Qt实现小功能之列表无限加载(创意很不错:监听滚动条事件,到底部的时候再new QListWidgetItem)

    概念介绍 无限加载与瀑布流的结合在Web前端开发中的效果非常新颖,对于网页内容具备较好的表现形式.无限加载并没有一次性将内容全部加载进来,而是通过监听滚动条事件来刷新内容的.当用户往下拖动滚动条或使用 ...

  6. hdu4767_Bell_矩阵快速幂+中国剩余定理

    2013长春赛区网络赛的1009题 比赛的时候这道题英勇的挂掉了,原因是写错了一个系数,有时候粗心比脑残更可怕 本题是关于Bell数,关于Bell数的详情请见维基:http://en.wikipedi ...

  7. http 报错码对应的错误原因

    转:http://blog.csdn.net/cutbug/article/details/4024818 1xx - 信息提示这些状态代码表示临时的响应.客户端在收到常规响应之前,应准备接收一个或多 ...

  8. SYN1618型 高精度天文时间同步系统

       SYN1618型 高精度天文时间同步系统 产品概述 SYN1618型 高精度天文时间同步系统是由西安同步电子科技有限公司精心设计.自行研发生产的一款高精度的时频频率标准设备,接收GPS.GLON ...

  9. ORACLE(emp)表习题与答案

    因为答案都是小编自己写的,解法可能有多种,如果您觉得我的解法有误,希望您有时间给我留言. 一.习题 (1) 查询20部门的所有员工信息. SELECT * FROM emp where deptno ...

  10. LVS-DR模式部署流程

    情景一 一.环境介绍 1)RIP.VIP.DIP为同一物理网络 2)LVS Hostname:lvs eth0:DIP-192.168.3.31 eth0:0:VIP-192.168.3.10 3)R ...