kubernetes(K8S)集群架构详解

K8S架构图

kubernetes(K8S)集群架构详解_第1张图片

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

kubernetes(K8S)集群架构详解_第2张图片

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

你可能感兴趣的:(kubernetes(K8S),架构)