k8s之常用操作命令-csdn博客


本站和网页 https://blog.csdn.net/footless_bird/article/details/125798691 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

k8s之常用操作命令-CSDN博客
k8s之常用操作命令
最新推荐文章于 2024-03-08 18:39:21 发布
墨鸦_Cormorant
阅读量2.2w
收藏
340
点赞数
31
分类专栏:
# K8S 专栏
文章标签:
kubernetes
docker
运维
版权声明:本文为博主原创文章,遵循
CC 4.0 BY-SA
版权协议,转载请附上原文出处链接和本声明。
本文链接:
https://blog.csdn.net/footless_bird/article/details/125798691
版权
K8S 专栏
专栏收录该内容
4 篇文章
3 订阅
订阅专栏
参考:https://www.cnblogs.com/zhanglianghhh/p/13467038.html
​ https://www.jianshu.com/p/07455dbfd6bb
kubectl语法
kubectl
command
TYPE
NAME
flags
说明:
1、
:指定在一个或多个资源上要执行的操作。例如:create、get、describe、delete、apply等
2、
:指定资源类型(如:pod、node、services、deployments等)。资源类型大小写敏感,可以指定单数、复数或缩写形式。例如,以下命令生成相同的输出:
$ kubectl get pod
-n kubernetes-dashboard
$ kubectl get pods -n kubernetes-dashboard
$ kubectl get po
3、
:指定资源的名称。名称大小写敏感。
如果省略名称空间,则显示默认名称空间的资源的详细信息
或者提示:No resources found in default namespace.。
4、
:指定可选的
命令参数
。例如,可以使用 -s 或 --server标识来指定Kubernetes API服务器的地址和端口;-n指定名称空间等。
注意:你从命令行指定的flags将覆盖默认值和任何相应的环境变量。优先级最高。
5、在多个资源上执行操作时,可以通过类型 [TYPE] 和名称 [NAME] 指定每个资源,也可以指定一个或多个文件。
按类型和名称指定资源:
# 查看一个资源类型中的多个资源
root@k8s-master ~
# kubectl get pod -n kube-system coredns-6955765f44-c9zfh kube-proxy-28dwj
READY
STATUS
RESTARTS
AGE
coredns-6955765f44-c9zfh
/1
Running
6d7h
kube-proxy-28dwj
6d6h
# 查看多个资源类型
# kubectl get svc,node
CLUSTER-IP
EXTERNAL-IP
PORT
service/kubernetes
ClusterIP
10.96
.0.1
<
none
>
443
/TCP
45h
ROLES
VERSION
node/k8s-master
Ready
master
v1.17.4
node/k8s-node01
node/k8s-node02
使用一个或多个文件指定资源:-f file1 -f file2 -f file<#>
# 使用YAML而不是JSON,因为YAML更容易使用,特别是对于配置文件。
$ kubectl get pod -f pod.yaml
TYPE 资源及其缩写别名
下表包含常用的资源类型及其缩写别名的列表。
也可以在命令行通过kubectl api-resources得到。
资源名
简称
Namespaced
资源类
deployments
deploy
TRUE
Deployment
ingresses
ing
Ingress
namespaces
ns
FALSE
Namespace
nodes
no
Node
pods
po
Pod
replicasets
rs
ReplicaSet
replicationcontrollers
rc
ReplicationController
services
svc
Service
apiservices
APIService
bindings
Binding
certificatesigningrequests
csr
CertificateSigningRequest
clusterrolebindings
ClusterRoleBinding
clusterroles
ClusterRole
componentstatuses
cs
ComponentStatus
configmaps
cm
ConfigMap
controllerrevisions
ControllerRevision
cronjobs
cj
CronJob
csidrivers
CSIDriver
csinodes
CSINode
customresourcedefinitions
crd, crds
CustomResourceDefinition
daemonsets
ds
DaemonSet
endpoints
ep
Endpoints
endpointslices
EndpointSlice
events
ev
Event
horizontalpodautoscalers
hpa
HorizontalPodAutoscaler
jobs
Job
leases
Lease
limitranges
limits
LimitRange
localsubjectaccessreviews
LocalSubjectAccessReview
mutatingwebhookconfigurations
MutatingWebhookConfiguration
networkpolicies
netpol
NetworkPolicy
persistentvolumeclaims
pvc
PersistentVolumeClaim
persistentvolumes
pv
PersistentVolume
poddisruptionbudgets
pdb
PodDisruptionBudget
podsecuritypolicies
psp
PodSecurityPolicy
podtemplates
PodTemplate
priorityclasses
pc
PriorityClass
resourcequotas
quota
ResourceQuota
rolebindings
RoleBinding
roles
Role
runtimeclasses
RuntimeClass
secrets
Secret
selfsubjectaccessreviews
SelfSubjectAccessReview
selfsubjectrulesreviews
SelfSubjectRulesReview
serviceaccounts
sa
ServiceAccount
statefulsets
sts
StatefulSet
storageclasses
sc
StorageClass
subjectaccessreviews
SubjectAccessReview
tokenreviews
TokenReview
validatingwebhookconfigurations
ValidatingWebhookConfiguration
volumeattachments
VolumeAttachment
command 操作命令
常用操作参数分类
pod相关常用命令
# 查看pod列表
-o wide
-n NAMESPACE
-A
# -o wide :查看pod运行在哪个节点上以及ip地址信息
# -n NAMESPACE :指定命名空间
# --all-namespaces : 所有命名空间
# --include-uninitialized : 包括未初始化的
# 查看指定pod的信息
$ kubectl get pod POD
# 显示pod节点的标签信息
$ kubectl get pod --show-labels
# 根据指定标签匹配到具体的pod
$ kubectl get pod -l
app
=
example(标签键值对)
# 查看某pod的描述
$ kubectl describe pod POD
# 输出一个单容器pod POD的日志到标准输出
$ kubectl logs podName
# 持续输出一个单容器pod POD的日志到标准输出
$ kubectl logs -f podName
# 持续输出一个单容器pod POD的日志到标准输出,从最新100行开始
$ kubectl logs -f --tail
100
podName
# 指定时间段输出日志
$ kubectl logs podName --since
1h
# 指定时间戳输出日志
$ kubectl logs podName --since-time
2018
-11-01T15:00:00Z
# 查看运行pod的环境变量
$ kubectl
exec
env
# 扩容
$ kubectl scale deployment DEPLOYMENT --replicas
基础命令
create/apply:创建资源
根据文件或者输入来创建资源
# 格式:
$ kubectl create -f xxx.yaml
# 不建议使用,无法更新,必须先delete
# 创建Deployment和Service资源
$ kubectl create -f demo-deployment.yaml
$ kubectl create -f demo-service.yaml
# 创建+更新,可以重复使用
$ kubectl apply -f xxx.yaml
# 应用资源,该目录下的所有 .yaml, .yml, 或 .json 文件都会被使用
$ kubectl apply -f
directory
# 创建命名空间
$ kubectl create namespace test-demo
get:获得资源信息
# 查看默认命名空间中所有的资源信息(pod、service、deployment、replicaset)
$ kubectl get all
-n
命名空间名称
# 查看指定命令空间下面的pod/svc/deployment
$ kubectl get pod/svc/deployment
# -o wide:选项可以查看存在哪个对应的节点
# 查看所有namespace下面的pod/svc/deployment
$ kubectl get pod/svc/deployment --all-namespaces
$ kubectl get pod/svc/deployment -A
# 查看node节点列表
$ kubectl get
node
# 显示node节点的标签信息
--show-labels
# 查看服务的详细信息,显示了服务名称,类型,集群ip,端口,时间等信息
service
# 查看默认命名空间的服务
$ kubectl get svc
# 查看命名空间
$ kubectl get namespaces
$ kubectl get ns
# 查看目前所有的replica set,显示了所有的pod的副本数,以及他们的可用数量以及状态等信息
$ kubectl get rs
# 查看已经部署了的所有应用,可以看到容器,以及容器所用的镜像,标签等信息
$ kubectl get deployments
$ kubectl get deploy
delete:删除资源
# 根据yaml文件删除对应的资源,但是yaml文件并不会被删除,这样更加高效
$ kubectl delete -f demo-deployment.yaml
$ kubectl delete -f demo-service.yaml
# 根据deployment资源来进行删除,会同时删除deployment、pod和service资源
$ kubectl delete deployment DEPLOYMENT
# 根据label删除
$ kubectl delete pod -l
APP
# -l app=APP :使用标签(label),且标签内容为”app=APP“
# 强制立即删除某pod。注:无法删除对应的应用,因为存在deployment/rc之类的副本控制器,删除pod也会重新拉起来
$ kubectl delete pod POD --grace-period
--force
# --force :强制
# --grace-period=0 :延迟0秒。缺省未设定的情况下会等待30s
$ kubectl delete pod podName --now
# 删除所有pod
$ kubectl delete pods --all
run:创建并运行容器
在集群中创建并运行一个或多个容器
语法:
run NAME --image
image
--env
"key=value"
--port
port
--replicas
replicas
--dry-run
bool
--overrides
inline-json
--command
--
COMMAND
args
..
# 示例:运行一个名称为nginx,副本数为3,标签为app=example,镜像为nginx:1.10,端口为80的容器实例
$ kubectl run nginx --replicas
--labels
"app=example"
--image
nginx:1.10 --port
80
# 示例:运行一个名称为nginx,副本数为3,标签为app=example,镜像为nginx:1.10,端口为80的容器实例,并绑定到k8s-node1上
$ kubectl run nginx --image
nginx:1.10 --replicas
'{"apiVersion":"apps/v1","spec":{"template":{"spec":{"nodeSelector":{"kubernetes.io/hostname":"k8s-node1"}}}}}'
expose:创建service服务
创建一个service服务,并且暴露端口让外部可以访问
指定deployment、service、replica set、replication controller或pod,并使用该资源的选择器作为指定端口上新服务的选择器。deployment 或 replica set只有当其选择器可转换为service支持的选择器时,即当选择器仅包含matchLabels组件时才会作为暴露新的Service。
资源包括(不区分大小写):
pod(po),service(svc),replication controller(rc),deployment(deploy),replica set(rs)
kubectl expose
-f FILENAME
TYPE NAME
--protocol
TCP
UDP
--target-port
number-or-name
--name
name
--external-ip
external-ip-of-service
--type
type
# 示例:创建一个nginx服务并且暴露端口让外界可以访问
$ kubectl expose deployment nginx --port
88
NodePort --target-port
nginx-service
# --port :本地端口
# --target-port :容器端口
# 为RC的nginx创建service,并通过Service的80端口转发至容器的8000端口上
kubectl expose rc nginx --port
8000
# 由“nginx-controller.yaml”中指定的type和name标识的RC创建Service,并通过Service的80端口转发至容器的8000端口上
kubectl expose -f nginx-controller.yaml --port
set:修改应用的资源
配置应用的一些特定资源,也可以修改应用已有的资源
使用
kubectl set --help
查看,它的子命令,
,
resources
selector
serviceaccount
subject
# 语法:
--limits
LIMITS
&
--requests
REQUESTS
set resources
kubectl set resources 命令
:这个命令用于设置资源的一些范围限制。
资源对象中的
可以指定计算资源需求(CPU-单位m、内存-单位Mi),即使用的最小资源请求(Requests),限制(Limits)的最大资源需求,Pod将保证使用在设置的资源数量范围。
对于每个Pod资源,如果指定了 Limits(限制)值,并省略了 Requests(请求),则 Requests 默认为 Limits 的值。
可用资源对象包括(支持大小写):
replicationcontroller、deployment、daemonset、job、replicaset
示例:
# 将deployment的nginx容器cpu限制为“200m”,将内存设置为“512Mi”
set
resources deployment nginx -c
nginx --limits
cpu
200m,memory
512Mi
# 设置所有nginx容器中 Requests和Limits
resources deployment nginx --limits
512Mi --requests
100m,memory
256Mi
# 删除nginx中容器的计算资源值
,memory
set selector
kubectl set selector 命令
设置资源的 selector(选择器)。如果在调用"set selector"命令之前已经存在选择器,则新创建的选择器将覆盖原来的选择器。
selector 必须以字母或数字开头,最多包含63个字符,可使用:字母、数字、连字符" - " 、点".“和下划线” _ "。如果指定了–resource-version,则更新将使用此资源版本,否则将使用现有的资源版本。
注意:目前 selector 命令只能用于 Service 对象。
EXPRESSIONS
--resource-version
version
set image
kubectl set image 命令
:用于更新现有资源的容器镜像。
可用资源对象包括:
pod (po)、replicationcontroller (rc)、deployment (deploy)、daemonset (ds)、job、replicaset (rs)
CONTAINER_NAME_1
CONTAINER_IMAGE_1
CONTAINER_NAME_N
CONTAINER_IMAGE_N
# 将deployment中的nginx容器镜像设置为“nginx:1.9.1”
image deployment/nginx
busybox
nginx
nginx:1.9.1
# 所有deployment和rc的nginx容器镜像更新为“nginx:1.9.1”
image deployments,rc
nginx:1.9.1 --all
# 将daemonset abc的所有容器镜像更新为“nginx:1.9.1”
image daemonset abc *
# 从本地文件中更新nginx容器镜像
image -f path/to/file.yaml
nginx:1.9.1 --local -o yaml
explain:显示资源文档信息
$ kubectl explain rs
edit:编辑资源信息
# 编辑Deployment nginx的一些信息
$ kubectl edit deployment nginx
# 编辑service类型的nginx的一些信息
$ kubectl edit service/nginx
设置命令
label:更新资源上的标签
用于更新(增加、修改或删除)资源上的 label(标签)
label 必须以字母或数字开头,可以使用字母、数字、连字符、点和下划线,最长63个字符。
如果 --overwrite 为 true,则可以覆盖已有的label,否则尝试覆盖label将会报错。
如果指定了–resource-version,则更新将使用此资源版本,否则将使用现有的资源版本。
label
--overwrite
KEY_1
VAL_1
KEY_N
VAL_N
# 给名为foo的Pod添加label unhealthy=true
$ kubectl label pods POD名称
unhealthy
true
# 给名为foo的Pod修改label 为 'status' / value 'unhealthy',且覆盖现有的value
status
unhealthy --overwrite
# 给 namespace 中的所有 pod 添加 label
$ kubectl label pods --all
# 仅当resource-version=1时才更新 名为foo的Pod上的label
unhealthy --resource-version
# 删除名为“bar”的label 。(使用“ - ”减号相连)
$ kubectl label
NODE名称 bar-
annotate:更新注解信息
更新一个或多个资源的Annotations信息。也就是注解信息,可以方便的查看做了哪些操作。
Annotations由key/value组成。
Annotations的目的是存储辅助数据,特别是通过工具和系统扩展操作的数据。
如果–overwrite为true,现有的annotations可以被覆盖,否则试图覆盖annotations将会报错。
如果设置了–resource-version,则更新将使用此resource version,否则将使用原有的resource version
annotate
# 更新Pod“foo”,设置annotation “description”的value “my frontend”,如果同一个annotation多次设置,则只使用最后设置的value值
$ kubectl annotate pods foo
description
'my frontend'
# 更新Pod"foo",设置annotation“description”的value“my frontend running nginx”,覆盖现有的值
$ kubectl annotate --overwrite pods foo
'my frontend running nginx'
# 根据“pod.json”中的type和name更新pod的annotation
$ kubectl annotate -f pod.json
# 更新 namespace中的所有pod
$ kubectl annotate pods --all
# 只有当resource-version为1时,才更新pod 'foo'
# 通过删除名为“description”的annotations来更新pod 'foo'。
# 不需要 -overwrite flag。
$ kubectl annotate pods foo description-
completion:设置命令自动补全
用于设置 kubectl 命令自动补全
# 在 bash 中设置当前 shell 的自动补全,要先安装 bash-completion 包
source
kubectl completion
bash
# 在bash shell 中永久的添加自动补全
echo
"source <(kubectl completion bash)"
>>
~/.bashrc
# 在 zsh 中设置当前 shell 的自动补全
zsh
# 在您的 zsh shell 中永久的添加自动补全
"if [
$commands
[kubectl] ]; then source <(kubectl completion zsh); fi"
~/.zshrc
部署命令
rollout:管理资源
用于对资源进行管理
可用资源包括:deployments,daemonsets。
子命令:
history(查看历史版本)
pause(暂停资源)
resume(恢复暂停资源)
status(查看资源状态)
undo(回滚版本)
# 语法
kubectl rollout SUBCOMMAND
# 回滚到之前的deployment
$ kubectl rollout undo deployment DEPLOYMENT
# 查看daemonet的状态
$ kubectl rollout status daemonset NAME
# 查看历史版本
$ kubectl rollout
history
deployment DEPLOYMENT
rolling-update:滚动更新资源
执行指定ReplicationController的滚动更新。
该命令创建了一个新的RC, 然后一次更新一个pod方式逐步使用新的PodTemplate,最终实现Pod滚动更新,new-controller.json需要与之前RC在相同的namespace下。
rolling-update OLD_CONTROLLER_NAME
NEW_CONTROLLER_NAME
NEW_CONTAINER_IMAGE
-f NEW_CONTROLLER_SPEC
# 使用frontend-v2.json中的新RC数据更新frontend-v1的pod
$ kubectl rolling-update frontend-v1 -f frontend-v2.json
# 使用JSON数据更新frontend-v1的pod
cat
frontend-v2.json
kubectl rolling-update frontend-v1 -f -
# 基于 stdin 输入的 JSON 替换 pod
pod.json
kubectl replace -f -
# 更新frontend资源的镜像
$ kubectl rolling-update frontend --image
image:v2
# 更新frontend-v1资源名称为frontend-v2并更新镜像
$ kubectl rolling-update frontend-v1 frontend-v2 --image
# 退出已存在的进行中的滚动更新
$ kubectl rolling-update frontend-v1 frontend-v2 --rollback
scale:扩容或缩容(pod数)
扩容或缩容 Deployment、ReplicaSet、Replication Controller或 Job 中Pod数量
scale也可以指定多个前提条件,如:当前副本数量或 --resource-version ,进行伸缩比例设置前,系统会先验证前提条件是否成立。这个就是弹性伸缩策略。
kubectl scale
--current-replicas
count
COUNT
# 将名为foo中的pod副本数设置为3。
$ kubectl scale --replicas
rs/foo
kubectl scale deploy/nginx --replicas
30
# 将由“foo.yaml”配置文件中指定的资源对象和名称标识的Pod资源副本设为3
-f foo.yaml
# 如果当前副本数为2,则将其扩展至3。
$ kubectl scale --current-replicas
deployment/mysql
# 设置多个RC中Pod副本数量
rc/foo rc/bar rc/baz
autoscale:自动扩容或缩容
这个比scale更加强大,也是弹性伸缩策略 ,它是根据流量的多少来自动进行扩展或者缩容。
指定Deployment、ReplicaSet或ReplicationController,并创建已经定义好资源的自动伸缩器。使用自动伸缩器可以根据需要自动增加或减少系统中部署的pod数量。
kubectl autoscale
TYPE/NAME
--min
MINPODS
--max
MAXPODS
--cpu-percent
CPU
# 使用 Deployment “foo”设定,使用默认的自动伸缩策略,指定目标CPU使用率,使其Pod数量在2到10之间
$ kubectl autoscale deployment foo --min
10
# 使用RC“foo”设定,使其Pod的数量介于1和5之间,CPU使用率维持在80%
$ kubectl autoscale rc foo --max
集群管理命令:certificate,cluster-info,top,cordon,uncordon,drain,taint
### certificate命令:用于证书资源管理,授权等
# 当有node节点要向master请求,那么是需要master节点授权的
$ kubectl certificate approve node-csr-81F5uBehyEyLWco5qavBsxc1GzFcZk3aFM3XW5rT3mw node-csr-Ed0kbFhc_q7qx14H3QpqLIUs0uKo036O2SnFpIheM18
# 查看集群信息
$ kubectl cluster-info
# 将当前集群状态输出到 stdout
$ kubectl cluster-info dump
# 将当前集群状态输出到 /path/to/cluster-state
$ kubectl cluster-info dump --output-directory
/path/to/cluster-state
# 检测核心组件状态【如果你的集群运行不正常,这是一个很好的、进行第一次诊断检查的机会】
$ kubectl get componentstatuses
$ kubectl get cs
# 查看node/pod的资源使用情况。需要heapster 或metrics-server支持
top
node/pod -A
# 查看日志:
$ journalctl -u kubelet -f
# 设为不可调度状态:
$ kubectl cordon node1
# 解除不可调度状态
$ kubectl uncordon node1
# 将pod从NODE-1节点赶到其他节点:
$ kubectl drain NODE-1
### taint命令:用于给某个Node节点设置污点
# master运行pod
$ kubectl taint nodes master.k8s node-role.kubernetes.io/master-
# master不运行pod
$ kubectl taint nodes master.k8s node-role.kubernetes.io/master
:NoSchedule
# 查看kubelet进程启动参数
ps
-ef
grep
kubelet
集群故障排查和调试命令
describe:显示特定资源的详细信息
# 查看my-nginx pod的详细状态
$ kubectl describe po my-nginx
logs:打印日志
logs命令
:用于在一个pod中打印一个容器的日志,如果pod中只有一个容器,可以省略容器名
$ kubectl logs
-f
-p
POD
-c CONTAINER
参数选项:
-c, --container=“”:容器名。
-f, --follow[=false]:指定是否持续输出日志(实时日志)。
–interactive[=true]:如果为true,当需要时提示用户进行输入。默认为true。
–limit-bytes=0:输出日志的最大字节数。默认无限制。
-p, --previous[=false]:如果为true,输出pod中曾经运行过,但目前已终止的容器的日志。
–since=0:仅返回相对时间范围,如5s、2m或3h,之内的日志。默认返回所有日志。只能同时使用since和since-time中的一种。
–since-time=“”:仅返回指定时间(RFC3339格式)之后的日志。默认返回所有日志。只能同时使用since和since-time中的一种。
–tail=-1:要显示的最新的日志条数。默认为-1,显示所有的日志。
–timestamps[=false]:在日志中包含时间戳。
# 返回仅包含一个容器的pod nginx的日志快照
$ kubectl logs nginx
# 持续输出pod MyPod中的日志
$ kubectl logs -f MyPod
# 持续输出pod MyPod中的容器web-1的日志
$ kubectl logs -f MyPod -c web-1
# 仅输出pod nginx中最近的20条日志
$ kubectl logs --tail
20
# 输出pod nginx中最近一小时内产生的所有日志
$ kubectl logs --since
1h nginx
$ kubectl logs MyPod --since-time
# 返回pod MyPod中已经停止的容器web-1的日志快照
$ kubectl logs -p MyPod -c web-1
:进入容器进行交互
exec命令
:进入容器进行交互,在容器中执行命令
-- COMMAND
命令选项:
-c, --container
""
容器名。如果省略,则默认选择第一个 pod。
-p, --pod
Pod名。
-i, --stdin
false
将控制台输入发送到容器。
-t, --tty
将标准输入控制台作为容器的控制台输入。
参考实例:
# 在pod 123456-7890的容器ruby-container中运行“date”并获取输出
123456
-7890 -c ruby-container
date
# 默认在pod 123456-7890的第一个容器中运行“date”并获取输出
-7890 --
# 切换到终端模式,将控制台输入发送到pod 123456-7890的ruby-container的“bash”命令,并将其输出到控制台/
# 错误控制台的信息发送回客户端。
-7890 -c ruby-container -it --
-il
attach:连接到一个正在运行的容器
attach命令
:连接到一个正在运行的容器。
kubectl attach POD
-c, --container=“”: 容器名。如果省略,则默认选择第一个 pod。
-i, --stdin[=false]: 将控制台输入发送到容器。
-t, --tty[=false]: 将标准输入控制台作为容器的控制台输入。
# 获取正在运行中的pod 123456-7890的输出,默认连接到第一个容器
$ kubectl attach
-7890
# 获取pod 123456-7890中ruby-container的输出
# 切换到终端模式,将控制台输入发送到pod 123456-7890的ruby-container的“bash”命令,并将其输出到控制台
-7890 -c ruby-container -i -t
其他命令:api-servions,config,help,plugin,version
api-servions命令
:打印受支持的
api
版本信息
# 打印当前集群支持的api版本
$ kubectl api-versions
help命令
:用于查看命令帮助
# 显示全部的命令帮助提示
$ kubectl --help
# 具体的子命令帮助,例如
$ kubectl create --help
config 命令
:用于修改
kubeconfig
配置文件(用于访问api,例如配置认证信息)
设置
与哪个
Kubernetes
集群进行通信并修改配置信息。查看
使用 kubeconfig 跨集群授权访问
文档获取详情配置文件信息。
# 显示合并的 kubeconfig 配置
$ kubectl config view
# 查看配置的摘要(上下文、命名空间)
$ kubectl config get-contexts
# 同时使用多个 kubeconfig 文件并查看合并的配置
KUBECONFIG
=~
/.kube/config:~/.kube/kubconfig2 kubectl config view
# 获取 e2e 用户的密码
$ kubectl config view -o
jsonpath
'{.users[?(@.name == "e2e")].user.password}'
# 查看当前使用的上下文
$ kubectl config current-context
# 设置默认的上下文
$ kubectl config use-context 上下文名称
# 使用特定的用户名和命名空间新增一个上下文,并设置为默认的上下文。
$ kubectl config set-context 上下文名称
--user
cluster-admin
--namespace
NAMESPACE
&&
kubectl config use-context 上下文名称
# 更改当前上下文的命名空间
$ kubectl config set-context --current --namespace
$ kubectl config set-context
$(
kubectl config current-context
# 恢复到默认命名空间
# 删除指定的上下文
$ kubectl config delete-context CLUSTER
# 添加新的集群配置到 kubeconf 中,使用 basic auth 进行鉴权
$ kubectl config set-credentials kubeuser/foo.kubernetes.com --username
kubeuser --password
kubepassword
version 命令
:打印客户端和服务端版本信息
# 打印客户端和服务端版本信息
$ kubectl version
plugin 命令
:运行一个命令行插件
高级命令:apply,patch,replace,convert
apply命令
:通过文件名或者标准输入对资源应用配置
通过文件名或控制台输入,对资源进行配置。 如果资源不存在,将会新建一个。可以使用
JSON
或者
YAML
格式。
kubectl apply -f FILENAME
-f, --filename=[]:包含配置信息的文件名,目录名或者URL。
–include-extended-apis[=true]:如果为true,则通过调用API服务器来包含新API的定义。默认为true
-o, --output=“”:输出模式。"-o name"为快捷输出(资源/name).
–record[=false]:在资源注释中记录当前 kubectl 命令。
-R, --recursive[=false]:递归处理 -f, --filename 中使用的目录。当您希望管理组织在同一目录中的相关清单时很有用。
–schema-cache-dir=“~/.kube/schema”:非空则将API schema缓存为指定文件,默认缓存到’$HOME/.kube/schema’
–validate[=true]:如果为true,在发送到服务端前先使用schema来验证输入。
# 将pod.yaml中的配置应用到pod
$ kubectl apply -f ./pod.yaml
# 将控制台输入的Yaml配置应用到Pod
pod.yaml
kubectl apply -f -
patch命令
:使用补丁修改,更新资源的字段,也就是修改资源的部分内容
kubectl patch
-p PATCH
# 使用策略合并补丁部分更新节点
$ kubectl patch
k8s-node-1 -p
'{"spec":{"unschedulable":true}}'
# 更新一个容器的镜像;Spec.containers.name是必需的,因为它是一个合并键
$ kubectl patch pod valid-pod -p
'{"spec":{"containers":[{"name":"kubernetes-serve-hostname","image":"new image"}]}}'
replace命令
: 通过文件或者标准输入替换原有资源
kubectl replace -f FILENAME
# 使用pod.yaml中的数据替换一个pod
$ kubectl replace -f ./pod.yaml
# 根据传递到标准输入的YAML替换一个pod。
# 将单容器pod的镜像的版本(标记)更新为v4
$ kubectl get pod mypod -o yaml
sed
's/\(image: myimage\):.*$/\1:v4/'
# 强制替换、删除然后重新创建资源
$ kubectl replace --force -f ./pod.yaml
convert命令
:转换配置文件为不同的API版本,支持YAML和JSON格式。
该命令将配置文件名,目录或URL作为输入,并将其转换为指定的版本格式,如果目标版本未指定或不支持,则转换为最新版本。
默认输出将以YAML格式打印出来,可以使用- o选项改变输出格式。
kubectl convert -f FILENAME
# 将文件'pod.yaml'转换为最近版本并打印到标准输出
$ kubectl convert -f pod.yaml
# 将“pod.yaml”指定的资源的实时状态转换为最新版本,并以json格式打印到标准输出
$ kubectl convert -f pod.yaml --local -o yaml
# 将当前目录下的所有文件转换为最新版本,并将其全部创建
$ kubectl convert -f
kubectl create -f -
输出选项
格式化输出
所有kubectl命令的默认输出格式是人类可读的纯文本格式。
要将详细信息以特定的格式输出到终端窗口,可以将 -o 或 --output标识添加到受支持的kubectl命令中。
语法
-o
output_format
根据kubectl操作,支持以下输出格式:
输出格式
描述
-o custom-columns=
使用逗号分隔的自定义列列表打印表
-o custom-columns-file=
使用文件中的自定义列模板打印表
-o json
输出一个JSON格式的API对象
-o jsonpath=
打印jsonpath表达式中定义的字段
-o jsonpath-file=
通过文件打印jsonpath表达式定义的字段
-o name
只打印资源名,不打印其他任何内容
以纯文本格式输出,包含附加信息。对于pods,包含节点名
-o yaml
输出一个YAML格式的API对象
导出配置文件
# 导出proxy的配置为yaml文件
kubectl get ds -n kube-system -l k8s-app
kube-proxy -o yaml
kube-proxy-ds.yaml
# 导出kube-dns的deployment和services的配置为yaml文件
kubectl get deployment -n kube-system -l k8s-app
kube-dns -o yaml
kube-dns-dp.yaml
kubectl get services -n kube-system -l k8s-app
kube-dns-services.yaml
# 导出所有 configmap
kubectl get configmap -n kube-system -o wide -o yaml
configmap.yaml
优惠劵
关注
点赞
觉得还不错?
一键收藏
打赏
知道了
评论
复制链接
扫一扫
专栏目录
k8s
常用
命令.docx
08-26
Kubernets
命令实例
Kubenetes
命令梳理.docx
05-11
命令梳理,很全,适合初学者
参与评论
您还未登录,请先
登录
后发表或查看评论
命令大全
zouyang920的博客
03-08
4478
kubernets
的命令手册
最新发布
04-15
好多命令记不住
以及
的场景操作步骤
的命令手册在此记录
命令集合
12-22
命令集合,从各个地方收集汇总,可以在使用的时候查阅
命令,yaml配置-sicc的学习之路.md
K8S
命令
lydms的博客
06-28
3780
一个
集群主要是由控制节点(master)、**工作节点(node)**构成,每个节点上都会安装不同的组件。master:集群的控制平面,负责集群的决策
管理
)ApiServer: 资源操作的唯一入口,接收用户输入的命令,提供认证、授权、API注册和发现等机制Scheduler: 负责集群资源调度,按照预定的调度策略将Pod调度到相应的node节点上: 负责维护集群的状态,比如程序部署安排、故障检测、自动扩展、滚动更新等**Etcd **:负责存储集群中各种资源对象的信息。
m0_56137272的博客
01-18
3003
-基本命令
热门推荐
王子老师
11-16
2万+
我崇拜生命中的真诚,喜欢被岁月见证过的友情,感恩生命中的不离不弃的人。
kubectl命令
1、直接通过命令去操作
资源
kubectl是
集群的命令行工具。基本语法如下
kubectl [command] [type] [name] [flag]
command: 资源执行的操作,create get delete
type:指定资源类型 pod service deployment
name: 指定资源名称
flags: 额外可选参数
#查看所有pod
kubectl g.
方圆师兄
06-02
9605
创建资源
#创建pod
kubectl create deploy nginx --image=nginx
xx:shell,
命令精简
02-05
本工具为简化
shell,
命令使用 0.X版本使用python编写,需要运行环境支持py和需要sh脚本支持运行,以便解决运行环境依赖及保持单文件执行 1.X及以后版本将使用go语言编写 如需要自己编译,可...
【云原生】
集群命令行工具kubectl之应用部署命令详解
Lion_Long的博客
03-22
2938
由于deployment的滚动更新机制,如果在部署过程中使用了pause,将会导致一个部署中的pod版本不一致暂停 Deployment,然后再触发一个或多个更新,最后再继续(resume)该 Deployment。原因:如果单独配置pod,当集群升级时需要将当前节点上的所有pod排空,那么会产生问题,因为pod没有任何副本控制器在控制它,集群对他没有预期,当节点排空后,pod将不会被调度和重生。基于文件或标准输入,将新的配置已替换的方式应用到资源上。
的命令
呼噜娃
05-30
3990
下面是一些
K8s
)命令,以及它们的简要说明。这些命令可以帮助您管理和操作
集群中的资源。这些命令涵盖了
的常见功能和用例,可以帮助您管理和操作集群中的资源。您可以通过在命令后面添加--help选项来获取更多关于每个命令的详细帮助信息。。
拥有广泛的功能和命令集,可以根据不同的用例和场景进行深入。
命令大全-持续更新中(欢迎补充)
zhang2319的博客
06-12
8179
命令详解
qq_45328524的博客
07-13
5068
命令:
查看pod: kubectl get pod -n名称空间
进入容器: kubectl exec -it pod名字 -n名称空间 bash
查看类命令:
—— 获取节点和服务版本信息,并查看附加信息
kubectl get nodes -o wide
—— 获取pod信息,默认是default名称空间
kubectl get pod
—— 获取pod信息,默认是default名称空间,并查看附加信息【如:pod的IP及在哪个节点运行】
kubectl get pod -o wide
——
sujin的博客
09-16
1563
Deployment 用于管理无状态的持久化应用
Statefulset 控制器用于管理有状态的持久化应用,其与Deployment的不同之处在于StatefulSet 会为每个Pod 创建一个独有的持久性标识符,并会确保各Pod 之间的顺序性。
1、kubeadm init 用于集群的快速初始化,以及集群版本的升级和降级操作0
2、kubeadm join 用于将节点快速加入到指定集群中
3、kubeadm token 可于集群构建后管理用于加入集群时使用的认证令牌
4、kubeadm...
命令补全
)提供了一些命令行工具,如kubectl、kubeadm等。这些工具都支持命令补全,以提高使用效率。以下是一些使用
命令补全的方法:
1. 命令行自动补全
在终端中输入命令时,按下Tab键可以自动补全命令或参数。例如,在使用kubectl命令时,输入kubectl get po然后按下Tab键,会自动补全为kubectl get pods。
2. 手动启用命令补全
如果自动补全功能没有启用,可以手动启用。在bash终端中执行以下命令:
```
source <(kubectl completion bash)
执行这个命令后,就可以使用kubectl命令的自动补全功能了。
3. 持久化命令补全
如果希望每次打开新的终端时都启用命令补全功能,可以将上面的命令添加到bashrc文件或zshrc文件中,例如:
echo "source <(kubectl completion bash)" >> ~/.bashrc
这样,每次打开新的终端时就会自动启用命令补全功能。
4. kubeadm 命令补全
如果使用kubeadm命令来管理
集群,可以使用以下命令启用命令补全功能:
source <(kubeadm completion bash)
同样,可以将这个命令添加到bashrc文件或zshrc文件中,以便每次打开新的终端时都启用命令补全功能。
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
CSDN认证博客专家
CSDN认证企业博客
码龄5年
Java领域新星创作者
原创
1244
周排名
3934
总排名
73万+
访问
等级
8049
积分
3313
粉丝
3015
获赞
2309
4929
私信
热门文章
java调用外部程序(Runtime.getRuntime().exec)详解
31284
Linux脚本(shell)详解
28405
22796
java参数校验(@Validated、@Valid)使用详解
22679
JVM(Java虚拟机)详解(JVM 内存模型、堆、GC、直接内存、性能调优)
19796
分类专栏
前端
6篇
Python
17篇
Java技术栈
13篇
Spring全家桶
5篇
SpringCloud专栏
3篇
Java 持久层
Java基础
15篇
Java开发 / 轮子
1篇
Java知识点拓展
Java相关软件安装与环境配置
中间件
解决方案
2篇
数据库与SQL语言
Linux
7篇
4篇
docker 专栏
shell 脚本专栏
最新评论
JavaScript 入门指南(三)BOM 对象和 DOM 对象
打鱼又晒网:
高级!通过文章可以看出,博主很有耐心,技术文章不仅是对技术的坚守,更是对知识的热忱和热爱,感谢您的优质分享和坚持更文。期待着博主更加深入的剖析,为大家带来更多的技术好文。
小钟不想敲代码:
优质好文,博主的文章细节很到位,兼顾实用性和可操作性,感谢博主的分享,期待博主持续带来更多好文
入站请求负载均衡解决方案 LVS 的介绍
夜郎king:
通过 LVS 的负载均衡技术和 LINUX 操作系统可以实现一个高性能、高可用的 LINUX 服务器集群,它具有良好的可靠性、可扩展性和可操作性。
热爱编程的张同学:
博主的文章细节很到位,兼顾实用性和可操作性,感谢博主的分享,期待博主持续带来更多好文,同时也希望可以来我博客指导我一番!
游戏开发小Y:
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
最新文章
JavaScript 入门指南(二)JavaScript 的数据类型和 JSON 数据
JavaScript 入门指南(一)简介及基础语法
2024年
12篇
2023年
35篇
2022年
28篇
2021年
27篇
目录
被折叠的 
 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
添加红包
祝福语
请填写红包祝福语或标题
红包数量
红包个数最小为10个
红包总金额
红包金额最低5元
余额支付
当前余额
3.43
前往充值 >
需支付:
10.00
取消
确定
下一步
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝
规则
hope_wisdom
发出的红包
打赏作者
大家喜欢的话可以点个关注投币哟
¥1
¥2
¥4
¥6
¥10
¥20
扫码支付:
获取中
扫码支付
您的余额不足,请更换扫码支付或
充值
实付
使用余额支付
点击重新获取
钱包余额
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。
余额充值