1.K8S可以使用yml部署资源
apiVersion: apps/v1
kind: Deployment
metadata:
name: bm-gateway
spec:
replicas: 1
selector:
matchLabels:
app: bm-gateway
template:
metadata:
labels:
app: bm-gateway
spec:
containers:
- name: bm-gateway
image: ${IMAGE_NAME}
ports:
- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
name: bm-gateway
spec:
type: NodePort
selector:
app: bm-gateway
ports:
- name: http
port: 8080
targetPort: 8080
nodePort: 31111
2.高级配置
1.添加容器环境变量
2.文件挂载
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
env: # 添加环境变量配置
- name: MY_ENV_VAR
value: "Hello Kubernetes"
volumeMounts: # 添加日志挂载配置
- name: nginx-logs
mountPath: /var/log/nginx
volumes: # 定义挂载卷
- name: nginx-logs
hostPath: # 使用HostPath类型挂载到主机
path: /path/on/host/for/nginx/logs # 这里填写主机上的日志目录路径
type: DirectoryOrCreate # 如果需要自动创建目录
3.高级(添加cpu与内存限制)
1.apiVersion: apps/v1
表示该 YAML 文件或资源定义遵循的是 Kubernetes API 的 apps/v1
版本
2.kind: Deployment 定义了一个 Kubernetes 部署(Deployment)资源,用于在 Kubernetes 集群中部署和管理容器化应用程序。
3.metadata:
name: bm-product-service-app
描述了如何部署一个名为 bm-product-service-app
的应用。下面是详细的解释:
元数据(metadata)
name
: 部署的名称,这里是bm-product-service-app
。
规格(spec)
replicas
: 指定要运行的副本数,这里是 1,意味着只会有一个 Pod 实例运行。selector
: 用于选择哪些 Pod 应该被这个部署管理。它通过标签选择器(matchLabels
)实现,这里指定了app: bm-product-service-app
。template
: 定义 Pod 的模板。metadata
: Pod 的元数据,包括标签app: bm-product-service-app
,这与选择器匹配。spec
: Pod 的规格。containers
: 容器列表。name
: 容器的名称,这里是bm-product-service-app
。image
: 容器使用的镜像,这里是registry.cn-beijing.aliyuncs.com/205erp/bm-product-service-app:2024-06-17-21-05-21
,表示从阿里云的北京区域仓库拉取指定版本的镜像。ports
: 容器暴露的端口列表,这里指定了容器端口8080
。env
: 环境变量列表。SW_AGENT_NAME
: 设置为bm-product-service-app
。SW_AGENT_COLLECTOR_BACKEND_SERVICES
: 设置为192.168.11.221:11800
,这可能是 SkyWalking APM(应用性能管理)的后端服务地址。JAVA_TOOL_OPTIONS
: 设置为-javaagent:/skywalking-agent/skywalking-agent.jar
,用于指定 Java 代理,这里是为了集成 SkyWalking。
volumeMounts
: 挂载卷列表,用于将存储卷挂载到容器的指定路径。name
: 挂载卷的名称,这里是app-logs
。mountPath
: 挂载路径,这里是/logs
,意味着容器内的/logs
目录将用于存储日志。
resources
: 资源请求和限制。requests
: 请求的资源量,这里只指定了内存请求为256Mi
。limits
: 资源的最大限制,这里只指定了内存限制为1024Mi
。
volumes
: 定义用于 Pod 的存储卷。name
: 存储卷的名称,这里是app-logs
。hostPath
: 使用主机路径卷,允许将文件或目录从节点的文件系统挂载到 Pod 中。path
: 主机上的路径,这里是/logs
,意味着 Pod 内的/logs
目录将映射到节点上的/logs
目录。type
: 卷的类型,这里是DirectoryOrCreate
,表示如果目录不存在,则自动创建它。
这个 YAML 文件定义了一个 Kubernetes 部署,用于运行一个名为 bm-product-service-app
的 Java 应用,该应用使用 SkyWalking 进行性能监控,并将日志输出到挂载的主机目录 /logs
。部署配置包括环境变量设置、资源请求和限制,以及日志存储的挂载配置。
apiVersion: apps/v1
kind: Deployment
metadata:
name: bm-product-service-app
spec:
replicas: 1
selector:
matchLabels:
app: bm-product-service-app
template:
metadata:
labels:
app: bm-product-service-app
spec:
containers:
- name: bm-product-service-app
image: registry.cn-beijing.aliyuncs.com/205erp/bm-product-service-app:2024-06-17-21-05-21
ports:
- containerPort: 8080
env: # 添加环境变量配置
- name: SW_AGENT_NAME
value: bm-product-service-app
- name: SW_AGENT_COLLECTOR_BACKEND_SERVICES
value: 192.168.11.221:11800
- name: JAVA_TOOL_OPTIONS
value: -javaagent:/skywalking-agent/skywalking-agent.jar
volumeMounts: # 添加日志挂载配置
- name: app-logs
mountPath: /logs
resources: # 新增资源限制
requests:
# cpu: "100m" # CPU 请求,例如 100m 表示 0.1 个 CPU 核心
memory: "256Mi" # 内存请求,例如 256Mi 表示 256 MB
limits:
# cpu: "500m" # CPU 限制,例如 500m 表示 0.5 个 CPU 核心
memory: "1024Mi" # 内存限制,例如 256Mi 表示 256 MB
volumes: # 定义挂载卷
- name: app-logs
hostPath: # 使用HostPath类型挂载到主机
path: /logs # 这里填写主机上的日志目录路径
type: DirectoryOrCreate # 如果需要自动创建目录