Kubernetes集群kubectl命令的常见使用方法

2024-04-18 00:32

本文主要是介绍Kubernetes集群kubectl命令的常见使用方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

简介:kubectl是一个命令行界面,用于运行针对Kubernetes群集的命令。
语法:
kubectl [command] [TYPE] [NAME] [flags]
command:指定您希望对一个或多个资源执行的操作,例如创建,获取,描述,删除。
TYPE:指定资源类型。 资源类型区分大小写,可以使用单数,复数或缩写形式。
NAME:指定资源的名称。 名称区分大小写。 如果省略名称,则会显示所有资源的详细信息,例如$ kubectl get pod。
flags:指定可选标志。 例如,可以使用-s或–server标志来指定Kubernetes API服务器的地址和端口。

1、显示Pod的更多信息

kubectl get pod <pod-name> -o wide

以yaml格式显示Pod的详细信息

kubectl get pod <pod-name> -o yaml

2、创建资源对象

根据yaml配置文件一次性创建service和rc

kubectl create -f my-service.yaml -f my-rc.yaml

根据目录下所有.yaml、.yml、.json文件的定义进行创建操作

kubectl create -f <directory>

3、查看资源对象

查看所有Pod列表

kubectl get pods

4、查看rc和service列表

kubectl get rc,service

5、描述资源对象

显示Node的详细信息

kubectl describe nodes <node-name>

显示Pod的详细信息

kubectl describe pods/<pod-name>

显示由RC管理的Pod的信息

kubectl describe pods <rc-name>

6、删除资源对象

基于Pod.yaml定义的名称删除Pod

kubectl delete -f pod.yaml

删除所有包含某个label的Pod和service

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

删除所有Pod

kubectl delete pods --all

7、执行容器的命令

执行Pod的data命令,默认是用Pod中的第一个容器执行

kubectl exec <pod-name> data

指定Pod中某个容器执行data命令

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

通过bash获得Pod中某个容器的TTY,相当于登录容器

kubectl exec -it <pod-name> -c <container-name> /bin/bash

8、使用一些复杂过滤条件查看特定的资源对象

#根据重启次数排序列出 pod

kubectl get pods --sort-by='.status.containerStatuses[0].restartCount'

#获取所有具有 app=cassandra 的 pod 中的 version 标签

kubectl get pods --selector=app=cassandra rc -o  jsonpath='{.items[*].metadata.labels.version}'

#获取所有节点的 ExternalIP

kubectl get nodes -o jsonpath='{.items[*].status.addresses[?(@.type=="ExternalIP")].address}'

#查看哪些节点已就绪

JSONPATH='{range .items[*]}{@.metadata.name}:{range @.status.conditions[*]}{@.type}={@.status};{end}{end}' && kubectl get nodes -o jsonpath="$JSONPATH" | grep "Ready=True"

9、Pod的扩容缩容、滚动升级以及更新资源配置

执行扩容缩容Pod的操作

kubectl scale rc redis --replicas=3

我们需要确认的是在rc配置文件中定义的replicas数量,当我们执行上述命令的结果大于replicas的数量时,则我们执行的命令相当于扩容操作,反之相反,可以理解为我们填写的数量是我们需要的Pod数量。需要注意的是,当我们需要进行永久性扩容时,不要忘记修改rc配置文件中的replicas数量。

Pod的滚动升级
执行滚动升级操作

kubectl rolling-update redis -f redis-rc.update.yaml

需要注意的是当我们执行rolling-update命令前需要准备好新的RC配置文件以及ConfigMap配置文件,RC配置文件中需要指定升级后需要使用的镜像名称,或者可以使用kubeclt rolling-update redis --image=redis-2.0直接指定镜像名称的方式直接升级。

#强制替换,删除后重新创建资源。会导致服务中断。

kubectl replace --force -f ./pod.json

#为 nginx RC 创建服务,启用本地 80 端口连接到容器上的 8000 端口
kubectl expose rc nginx --port=80 --target-port=8000

更新单容器 pod 的镜像版本(tag)到 v4

kubectl get pod mypod -o yaml | sed 's/image:myimageimage:myimage:.*$/\1:v4/' | kubectl replace -f - 
kubectl label pods my-pod new-label=awesome # 添加标签
kubectl annotate pods my-pod icon-url=http://goo.gl/XXBTWq # 添加注解
kubectl autoscale deployment foo --min=2 --max=10 # 自动扩展 deployment “foo”

