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