Rancher应用管理
大约 6 分钟容器化技术Rancher应用管理
Rancher应用管理
Rancher应用管理概述
Rancher提供了强大的应用管理功能,支持通过应用目录、Helm Charts、YAML文件等多种方式部署和管理容器化应用。通过Rancher的应用管理功能,可以实现应用的快速部署、配置管理、版本升级和监控告警。
应用目录管理
1. 内置应用目录
Rancher内置了丰富的应用目录,包含常用的开源应用和企业级应用。
常用应用:
- 监控系统:Prometheus、Grafana
- 日志系统:EFK Stack
- 消息队列:Redis、Kafka
- 数据库:MySQL、PostgreSQL
- CI/CD:Jenkins、Drone
- 存储:MinIO、NFS
浏览应用目录:
- 进入Rancher UI
- 选择目标集群和项目
- 点击"应用"菜单
- 点击"启动"按钮
- 浏览可用的应用
2. 自定义应用目录
可以添加自定义的应用目录来部署企业内部应用。
添加自定义目录:
# 自定义目录配置
apiVersion: v1
kind: ConfigMap
metadata:
name: custom-catalog
namespace: cattle-system
data:
catalog.json: |
{
"name": "custom",
"url": "https://github.com/myorg/custom-charts",
"branch": "main"
}
Helm应用部署
1. 通过UI部署Helm应用
部署步骤:
- 进入Rancher UI
- 选择目标集群和项目
- 点击"应用"菜单
- 点击"启动"按钮
- 选择要部署的应用
- 配置应用参数
- 点击"启动"完成部署
配置应用参数:
# 应用配置示例
app_config:
name: "my-app"
namespace: "default"
version: "1.0.0"
values:
replicaCount: 3
image:
repository: nginx
tag: latest
service:
type: ClusterIP
port: 80
2. 通过CLI部署Helm应用
安装Helm CLI:
# 下载Helm
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
# 验证安装
helm version
配置Rancher CLI:
# 下载Rancher CLI
wget https://github.com/rancher/cli/releases/download/v2.6.0/rancher-linux-amd64-v2.6.0.tar.gz
# 解压并安装
tar -zxvf rancher-linux-amd64-v2.6.0.tar.gz
sudo cp rancher-v2.6.0/rancher /usr/local/bin/
# 配置Rancher CLI
rancher login https://rancher.example.com -t <api-token>
部署应用:
# 添加Helm仓库
helm repo add bitnami https://charts.bitnami.com/bitnami
# 搜索应用
helm search repo bitnami/nginx
# 部署应用
helm install my-nginx bitnami/nginx \
--namespace default \
--set service.type=ClusterIP
应用配置管理
1. ConfigMap管理
创建ConfigMap:
# ConfigMap示例
apiVersion: v1
kind: ConfigMap
metadata:
name: app-config
namespace: default
data:
# 属性类配置
database.host: "mysql.example.com"
database.port: "3306"
# 文件类配置
app.properties: |
app.name=MyApp
app.version=1.0.0
log.level=INFO
在应用中使用ConfigMap:
# 在Pod中使用ConfigMap
apiVersion: v1
kind: Pod
metadata:
name: myapp
spec:
containers:
- name: myapp
image: myapp:latest
env:
- name: DATABASE_HOST
valueFrom:
configMapKeyRef:
name: app-config
key: database.host
volumeMounts:
- name: config-volume
mountPath: /etc/config
volumes:
- name: config-volume
configMap:
name: app-config
2. Secret管理
创建Secret:
# 创建通用Secret
kubectl create secret generic app-secret \
--from-literal=username=admin \
--from-literal=password=secretpassword
# 从文件创建Secret
kubectl create secret generic tls-secret \
--from-file=tls.crt=/path/to/cert.crt \
--from-file=tls.key=/path/to/cert.key
在应用中使用Secret:
# 在Pod中使用Secret
apiVersion: v1
kind: Pod
metadata:
name: myapp
spec:
containers:
- name: myapp
image: myapp:latest
env:
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: app-secret
key: password
volumeMounts:
- name: secret-volume
mountPath: /etc/secret
readOnly: true
volumes:
- name: secret-volume
secret:
secretName: app-secret
应用升级与回滚
1. 应用升级
通过UI升级:
- 进入Rancher UI
- 选择目标集群和项目
- 点击"应用"菜单
- 找到要升级的应用
- 点击"升级"按钮
- 修改配置参数
- 点击"升级"完成操作
通过Helm升级:
# 升级应用
helm upgrade my-nginx bitnami/nginx \
--namespace default \
--set replicaCount=5 \
--set service.type=LoadBalancer
# 查看升级状态
helm status my-nginx
2. 应用回滚
通过UI回滚:
- 进入Rancher UI
- 选择目标集群和项目
- 点击"应用"菜单
- 找到要回滚的应用
- 点击"回滚"按钮
- 选择回滚版本
- 点击"回滚"完成操作
通过Helm回滚:
# 查看发布历史
helm history my-nginx
# 回滚到指定版本
helm rollback my-nginx 1
# 回滚到上一版本
helm rollback my-nginx 0
应用监控与日志
1. 应用监控
配置监控指标:
# 应用监控配置
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
spec:
template:
metadata:
annotations:
prometheus.io/scrape: "true"
prometheus.io/port: "8080"
prometheus.io/path: "/metrics"
spec:
containers:
- name: myapp
image: myapp:latest
ports:
- containerPort: 8080
自定义监控面板:
{
"dashboard": {
"id": null,
"title": "MyApp Dashboard",
"panels": [
{
"title": "CPU Usage",
"type": "graph",
"targets": [
{
"expr": "rate(container_cpu_usage_seconds_total{container=\"myapp\"}[5m])",
"legendFormat": "CPU Usage"
}
]
},
{
"title": "Memory Usage",
"type": "graph",
"targets": [
{
"expr": "container_memory_usage_bytes{container=\"myapp\"}",
"legendFormat": "Memory Usage"
}
]
}
]
}
}
2. 应用日志
配置日志收集:
# 日志收集配置
apiVersion: v1
kind: Pod
metadata:
name: myapp
labels:
app: myapp
spec:
containers:
- name: myapp
image: myapp:latest
volumeMounts:
- name: log-volume
mountPath: /var/log/myapp
volumes:
- name: log-volume
emptyDir: {}
日志查询:
# 查看Pod日志
kubectl logs myapp
# 实时查看日志
kubectl logs -f myapp
# 查看前100行日志
kubectl logs --tail=100 myapp
# 查看指定时间后的日志
kubectl logs --since=1h myapp
应用安全配置
1. 网络策略
配置应用网络访问:
# 应用网络策略
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: myapp-policy
namespace: default
spec:
podSelector:
matchLabels:
app: myapp
policyTypes:
- Ingress
- Egress
ingress:
- from:
- podSelector:
matchLabels:
app: frontend
ports:
- protocol: TCP
port: 8080
egress:
- to:
- namespaceSelector:
matchLabels:
name: database
ports:
- protocol: TCP
port: 3306
2. 安全上下文
配置Pod安全:
# Pod安全配置
apiVersion: v1
kind: Pod
metadata:
name: myapp
spec:
securityContext:
runAsUser: 1000
runAsGroup: 3000
fsGroup: 2000
containers:
- name: myapp
image: myapp:latest
securityContext:
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
capabilities:
drop:
- ALL
应用资源管理
1. 资源请求与限制
配置资源管理:
# 资源配置示例
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
spec:
template:
spec:
containers:
- name: myapp
image: myapp:latest
resources:
requests:
memory: "64Mi"
cpu: "250m"
limits:
memory: "128Mi"
cpu: "500m"
2. 自动扩缩容
配置HPA:
# HPA配置
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: myapp-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: myapp
minReplicas: 2
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 50
应用故障排查
1. 常见问题诊断
检查应用状态:
# 查看Deployment状态
kubectl get deployments
# 查看Pod状态
kubectl get pods
# 查看应用详细信息
kubectl describe deployment myapp
# 查看Pod详细信息
kubectl describe pod myapp-<pod-id>
检查应用日志:
# 查看应用日志
kubectl logs deployment/myapp
# 查看应用事件
kubectl get events --field-selector involvedObject.kind=Deployment,involvedObject.name=myapp
2. 性能问题排查
资源使用情况:
# 查看Pod资源使用
kubectl top pods
# 查看节点资源使用
kubectl top nodes
# 查看资源配额
kubectl describe resourcequota
应用最佳实践
1. 应用设计
- 使用声明式配置
- 合理设计应用架构
- 遵循十二要素应用原则
- 实现应用的无状态化
2. 配置管理
- 使用ConfigMap管理配置
- 使用Secret管理敏感信息
- 配置版本控制
- 环境差异化配置
3. 监控告警
- 配置应用健康检查
- 设置关键指标监控
- 建立告警机制
- 实现日志收集分析
4. 安全配置
- 配置网络策略
- 使用安全上下文
- 定期更新镜像
- 实施访问控制
常用应用管理命令
命令 | 说明 |
---|---|
helm list | 查看已部署的应用 |
helm install | 部署应用 |
helm upgrade | 升级应用 |
helm rollback | 回滚应用 |
helm uninstall | 删除应用 |
kubectl get deployments | 查看Deployment |
kubectl get pods | 查看Pod |
kubectl logs | 查看日志 |
kubectl describe | 查看详细信息 |
总结
Rancher提供了完整的应用管理功能,通过应用目录、Helm Charts等方式可以快速部署和管理容器化应用。在实际使用中,应遵循最佳实践,合理配置应用资源、安全策略和监控告警,确保应用的稳定性和安全性。通过Rancher的应用管理功能,可以大大提高应用部署和运维的效率。