kubectl 命令行

1. kubectl 概述

kubectl是一个用于操作kubernetes集群的命令行接口,通过利用kubectl的各种命令可以实现各种功能。

命令 kubectl [flags] 解释
kubectl alpha alpha环境上命令属性
kubectl annotate 更新资源上注释
kubectl api-resources 在服务器上打印支持的 API 资源
kubectl api-versions 以 “group/version” 的形式在服务器上打印支持的 API 版本
kubectl apply 通过文件名或标准输入将配置添加给资源
kubectl attach 附加到正在运行的容器
kubectl auth 检查授权
kubectl autoscale 自动扩展 Deployment, ReplicaSet 或 ReplicationController
kubectl certificate 修改证书资源。
kubectl cluster-info 展示集群信息
kubectl completion 为给定的 shell 输出完成代码( bash 或 zsh)
kubectl config 修改 kubeconfig 配置文件
kubectl convert 在不同的 API 版本之间转换配置文件
kubectl cordon 将 node 节点标记为不可调度
kubectl cp 从容器复制文件和目录,也可将文件和目录复制到容器。
kubectl create 通过文件名或标准输入创建资源。
kubectl delete 通过文件名,标准输入,资源和名称或资源和标签选择器删除资源
kubectl describe 显示特定资源或资源组的详细信息
kubectl drain 为便于维护,需要提前驱逐node节点
kubectl edit 在服务器编辑资源
kubectl exec 容器内退出命令
kubectl explain 资源文档
kubectl expose 获取 replication controller, service, deployment 或 pod 资源,并作为新的 Kubernetes 服务暴露
kubectl get 展示一个或多个资源
kubectl label 升级资源标签
kubectl logs 为 pod 中的容器打印日志
kubectl options 打印所有命令继承的标识列表
kubectl patch 使用战略性合并补丁更新资源字段
kubectl plugin 运行命令行插件
kubectl port-forward 给 pod 开放一个或多个本地端口
kubectl proxy 为 Kubernetes API server 运行代理
kubectl replace 通过文件或标准输入替换资源
kubectl rollout 管理资源展示
kubectl run 在集群上运行指定镜像
kubectl scale 给 Deployment, ReplicaSet, Replication Controller 或 Job 设置新副本规模
kubectl set 给对象设置特定功能
kubectl taint 更新一个或多个 node 节点的污点信息
kubectl top 展示资源 (CPU/Memory/Storage) 使用信息。
kubectl uncordon 标记 node 节点为可调度
kubectl version 打印客户端和服务端版本信息
kubectl wait 试验: 在一个或多个资源上等待条件完成

2. 命令表

# kubectl命令列表

kubectl run(创建容器镜像)
kubectl expose(将资源暴露为新的 Service
kubectl annotate(更新资源的Annotations信息)
kubectl autoscalePod水平自动伸缩)
kubectl convert(转换配置文件为不同的API版本)

kubectl create(创建一个集群资源对象
kubectl create clusterrole(创建ClusterRole
kubectl create clusterrolebinding(为特定的ClusterRole创建ClusterRoleBinding
kubectl create configmap(创建configmap
kubectl create deployment(创建deployment
kubectl create namespace(创建namespace
kubectl create poddisruptionbudget(创建poddisruptionbudget
kubectl create quota(创建resourcequota
kubectl create role(创建role
kubectl create rolebinding(为特定RoleClusterRole创建RoleBinding

kubectl create service(使用指定的子命令创建 Service服务)
kubectl create service clusterip
kubectl create service externalname
kubectl create service loadbalancer
kubectl create service nodeport
kubectl create serviceaccount

kubectl create secret(使用指定的子命令创建 secret
kubectl create secret tls
kubectl create secret generic
kubectl create secret docker-registry

kubectl delete(删除资源对象)


kubectl delete namespace NAMESPACENAME --force --grace-period=0


kubectl edit(编辑服务器上定义的资源对象)
kubectl get(获取资源信息)
kubectl label(更新资源对象的label
kubectl patch(使用patch更新资源对象字段)
kubectl replace(替换资源对象)
kubectl rolling-update(使用RC进行滚动更新)
kubectl scale(扩缩Pod数量)

kubectl rollout(对资源对象进行管理)
kubectl rollout history(查看历史版本)
kubectl rollout pause(标记资源对象为暂停状态)
kubectl rollout resume(恢复已暂停资源)
kubectl rollout status(查看资源状态)
kubectl rollout undo(回滚版本)

kubectl set(配置应用资源)
kubectl set resources(指定Pod的计算资源需求)
kubectl set selector(设置资源对象selector
kubectl set image(更新已有资源对象中的容器镜像)
kubectl set subject(更新RoleBinding / ClusterRoleBindingUserGroup  ServiceAccount

# 查看集群信息
kubectl cluster-info

2.1. 检查集群节点,及服务健康状态

# 检查集群节点
kubectl get node
>>>
NAME           STATUS    AGE
192.168.10.8   Ready     22h
192.168.10.9   Ready     21h

# 各组件服务健康状态
kubectl get cs
>>>
NAME                 STATUS    MESSAGE              ERROR
scheduler            Healthy   ok                   
controller-manager   Healthy   ok                   
etcd-0               Healthy   {"health": "true"} 

2.2. 查看配置

kubectl config view

2.3. 资源配置

通过文件名或控制台输入,对资源进行配置。

# 通过文件名或控制台输入,对资源进行配置。
kubectl apply -f FILENAME
# -f file 接受 json /yml格式的配置文件
  -f, --filename=[]: 包含配置信息的文件名,目录名或者URL
  -o, --output="": 输出格式,使用“-o name”来输出简短格式(资源类型/资源名)。
      --schema-cache-dir="/tmp/kubectl.schema": 如果不为空,将API schema缓存为指定文件,默认缓存到“/tmp/kubectl.schema”。
      --validate[=true]: 如果为true,在发送到服务端前先使用schema来验证输入。

应用配置文件 app1_config.yml 主要有4部分组成
1. apiVersion
2. kind
3. metadata
4. spec

# 1. api版本信息
apiVersion: v1
# 2. 表示资源类型
kind: Namespace
# 3. 应用元信息
metadata:
  name: k8s-example # 名字
  labels:
    app: k8s-example
    name: k8s-example
    project: k8s-example
# 4. 资源规范字段
spec:
  ports:
  - port: 6379
    targetPort: 6379
  selector:
    app: redis

2.4. 启动容器

kubectl run NAME --image=image [--env="key=value"] [--port=port] [--replicas=replicas]

如果你觉得这篇文章对你有帮助,不妨请我喝杯咖啡,鼓励我创造更多!