kubernetes(K8S)集群架构详解

K8S架构图

这张是缩略图,本人原创图要边听歌边看:

K8S集群架构图https://www.processon.com/view/61aeba7be0b34d02d8b908b1?fromnew=1#pc

K8S介绍

kubernetes简称k8s,是谷歌开源的容器集群管理系统,用于自动部署、扩展和管理容器化(containerized)应用程序。

K8S提供哪些功能

  1. 服务发现与调度
  2. 负载均衡
  3. 服务自愈
  4. 服务弹性扩容

K8S特点

  • 可移植: 支持公有云,私有云,混合云
  • 可扩展: 模块化, 插件化, 可挂载, 可组合
  • 自动化: 自动部署,自动重启,自动复制,自动伸缩/扩展

K8S几个重要概念

Namespaces:命名空间,Kubernetes使用Namespaces隔离多个虚拟环境,比如:生产环境、预发环境、开发环境,又或者项目一、项目二、项目三,根据使用方式来自定义不同的环境来做资源 隔离。

如何创建一个Namespaces呢?

第一种,使用命令创建:

kubectl create namespace new-ns
#或者使用简写:
kubectl create ns new-ns

第二种,通过文件方式创建

vim my-ns.yaml

输入以下

apiVersion: v1
kind: Namespace
metadata:
  name: new-ns

运行命令

kubectl create -f ./my-ns.yaml

如何删除已经存在的Namespaces呢? 

kubectl delete namespaces new-ns
#或者使用简写:
kubectl delete ns new-ns

Pod:是Kubernetes创建或部署的最小/最简单的基本单位,一个Pod上可以跑一个或多个服务。

Deployment:控制器,为Replica Set(升级版的 Replication Controller)提供声明式更新。简单来说就是用它来控制Pod的创建、更新、删除。

编排文档参考:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
  namespace: new-ns
spec:
  serviceName: "nginx-service"
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: k8s.gcr.io/nginx:v1
        ports:
        - containerPort: 80

StatefulSet:也是控制器或有状态服务,不仅能管理Pod对象,还能确保这些Pod的顺序性和一致性。

编排文档参考:

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: nginx
  namespace: new-ns
spec:
  serviceName: "nginx-service"
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: k8s.gcr.io/nginx:v1
        ports:
        - containerPort: 80

Service:提供负载均衡的能力,有四种类型:ClusterIp,NodePort,LoadBalancer,ExternalName。

编排文档参考:

apiVersion: v1
kind: Service
metadata:
  name: nginx-svc
  namespace: new-ns
  labels:
    app: nginx-svc
spec:
  ports:
    - port: 80
      name: server
      targetPort: 80
  type: ClusterIP
  clusterIP: None
  selector:
    app: nginx

Ingress:相当于一个7层的负载均衡器,是k8s对反向代理的一个抽象。工作原理类似Nginx的反向代理。

编排文档参考:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nginx-ing
  namespace: new-ns

spec:
  rules:
  - host: xxx.xxx.com
    http:
      paths:
      - path: /
        backend:
          serviceName: nginx-svc
          servicePort: server

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Kubernetes(简称K8s)是一个开源的容器编排和管理工具,用于自动化部署、扩展和操作容器化应用程序。K8s的架构原理可以通过以下几个核心组件来详解。 1. Master节点:Master节点是K8s集群的控制中心,负责管理和控制整个集群的运行。其中包括以下几个组件: - API Server:作为控制和管理的入口,接收和处理用户和其他组件的请求。 - Scheduler:负责调度任务到合适的Node节点上运行。 - Controller Manager:监控集群状态,根据需求对集群进行自动化的维护和管理。 - etcd:分布式键值存储系统,用于保存集群中的元数据信息。 2. Node节点:Node节点是集群中的工作节点,负责运行应用程序容器。每个Node节点上包含以下几个组件: - Docker或其他容器运行时:用于管理和运行容器。 - Kubelet:与Master节点通信,接收和执行Master节点下发的指令,管理容器的生命周期。 - Kube-proxy:负责实现集群中的网络代理和负载均衡。 3. Pod:Pod是K8s的最小调度和部署单元,包含一个或多个紧密相关的容器。Pod中的容器共享同一个网络命名空间和存储卷,可以通过本地的localhost互相通信。 4. Service:Service是一种抽象,定义了一组Pod的访问规则。通过Service,可以提供稳定的访问入口,使得集群内的其他组件不需要关心具体的Pod的位置和IP地址。 除了这些核心组件,K8s还有其他一些重要的特性和功能,如命名空间、标签、配置管理、水平扩展、滚动更新等,这些功能进一步增强了K8s的弹性、可靠性和可管理性。 总结起来,K8s的架构原理可以归纳为Master-Node架构,通过Master节点对整个集群进行控制和管理,Node节点负责运行容器化应用程序,Pod作为最小的调度和部署单元,Service提供访问入口。这种设计使得K8s具备自动化、弹性、可伸缩和可靠的特点,广泛应用于云原生应用的部署和管理。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Echo^?

你的关注是我最大的创作动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值