写点什么

kubernetes 常见架构图

作者:CTO技术共享
  • 2022 年 8 月 06 日
  • 本文字数:1409 字

    阅读完需:约 5 分钟

kubernetes 常见架构图

二、Openshift or Kubernetes 集群架构图

三、常见的 CI/CD 架构图

1、Gitlab Webhook + Jenkins SharedLibraries/Kubernetes + SonarScanner Maven Plugin

2、Gitlab CI/CD Workflow

3、Logging

4、Logging 与 Metrics


K8S 介绍


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


服务发现与调度负载均衡服务自愈服务弹性扩容
复制代码


K8S 特点


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


K8S 几个重要概念


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


如何创建一个 Namespaces 呢?


第一种,使用命令创建:


kubectl create namespace new-ns#或者使用简写:kubectl create ns new-ns
复制代码


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


vim my-ns.yaml


输入以下


apiVersion: v1kind: Namespacemetadata:  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/v1kind: Deploymentmetadata:  name: nginx  namespace: new-nsspec:  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/v1kind: StatefulSetmetadata:  name: nginx  namespace: new-nsspec:  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: v1kind: Servicemetadata:  name: nginx-svc  namespace: new-ns  labels:    app: nginx-svcspec:  ports:    - port: 80      name: server      targetPort: 80  type: ClusterIP  clusterIP: None  selector:    app: nginx
复制代码


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


编排文档参考:


apiVersion: networking.k8s.io/v1kind: Ingressmetadata:  name: nginx-ing  namespace: new-ns spec:  rules:  - host: xxx.xxx.com    http:      paths:      - path: /        backend:          serviceName: nginx-svc          servicePort: server
复制代码


发布于: 刚刚阅读数: 6
用户头像

学如逆水行舟,不进则退 2022.08.05 加入

大型企业CTO,专注大数据、架构框架、集群、中间件、分布式、数据库、监控、开源、基础架构等技术分享,助力数字化转型。

评论

发布
暂无评论
kubernetes 常见架构图_签约计划第三季_CTO技术共享_InfoQ写作社区