欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > 【Kubernetes】Kubernetes 如何进行容器编排和调度?如何使用 kubectl`创建和管理 Pod、Deployment、Service?

【Kubernetes】Kubernetes 如何进行容器编排和调度?如何使用 kubectl`创建和管理 Pod、Deployment、Service?

2025/3/18 13:55:59 来源:https://blog.csdn.net/m0_74282926/article/details/146327839  浏览:    关键词:【Kubernetes】Kubernetes 如何进行容器编排和调度?如何使用 kubectl`创建和管理 Pod、Deployment、Service?

容器编排和调度:

1. 集群架构

  • Master 节点:负责控制整个集群的状态,包括调度、控制和管理。
  • Node 节点:运行容器的工作节点,每个节点上有 Kubelet 代理管理 Pod 的生命周期。

2. 容器编排

Kubernetes 通过定义期望状态(Desired State)来管理容器,确保实际运行状态与期望状态保持一致。

  • Pod 控制器:如 Deployment、StatefulSet、DaemonSet 等,管理容器副本数量、滚动更新等。
  • 服务发现和负载均衡:通过 Service 资源进行服务暴露,并提供负载均衡功能。
  • 存储管理:支持持久卷(Persistent Volume)和存储类(Storage Class)管理持久化存储。

3. 调度器(Kube-Scheduler)

Kubernetes 调度器负责决定将 Pod 分配到哪个 Node 节点。调度器会考虑:

  • 资源请求(CPU、内存等)
  • 节点亲和性(Node Affinity)
  • 污点和容忍度(Taints and Tolerations)
  • Pod 反亲和性(Pod Anti-Affinity)
  • 节点健康状况

4. 自动扩缩

  • 水平自动扩展(HPA):根据 CPU 或内存使用情况自动扩展 Pod 数量。
  • 集群自动扩展(Cluster Autoscaler):自动增加或减少节点数量。
  • 垂直自动扩展(VPA):动态调整 Pod 的资源请求。

5. 健康检查和自愈

  • Liveness Probe:检测容器是否存活,出现故障时重启。
  • Readiness Probe:检测容器是否准备好接收流量。
  • 自动重启:节点或 Pod 故障时,Kubernetes 自动在健康节点上重新调度。

6. 网络与安全

  • 网络插件(CNI):如 Flannel、Calico 提供容器网络通信。
  • Network Policy:实现网络隔离和安全策略。
  • RBAC(基于角色的访问控制):确保权限管理和安全性。

通过 kubectl 命令行工具,创建和管理 Pod、Deployment 和 Service。

1. 创建 Pod

创建一个最小的 Pod YAML 文件 (如 pod-demo.yaml):

apiVersion: v1
kind: Pod
metadata:name: my-podlabels:app: my-app
spec:containers:- name: my-containerimage: nginxports:- containerPort: 80

创建 Pod

kubectl apply -f pod-demo.yaml

查看 Pod 状态

kubectl get pods

检查 Pod 详细信息

kubectl describe pod my-pod

2. 创建 Deployment

创建 Deployment YAML 文件 (如 deployment-demo.yaml):

apiVersion: apps/v1
kind: Deployment
metadata:name: my-deploymentlabels:app: my-app
spec:replicas: 3selector:matchLabels:app: my-apptemplate:metadata:labels:app: my-appspec:containers:- name: my-containerimage: nginxports:- containerPort: 80

创建 Deployment

kubectl apply -f deployment-demo.yaml

查看 Deployment 状态

kubectl get deployments

扩展或缩容副本数

kubectl scale deployment my-deployment --replicas=5

滚动更新镜像

kubectl set image deployment/my-deployment my-container=nginx:1.21

3. 创建 Service

创建 Service YAML 文件 (如 service-demo.yaml):

apiVersion: v1
kind: Service
metadata:name: my-service
spec:selector:app: my-appports:- protocol: TCPport: 80targetPort: 80type: ClusterIP

创建 Service

kubectl apply -f service-demo.yaml

查看 Service

kubectl get services

访问 Service

如果是 NodePort 类型,使用节点 IP 和端口访问;如果是 ClusterIP 类型,需要在集群内部访问。


4. 常用管理命令

  • 查看所有资源
kubectl get all
  • 删除资源
kubectl delete pod my-pod
kubectl delete deployment my-deployment
kubectl delete service my-service
  • 查看日志
kubectl logs -f my-pod
  • 进入容器内部
kubectl exec -it my-pod -- /bin/bash

https://github.com/0voice

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词