(三)K8S常见资源管理,命令

常见的资源

查看资源类型和命令

#查看资源
kubectl api-resources

#查看命令帮助
kubectl --help

资源类型介绍

  • Pod:Kubernetes 中最小的部署单元,代表了一个或多个容器的运行实例。
  • Deployment:用于部署 Pod 对象的控制器,支持自动扩缩容和滚动升级等功能。
  • Service:提供了对一组 Pod 的访问入口,支持负载均衡和服务发现等功能。
  • NameSpace:用于将 Kubernetes 集群中的资源划分为多个虚拟集群,以便进行管理和控制访问。
  • ConfigMap:用于保存应用程序的配置数据,支持挂载到 Pod 中的容器中。
  • Secret:用于保存敏感数据,例如密码和证书等,支持挂载到 Pod 中的容器中。
  • Ingress:对外暴露 HTTP 和 HTTPS 服务的访问入口,支持路由和负载均衡等功能。
  • PersistentVolume 和 PersistentVolumeClaim:用于管理 Kubernetes 集群中的持久化存储卷。

常见的 Kubernetes 资源管理命令:

  • 创建资源
kubectl create -f <filename>  # 通过文件创建资源
kubectl apply -f <filename>  # 通过文件创建资源
kubectl create deployment <name> --image=<image>  # 创建 deployment
kubectl create service <name> --tcp=<port>:<targetPort>  # 创建 service

kubectl create -f <filename> 和 kubectl apply -f <filename> 区别
create 命令会创建新的资源对象,如果同名的对象已经存在则会创建失败。
apply 命令会根据 YAML 或 JSON 文件中定义的资源配置信息,对已有的对象进行更新或创建,如果对象不存在则会自动创建新的对象。
因此,使用 create 命令创建资源对象时需要确保对象名称的唯一性,而使用 apply 命令则不需要考虑对象名称的唯一性问题。同时,apply 命令还具有检查资源状态的功能,可以检查资源是否已经处于所期望的状态,如果不是则进行相应的更新操作。
总的来说,create 命令适用于创建新的资源对象,而 apply 命令适用于对已有的资源对象进行更新或创建。

  • 获取资源
kubectl get <resource>  # 获取资源列表
kubectl describe <resource> <name>  # 查看资源详细信息
kubectl logs <pod>  # 查看 pod 日志
  • 修改资源
kubectl edit <resource> <name>  # 编辑资源配置
kubectl apply -f <filename>  # 应用更新后的配置文件
kubectl scale <resource> <name> --replicas=<num>  # 扩容或缩容 deployment
  • 删除资源
kubectl delete <resource> <name>  # 删除资源
kubectl delete pod --all  # 删除所有 pod
kubectl delete service --all  # 删除所有 service

删除pod,如果是靠deploy控制器创建的pod, 直接删除则会自动重新创建;
如果需要删除则直接删除depoly控制器即可,pod会被删除

  • 其他命令
kubectl exec -it <pod> -- /bin/bash  # 进入 pod 的 bash 环境
kubectl port-forward <pod> <localPort>:<podPort>  # 将本地端口映射到 pod 端口
kubectl rollout history <resource> <name>  # 查看 deployment 更新历史
kubectl get nodes -o wide  # 查看 node 的详细信息

Kubernetes 资源管理方式

Kubernetes 提供两种资源管理方式

  • 命令式管理:命令式管理是通过 kubectl 等工具向 Kubernetes API Server 发送命令来管理资源,操作方式类似于传统的命令行管理操作系统。

  • 声明式管理:声明式管理则是通过 YAML 或 JSON 文件来定义资源的状态,再通过 kubectl apply 等命令将定义好的文件应用到 Kubernetes 集群中。这种方式不仅可以更好地实现版本控制,还可以避免手动操作带来的人为错误。

以下是命令式创建资源的例子:

kubectl create deployment nginx --image=nginx:latest --replicas=3
#kubectl run 资源名称 --image=镜像名称 --port=端口号
kubectl run nignx-pod --image=nginx:1.23.0 --port=80

以下是声明式创建 Deployment 对象的例子:执行 kubectl apply/create -f 配置文件名称.yaml

yaml如下:

apiVersion: apps/v1 # API 版本
kind: Deployment # 资源类型
metadata: #元数据,包含资源名称等信息。
  name: nginx #部署的名称
spec: # 部署的规格
  replicas: 3 #副本数,这里为 3
  selector: #标签选择器,选择具有 app=nginx 标签的 Pod
    matchLabels:
      app: nginx
  template: #Pod 模板,定义了创建 Pod 的模板
    metadata: #元数据,包含 Pod 标签等信息
      labels: #Pod 的标签,这里为 app=nginx。
        app: nginx
    spec: #Pod 规格。
      containers: #容器列表,这里只有一个容器。
      - name: nginx #容器的名称,这里为 nginx。
        image: nginx:latest # 容器所使用的镜像,这里使用 nginx:latest。

以上配置定义了一个名为 nginx 的 Deployment 对象,使用 nginx:latest 镜像创建 3 个 Pod,并使用 app=nginx 标签进行 Pod 的选择和管理。

如何快速创建模板文件

kubectl create deployment nginx --image=nginx:1.23.0 -o yaml --dry-run=client > nginx.yaml

命令解析:这个命令的意思是使用 kubectl 命令创建一个名为 nginx 的 Deployment 对象,并且使用 nginx:1.23.0 镜像作为 Pod 模板的容器镜像。同时,使用 -o yaml 参数将创建的对象输出为 YAML 格式的文本,使用 --dry-run=client 参数表示不会真正创建对象,只是输出 YAML 文件到标准输出流。最后,将标准输出流中的 YAML 文件重定向到名为 nginx.yaml 的文件中保存。
这个命令可以用于生成 Deployment 对象的 YAML 模板文件,方便后续使用和修改。

# 查看nginx.yaml
cat nginx.yaml
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值