10、查看容器的日志

查看容器输出到stdout的日志:
kubectl logs
跟踪查看容器的日志(tail -f):
kubectl logs -f -n -c

11、Kubectl context和配置

修改kubectl命令行工具默认使用的apiServer地址、集群CA和客户端证书:

[root@bogon ssl]# kubectl config set-cluster default-cluster --server=https://10.0.2.5:6443 --certificate-authority=/etc/kubernetes/ssl/ca.crt

Cluster “default-cluster” set.

[root@bogon ssl]# kubectl config set-credentials default-admin --certificate-authority=/etc/kubernetes/ssl/ca.crt --client-key=/etc/kubernetes/ssl/cs_client.key --client-certificate=/etc/kubernetes/ssl/cs_client.crt

User “default-admin” set.

[root@bogon ssl]# kubectl config set-context default-system --cluster=default-cluster --user=default-admin  在kubeconfig配置中添加一条名为default-system的上下文记录

Context “default-system” created.

[root@bogon ssl]# kubectl config use-context default-system     #设置默认上下文为default-system

Switched to context “default-system”.

[root@bogon ~]# kubectl config current-context   #查看当前的上下文

default-system
查看kubectl context配置信息:

 #kubectl config view   
clusters:
- cluster:certificate-authority: /etc/kubernetes/ssl/ca.crtserver: https://10.0.2.5:6443name: default-cluster
contexts:
- context:cluster: default-clusteruser: default-adminname: default-system
current-context: default-system
kind: Config
preferences: {}
users:
- name: default-adminuser:client-certificate: /etc/kubernetes/ssl/cs_client.crtclient-key: /etc/kubernetes/ssl/cs_client.key

显示当前的上下文:

[root@bogon ~]# kubectl config current-context

default-system

12、在线编辑资源

kubectl edit svc/mysql  #可以直接对各种资源对象进行在线编辑变更

13、节点和集群信息查询或调度方法

kubectl cordon my-node # 标记 my-node 不可调度
kubectl drain my-node # 清空 my-node 以待维护
kubectl uncordon my-node # 标记 my-node 可调度
kubectl top node my-node # 显示 my-node 的指标度量
kubectl cluster-info # 显示 master 和服务的地址
kubectl cluster-info dump # 将当前集群状态输出到 stdout
kubectl cluster-info dump --output-directory=/path/to/cluster-state # 将当前集群状态输出到 /path/to/cluster-state

#如果该键和影响的污点(taint)已存在,则使用指定的值替换

kubectl taint nodes foo dedicated=special-user:NoSchedule

14、资源类型列表

下表列出的是 kubernetes 中所有支持的类型和缩写的别名。

资源类型缩写别名
apiservices
certificatesigningrequestscsr
clusters
clusterrolebindings
clusterroles
componentstatusescs
configmapscm
controllerrevisions
cronjobs
customresourcedefinitioncrd
daemonsetsds
deploymentsdeploy
endpointsep
eventsev
horizontalpodautoscalershpa
ingressesing
jobs
limitrangeslimits
namespacesns
networkpoliciesnetpol
nodesno
persistentvolumeclaimspvc
persistentvolumespv
poddisruptionbudgetpdb
podpreset
podspo
podsecuritypoliciespsp
podtemplates
replicasetsrs
replicationcontrollersrc
resourcequotasquota
rolebindings
roles
secrets
serviceaccountssa
servicessvc
statefulsets
storageclasses

15、kubectl的格式化输出

要以特定的格式向终端窗口输出详细信息,可以在 kubectl 命令中添加 -o 或者 -output 标志。

输出格式描述
-o=custom-columns=使用逗号分隔的自定义列列表打印表格
-o=custom-columns-file=使用 文件中的自定义列模板打印表格
-o=json输出 JSON 格式的 API 对象
-o=jsonpath=打印 jsonpath 表达式中定义的字段
-o=jsonpath-file=打印由 文件中的 jsonpath 表达式定义的字段
-o=name仅打印资源名称
-o=wide以纯文本格式输出任何附加信息,对于 Pod ,包含节点名称
-o=yaml输出 YAML 格式的 API 对象

