文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
4.2 kubectl
kubectl 用于运行 Kubernetes 集群命令的管理工具。通过 kubectl 能够对集群本身进行管理,并能够在集群上进行容器化应用的安装部署。
kubectl 是用 go 实现的。
kubectl [command] [TYPE] [NAME] [flags]
comand:指定要对资源执行的操作,例如 create、get、describe 和 delete
TYPE:指定资源类型,资源类型是大小学敏感的,开发者能够以单数、复数和缩略的形式。例如:pod/pods/po
NAME: 指定资源的名称,名称也大小写敏感的。如果省略名称,则会显示所有的资源。
flags:指定可选的参数。例如,可以使用-s 或者–server 参数指定 Kubernetes API server 的地址和端口。
# 以下是 kubectl 支持命令
Basic Commands (Beginner):
create Create a resource from a file or from stdin.
expose 使用 replication controller, service, deployment 或者 pod 并暴露它作为一个新的 Kubernetes Service
run 在集群中运行一个指定的镜像
set 为 objects 设置一个指定的特征
Basic Commands (Intermediate):
explain 查看资源的文档
get 显示一个或更多 resources
edit 在服务器上编辑一个资源
delete Delete resources by filenames, stdin, resources and names, or by resources and label selector
Deploy Commands:
rollout Manage the rollout of a resource
scale 为 Deployment, ReplicaSet, Replication Controller 或者 Job 设置一个新的副本数量
autoscale 自动调整一个 Deployment, ReplicaSet, 或者 ReplicationController 的副本数量
Cluster Management Commands:
certificate 修改 certificate 资源.
cluster-info 显示集群信息
top Display Resource (CPU/Memory/Storage) usage.
cordon 标记 node 为 unschedulable
uncordon 标记 node 为 schedulable
drain Drain node in preparation for maintenance
taint 更新一个或者多个 node 上的 taints
Troubleshooting and Debugging Commands:
describe 显示一个指定 resource 或者 group 的 resources 详情
logs 输出容器在 pod 中的日志
attach Attach 到一个运行中的 container
exec 在一个 container 中执行一个命令
port-forward Forward one or more local ports to a pod
proxy 运行一个 proxy 到 Kubernetes API server
cp 复制 files 和 directories 到 containers 和从容器中复制 files 和 directories.
auth Inspect authorization
Advanced Commands:
apply 通过文件名或标准输入流(stdin) 对资源进行配置
patch 使用 strategic merge patch 更新一个资源的 field(s)
replace 通过 filename 或者 stdin 替换一个资源
wait Experimental: Wait for one condition on one or many resources
convert 在不同的 API versions 转换配置文件
Settings Commands:
label 更新在这个资源上的 labels
annotate 更新一个资源的注解
completion Output shell completion code for the specified shell (bash or zsh)
Other Commands:
alpha Commands for features in alpha
api-resources Print the supported API resources on the server
api-versions Print the supported API versions on the server, in the form of "group/version"
config 修改 kubeconfig 文件
plugin Runs a command-line plugin
version 输出 client 和 server 的版本信息
使用示例
# 查看集群整体情况: cluster-info, version, get nodes
% kubectl cluster-info
Kubernetes control plane is running at https://kubernetes.docker.internal:6443
CoreDNS is running at https://kubernetes.docker.internal:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
% kubectl version
Client Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.5", GitCommit:"5c99e2ac2ff9a3c549d9ca665e7bc05a3e18f07e", GitTreeState:"clean", BuildDate:"2021-12-16T08:38:33Z", GoVersion:"go1.16.12", Compiler:"gc", Platform:"darwin/arm64"}
Server Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.5", GitCommit:"5c99e2ac2ff9a3c549d9ca665e7bc05a3e18f07e", GitTreeState:"clean", BuildDate:"2021-12-16T08:32:32Z", GoVersion:"go1.16.12", Compiler:"gc", Platform:"linux/arm64"}
% kubectl get nodes
NAME STATUS ROLES AGE VERSION
docker-desktop Ready control-plane,master 16h v1.22.5
# 查看 namespace,后面步骤看资源加上 -n [namespace_name]
# 示例 namespace:kube-system 是 k8s 集群本身,kubernetes-dashboard 是 k8s 图形 UI
% kubectl get namespace --show-labels
NAME STATUS AGE LABELS
default Active 20h kubernetes.io/metadata.name=default
kube-node-lease Active 20h kubernetes.io/metadata.name=kube-node-lease
kube-public Active 20h kubernetes.io/metadata.name=kube-public
kube-system Active 20h kubernetes.io/metadata.name=kube-system
kubernetes-dashboard Active 19h kubernetes.io/metadata.name=kubernetes-dashboard
xxocr Active 20h kubernetes.io/metadata.name=xxocr,name=xxocr
# k8s 集群名字空间 kube-system 所属的 deploy, pod, service
% kubectl get deploy -n kube-system
NAME READY UP-TO-DATE AVAILABLE AGE
coredns 2/2 2 2 20h
# master 组件 etcd,apiserver,controller,scheduler; slaver 组件 proxy.
% kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE
coredns-78fcd69978-j8vdl 1/1 Running 0 20h
coredns-78fcd69978-tkxpn 1/1 Running 0 20h
etcd-docker-desktop 1/1 Running 0 20h
kube-apiserver-docker-desktop 1/1 Running 0 20h
kube-controller-manager-docker-desktop 1/1 Running 0 20h
kube-proxy-z5r9c 1/1 Running 0 20h
kube-scheduler-docker-desktop 1/1 Running 0 20h
storage-provisioner 1/1 Running 0 20h
vpnkit-controller 1/1 Running 12 (130m ago) 20h
% kubectl get svc -n kube-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP,9153/TCP 20h
#(可选)explain 查看命令如何配置,以及配置的层级关系,可以使用类似下面的方式查看 spec.template.spec 支持的参数
kubectl explain deploy.spec.template.spec
# describe 查看具体的 pod 报错信息, 在启动 kubectl create -f xxocr/deployment 之后使用
# 查看 xxocr 命名空间中的所有 pods(一定要加-n),
kubectl get pods -n xxocr
kubectl describe pod xxocr.detection-8488c79997-fzgv5we -n xxocr
# 查看其它资源: deployment, svc, rc
kubectl get deployment -n xxocr
kubectl get svc -n xxocr
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论