返回介绍

4.2 kubectl

发布于 2024-09-23 22:52:23 字数 6328 浏览 0 评论 0 收藏 0

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文