k8s 资源管理方式

k8s中资源管理方式可以划分为下面的几种:命令式对象管理、命令式对象配置、声明式对象配置。

  • 命令式对象管理

命令式对象管理:直接使用命令的方式来操作k8s资源, 这种方式操作简单,但是无法审计和追踪。

kubectl run nginx-pod --image=nginx:1.17.1 --port=80
  • 命令式对象配置

通过命令和配置文件来操作k8s资源,这种方式可以审计和追踪,但是项目大的时候配置文件多,操作麻烦。

kubectl create/patch/delete -f nginx-pod.yaml
  • 声明式对象配置

通过apply命令和配置文件去操作k8s资源,这种方式操作简单,支持目录操作,但是意外的情况难以调试。

kubectl apply -f nginx-pod.yaml
kubectl 命令

基本语法

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

○ command:指定要对资源执行的操作,如:create、get 、delete 等。
○ type:指定资源的类型,如:deployment 、pod 、service 等。
○ name:指定资源的名称,名称大小写敏感。
○ flags:指定额外的可选参数。

namespace 操作相关
  1. 获取所有命名空间

kubectl get namespace(ns)

  1. 创建命名空间

kubectl create namespace(ns) hello

  1. 删除命名空间(默认命名空间无法删除)

kubectl delete namespace(ns) hello

  1. 使用配置文件的方式创建命名空间

kubectl apply -f hello.yaml

  1. 使用配置文件的方式删除命名空间

kubectl delete -f hello.yaml

hello.yaml

apiVersion: v1
kind: Namespace
metadata:
    name: hello
pod 操作相关
  1. 查看默认命名空间和指定命名空间的pod

kubectl get pod(pods) | kubectl get pod -n xxx

  1. 查看所有命名空间的pod

kubectl get pods --all-namespaces

  1. 创建pod

kubectl apply -f xxx.yaml

apiVersion: v1
kind: Pod
metadata:
  name: pod1
spec:
  containers:
  - name: nginx-pod
    image: nginx:latest
    imagePullPolicy: IfNotPresent
    ports:
    - name: nginxport
      containerPort: 80
  1. 删除pod

kubectl delete pods xxx -n yyy

  1. 查看指定pod 中的日志

kubectl logs -f pod名称 -n xxx

  1. 在pod内部执行命令

kubectl exec -it xxx – /bin/bash

service 操作相关

在k8s 集群中,pod 是应用程序的载体,我们可以通过pod 的ip来访问应用程序,但是pod的ip地址不是固定的,这就意味着不方便直接采用pod的ip来对服务进行访问,为了解决这个问题,k8s提供了service资源。service资源会提供对同一个服务的多个pod进行聚合,并且提供统一的入口地址,通过访问service的入口地址就能访问到后面的pod 服务。

  1. 创建service

kubectl expose --name=nginxsvc deploy nginx --port=80

  1. 查看service

kubectl get service -n xxx

  1. 删除service

kubectl delete service(svc) xxx - n yyy

  1. 修改service端口

kubectl edit svc/svc名称

service三种不同种类的type

ClusterIP: 默认分配一个集群内部可以访问的虚拟IP

NodePort: 在每个node上分配一个端口作为外部的访问入口

LoadBalancer: 与NodePort类似,在每个节点上启用一个端口来暴露服务,除此之外,K8S会请求底层云平台(aliyun, aws等)上负载均衡器,将每个Node([NodeIP]:[NodePort])作为后端添加进去.创建LoadBalancer类型的Service会自动创建和绑定外部LoadBalancer到节点映射的NodePort上。

ExternalName:通过返回带有该名称的 CNAME 记录,使用任意名称(由 spec 中的externalName指定)公开 Service 。不使用代理。这种类型需要 kube-dns 的 v1.7 或更高版本。

deployment 操作相关
  1. 查看deployment列表

kubectl get deployment -n xxx

  1. deployment自动伸缩

kubectl scale --replicas=3 deployment nginx

  1. 查看历史记录

kubectl rollout history deployment 应用部署名称

  1. 默认回滚到上一个版本

kubectl rollout undo deployment 应用部署名称

  1. 默认回滚到第一个版本

kubectl rollout undo deployment 应用部署名称 --to-revision=1

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
k8s资源管理有几种方式。一种方式是通过使用Namespace来进行资源的隔离和管理。k8s中的Namespace可以将集群内部的资源分配到不同的逻辑组中,以方便不同组的资源进行隔离使用和管理。通过授权机制,可以将不同的Namespace交给不同的租户进行管理,实现多租户的资源隔离。此外,结合资源配额机制,可以限定不同租户能够占用的资源,例如CPU使用量、内存使用量等,来管理租户可用资源。\[2\] 另一种方式是通过操作资源来管理k8s集群。在k8s中,所有内容都可以被抽象为资源,通过操作这些资源来管理集群。例如,可以使用Deployment资源类型来管理应用的部署和更新,使用Service资源类型来提供应用的网络访问,使用ReplicaSet资源类型来控制应用的副本数量,使用DaemonSet资源类型来在集群中的每个节点上运行一个Pod,使用Job资源对象来管理一次性任务的执行,使用CronJob资源类型来定期执行任务等等。通过操作这些资源,可以实现对k8s集群中各种服务和应用的管理和控制。\[1\]\[3\] #### 引用[.reference_title] - *1* [k8s资源类型详解](https://blog.csdn.net/weixin_47019016/article/details/111415831)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [k8s资源管理命令与Namespace使用详解](https://blog.csdn.net/zhangcongyi420/article/details/128379834)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值