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

相关文章

详解Vue如何使用xlsx库导出Excel文件

《详解Vue如何使用xlsx库导出Excel文件》第三方库xlsx提供了强大的功能来处理Excel文件,它可以简化导出Excel文件这个过程,本文将为大家详细介绍一下它的具体使用,需要的小伙伴可以了解... 目录1. 安装依赖2. 创建vue组件3. 解释代码在Vue.js项目中导出Excel文件,使用第三

Kubernetes常用命令大全近期总结

《Kubernetes常用命令大全近期总结》Kubernetes是用于大规模部署和管理这些容器的开源软件-在希腊语中,这个词还有“舵手”或“飞行员”的意思,使用Kubernetes(有时被称为“... 目录前言Kubernetes 的工作原理为什么要使用 Kubernetes?Kubernetes常用命令总

Linux alias的三种使用场景方式

《Linuxalias的三种使用场景方式》文章介绍了Linux中`alias`命令的三种使用场景:临时别名、用户级别别名和系统级别别名,临时别名仅在当前终端有效,用户级别别名在当前用户下所有终端有效... 目录linux alias三种使用场景一次性适用于当前用户全局生效,所有用户都可调用删除总结Linux

Oracle查询优化之高效实现仅查询前10条记录的方法与实践

《Oracle查询优化之高效实现仅查询前10条记录的方法与实践》:本文主要介绍Oracle查询优化之高效实现仅查询前10条记录的相关资料,包括使用ROWNUM、ROW_NUMBER()函数、FET... 目录1. 使用 ROWNUM 查询2. 使用 ROW_NUMBER() 函数3. 使用 FETCH FI

java图像识别工具类(ImageRecognitionUtils)使用实例详解

《java图像识别工具类(ImageRecognitionUtils)使用实例详解》:本文主要介绍如何在Java中使用OpenCV进行图像识别,包括图像加载、预处理、分类、人脸检测和特征提取等步骤... 目录前言1. 图像识别的背景与作用2. 设计目标3. 项目依赖4. 设计与实现 ImageRecogni

Git中恢复已删除分支的几种方法

《Git中恢复已删除分支的几种方法》:本文主要介绍在Git中恢复已删除分支的几种方法,包括查找提交记录、恢复分支、推送恢复的分支等步骤,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录1. 恢复本地删除的分支场景方法2. 恢复远程删除的分支场景方法3. 恢复未推送的本地删除分支场景方法4. 恢复

Python将大量遥感数据的值缩放指定倍数的方法(推荐)

《Python将大量遥感数据的值缩放指定倍数的方法(推荐)》本文介绍基于Python中的gdal模块,批量读取大量多波段遥感影像文件,分别对各波段数据加以数值处理,并将所得处理后数据保存为新的遥感影像... 本文介绍基于python中的gdal模块,批量读取大量多波段遥感影像文件,分别对各波段数据加以数值处

python管理工具之conda安装部署及使用详解

《python管理工具之conda安装部署及使用详解》这篇文章详细介绍了如何安装和使用conda来管理Python环境,它涵盖了从安装部署、镜像源配置到具体的conda使用方法,包括创建、激活、安装包... 目录pytpshheraerUhon管理工具:conda部署+使用一、安装部署1、 下载2、 安装3

Mysql虚拟列的使用场景

《Mysql虚拟列的使用场景》MySQL虚拟列是一种在查询时动态生成的特殊列,它不占用存储空间,可以提高查询效率和数据处理便利性,本文给大家介绍Mysql虚拟列的相关知识,感兴趣的朋友一起看看吧... 目录1. 介绍mysql虚拟列1.1 定义和作用1.2 虚拟列与普通列的区别2. MySQL虚拟列的类型2

使用MongoDB进行数据存储的操作流程

《使用MongoDB进行数据存储的操作流程》在现代应用开发中,数据存储是一个至关重要的部分,随着数据量的增大和复杂性的增加,传统的关系型数据库有时难以应对高并发和大数据量的处理需求,MongoDB作为... 目录什么是MongoDB?MongoDB的优势使用MongoDB进行数据存储1. 安装MongoDB