二、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: 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
复制代码
评论