(三)K8S常见资源管理,命令
Pod:Kubernetes 中最小的部署单元,代表了一个或多个容器的运行实例。Deployment:用于部署 Pod 对象的控制器,支持自动扩缩容和滚动升级等功能。Service:提供了对一组 Pod 的访问入口,支持负载均衡和服务发现等功能。NameSpace:用于将 Kubernetes 集群中的资源划分为多个虚拟集群,以便进行管理和控制访问。ConfigMap:用于保存应用程序的配置数据,
常见的资源
查看资源类型和命令
#查看资源
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)