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

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

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

相关推荐
张忠琳7 小时前
【kubernetes v1.21】(kubelet 1)Kubelet 核心架构与启动流程
云原生·架构·kubernetes·kubelet
宇明一不急8 小时前
k8s HPA storageclass configmap
云原生·容器·kubernetes
ZzzZZzzzZZZzzzz…10 小时前
Docker + K8s集群搭建实战:1 Master+2 Node,含Harbor私有仓库与软路由
docker·云原生·容器·kubernetes·容器编排·集群部署·cri-dockerd
xier_ran11 小时前
【infra之路】模块三:Kubernetes (下) — 阶段一毕业项目:在集群里跑 PyTorch 训练
pytorch·容器·kubernetes
Waay11 小时前
K8s新手实操|emptyDir卷超详细实战(附完整命令+核心理解)
云原生·容器·kubernetes
liux352812 小时前
K8s 核心接口:CNI、CSI、CRI、LB 一篇讲透
云原生·容器·kubernetes
Devin~Y12 小时前
从内容社区到AIGC客服:Spring Boot、Redis、Kafka、K8s、RAG的三轮大厂Java面试对话(附标准答案)
java·spring boot·redis·spring cloud·kafka·kubernetes·micrometer
IT策士13 小时前
第25篇 k8s之Deployment 基础:声明式管理与副本控制
云原生·容器·kubernetes
IT策士13 小时前
第 26 篇 k8s之Deployment 进阶:滚动更新、回滚与暂停
云原生·容器·kubernetes
张忠琳14 小时前
【kubernetes v1.21】(kubelet 2)容器运行时与CRI
云原生·架构·kubernetes·kubelet