16、Kubectl 日志打印级别

使用 -v 或 --v 标志跟着一个整数来指定日志级别。

详细等级描述
–v=0总是对操作人员可见。
–v=1合理的默认日志级别,如果您不需要详细输出。
–v=2可能与系统的重大变化相关的,有关稳定状态的信息和重要的日志信息。这是对大多数系统推荐的日志级别。
–v=3有关更改的扩展信息。
–v=4调试级别详细输出。
–v=6显示请求的资源。
–v=7显示HTTP请求的header。
–v=8显示HTTP请求的内容。

参考:
https://kubernetes.io/docs/reference/kubectl/overview/
https://jimmysong.io/kubernetes-handbook/guide/kubectl-cheatsheet.html

这篇关于Kubernetes集群kubectl命令的常见使用方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/913294

相关文章

Java中流式并行操作parallelStream的原理和使用方法

《Java中流式并行操作parallelStream的原理和使用方法》本文详细介绍了Java中的并行流(parallelStream)的原理、正确使用方法以及在实际业务中的应用案例,并指出在使用并行流... 目录Java中流式并行操作parallelStream0. 问题的产生1. 什么是parallelS

MySQL数据库双机热备的配置方法详解

《MySQL数据库双机热备的配置方法详解》在企业级应用中,数据库的高可用性和数据的安全性是至关重要的,MySQL作为最流行的开源关系型数据库管理系统之一,提供了多种方式来实现高可用性,其中双机热备(M... 目录1. 环境准备1.1 安装mysql1.2 配置MySQL1.2.1 主服务器配置1.2.2 从

Linux join命令的使用及说明

《Linuxjoin命令的使用及说明》`join`命令用于在Linux中按字段将两个文件进行连接,类似于SQL的JOIN,它需要两个文件按用于匹配的字段排序,并且第一个文件的换行符必须是LF,`jo... 目录一. 基本语法二. 数据准备三. 指定文件的连接key四.-a输出指定文件的所有行五.-o指定输出

Linux jq命令的使用解读

《Linuxjq命令的使用解读》jq是一个强大的命令行工具,用于处理JSON数据,它可以用来查看、过滤、修改、格式化JSON数据,通过使用各种选项和过滤器,可以实现复杂的JSON处理任务... 目录一. 简介二. 选项2.1.2.2-c2.3-r2.4-R三. 字段提取3.1 普通字段3.2 数组字段四.

Linux kill正在执行的后台任务 kill进程组使用详解

《Linuxkill正在执行的后台任务kill进程组使用详解》文章介绍了两个脚本的功能和区别,以及执行这些脚本时遇到的进程管理问题,通过查看进程树、使用`kill`命令和`lsof`命令,分析了子... 目录零. 用到的命令一. 待执行的脚本二. 执行含子进程的脚本,并kill2.1 进程查看2.2 遇到的

详解SpringBoot+Ehcache使用示例

《详解SpringBoot+Ehcache使用示例》本文介绍了SpringBoot中配置Ehcache、自定义get/set方式,并实际使用缓存的过程,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录摘要概念内存与磁盘持久化存储:配置灵活性:编码示例引入依赖:配置ehcache.XML文件:配置

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三

k8s按需创建PV和使用PVC详解

《k8s按需创建PV和使用PVC详解》Kubernetes中,PV和PVC用于管理持久存储,StorageClass实现动态PV分配,PVC声明存储需求并绑定PV,通过kubectl验证状态,注意回收... 目录1.按需创建 PV(使用 StorageClass)创建 StorageClass2.创建 PV

Python版本信息获取方法详解与实战

《Python版本信息获取方法详解与实战》在Python开发中,获取Python版本号是调试、兼容性检查和版本控制的重要基础操作,本文详细介绍了如何使用sys和platform模块获取Python的主... 目录1. python版本号获取基础2. 使用sys模块获取版本信息2.1 sys模块概述2.1.1

Python实现字典转字符串的五种方法

《Python实现字典转字符串的五种方法》本文介绍了在Python中如何将字典数据结构转换为字符串格式的多种方法,首先可以通过内置的str()函数进行简单转换;其次利用ison.dumps()函数能够... 目录1、使用json模块的dumps方法:2、使用str方法:3、使用循环和字符串拼接:4、使用字符