【云原生 | 从零开始学Kubernetes三、Kubernetes集群管理工具kubectl

2022年 9月 30日 26.7k 0

kubectl详解

  • 概述
    • 命令格式
    • 常见命令
      • kubectl help 获取更多信息
    • 基础命令
    • 部署命令
    • 集群管理命令
    • 故障和调试命令
      • 目前经常使用的命令
    • 演示
      • 创建一个namespace
      • 获取namespace
      • 在此namespace下创建并运行一个nginx的Pod
      • 查看新创建的pod
      • 删除指定的namespace
    • 资源管理方式
  • 写在最后

概述

kubectl是Kubernetes集群的命令行工具,通过kubectl能够对集群本身进行管理,并能够在集群上进行容器化应用的安装和部署。

命令格式

命令格式如下

kubectl [command] [type] [name] [flags]

参数

  • command:指定要对资源执行的操作,例如create、get、describe、delete
  • type:指定资源类型,资源类型是大小写敏感的,开发者能够以单数,复数,缩略的形式指定。
  • name:指定资源的名称,名称也是大小写敏感的,如果省略名称,则会显示所有的资源。
  • flags:指定额外的可选参数,比如可以用 -s 或者 -server参数指定Kubernetes API server的地址和端口

例如:

kubectl get pod pod1
kubectl get pods pod1
kubectl get po pod1
kubectl get pods

请添加图片描述

常见命令

kubectl help 获取更多信息

通过 help命令,能够获取帮助信息

# 获取kubectl的命令
kubectl --help

# 获取某个命令的介绍和使用
kubectl get --help

# 查看目前的状态
kubectl get cs

# 查看所有pod
kubectl get pod 

# 查看某个pod
kubectl get pod pod_name

# 查看某个pod,以yaml格式展示结果
kubectl get pod pod_name -o yaml

基础命令

常见的基础命令

命令 介绍
create 通过文件名或标准输入创建资源
expose 将一个资源暴露为一个新的Service
run 在集群中运行一个指定的镜像
set 在对象上设置特定的功能
get 显示一个或多个资源
explain 展示文档参考资料
edit 使用默认的编辑器编辑一个资源
delete 通过文件名,标准输入,资源名称或标签来删除资源
apply 通过文件名或标准输入对资源应用配置
patch 补丁修改、更新资源
replace 通过文件名或标准输入替换一个资源
convert 不同的API版本之间转换配置文件
label 更新资源上的标签
annotate 更新资源上的注释
completion 用于实现kubectl工具自动补全
api-versions 打印受支持的API版本
config 修改kubeconfig文件(用于访问API,比如配置认证信息)
help 所有命令帮助
plugin 运行一个命令行插件
version 打印客户端和服务版本信息

部署命令

命令 介绍
rollout 管理资源的发布
rolling-update 对给定的复制控制器滚动更新
scale 扩容或缩容Pod数量,Deployment、ReplicaSet、RC或Job
autoscale 创建一个自动选择扩容或缩容并设置Pod数量

集群管理命令

命令 介绍
certificate 修改证书资源
cluster-info 显示集群信息
top 显示资源(CPU/M)
cordon 标记节点不可调度
uncordon 标记节点可被调度
drain 驱逐节点上的应用,准备下线维护
taint 修改节点taint标记

故障和调试命令

命令 介绍
describe 显示特定资源或资源组的详细信息
logs 在一个Pod中打印一个容器日志,如果Pod只有一个容器,容器名称是可选的
attach 附加到一个运行的容器
exec 执行命令到容器
port-forward 转发一个或多个
proxy 运行一个proxy到Kubernetes API Server
cp 拷贝文件或目录到容器中
auth 检查授权

目前经常使用的命令

# 创建一个nginx镜像
kubectl create deployment nginx --image=nginx

# 对外暴露端口
kubectl expose deployment nginx --port=80 --type=NodePort

# 查看资源
kubectl get pod

# 查看详细信息ip,端口等。
kubectl get svc

演示

创建一个namespace

[root@k8smaster ~]# kubectl create namespace paopao
namespace/paopao created

获取namespace

[root@k8smaster ~]# kubectl get ns
NAME              STATUS   AGE
default           Active   7d23h
kube-node-lease   Active   7d23h
kube-public       Active   7d23h
kube-system       Active   7d23h
paopao            Active   22s

在此namespace下创建并运行一个nginx的Pod

[root@k8smaster ~]# kubectl run pod --image=nginx:latest -n paopao
pod/pod created

查看新创建的pod

[root@k8smaster ~]# kubectl get pod -n paopao
NAME   READY   STATUS    RESTARTS   AGE
pod    1/1     Running   0          3m14s

删除指定的namespace

[root@master ~]# kubectl delete ns dev
namespace "dev" deleted

创建/更新资源 使用声明式对象配置 kubectl apply -f XXX.yaml
删除资源 使用命令式对象配置 kubectl delete -f XXX.yaml
查询资源 使用命令式对象管理 kubectl get(describe) 资源名称

资源管理方式

命令式对象管理:直接使用命令去操作kubernetes资源,直接操作对象,适合测试用,比较简单,缺点是只能操作活动对象,无法审计跟踪。

kubectl run nginx-pod --image=nginx --port=80

命令式对象配置:通过命令配置和配置文件去操作kubernetes资源,直接操作文件,适合开发,可以审计以及跟踪,但是项目太大的话,配置文件多就会很多,操作麻烦。

kubectl create -f nginx-pod.yaml
kubectl patch -f nginx-pod.yaml

声明式对象配置:通过apply命令和配置文件去操作kubernetes资源,直接操作目录,适合开发,支持目录操作,但是不好调试。

kubectl apply -f nginx-pod.yaml

资源类型
kubernetes中所有的内容都抽象为资源,可以通过下面的命令进行查看:

kubectl api-resources

写在最后

创作不易,如果觉得内容对你有帮助,麻烦给个三连关注支持一下我!如果有错误,请在评论区指出,我会及时更改! 目前正在更新的系列:从零开始学k8s,从零开始学zabbix 感谢各位的观看,文章掺杂个人理解,如有错误请联系我指出~

相关文章

KubeSphere 部署向量数据库 Milvus 实战指南
探索 Kubernetes 持久化存储之 Longhorn 初窥门径
征服 Docker 镜像访问限制!KubeSphere v3.4.1 成功部署全攻略
那些年在 Terraform 上吃到的糖和踩过的坑
无需 Kubernetes 测试 Kubernetes 网络实现
Kubernetes v1.31 中的移除和主要变更

发布评论