第七课:尚硅谷K8s学习- Prometheus、Grafana和EFK、证书年限

本文介绍了在Kubernetes(K8s)环境中使用Helm进行应用部署和管理,包括Helm的安装、自定义chart的创建与操作。接着讲解了Prometheus的资源限制和监控,以及Grafana的使用。此外,还详细阐述了日志收集系统EFK的Helm安装和证书年限的修改方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第七课:尚硅谷K8s学习- Prometheus、Grafana和EFK、证书年限

tags:

  • golang
  • 2019尚硅谷

categories:

  • K8s
  • Helm安装使用
  • Prometheus
  • Grafana
  • HPA
  • k8s资源限制
  • 日志收集EFK
  • 证书可用年限修改

第一节 helm介绍

1.1 为什么需要helm

  1. 在没使用helm之前,向kubernetes部署应用,我们要依次部署deployment,service,configMap等,步骤较繁琐。况且随着很多项目微服务化,复杂的应用在容器中部署以及管理显得较为复杂
  2. helm通过打包的方式,支持发布的版本管理和控制,很大程度上简化了Kubernetes应用的部署和管理
  3. Helm本质就是让K8s的应用管理(Deployment,Service 等)可配置,能动态生成。通过动态生成K8s资源清单文件(deployment.yaml, service.yaml) 。然后调用Kubectl自动执行K8s资源部署

1.2 helm中几个概念

  1. Helm是官方提供的类似于YUM的包管理器,是部署环境的流程封装。Helm 有两个重要的概念: Chart 和Release
    • Chart: 一个Helm包,其中包含了运行一个应用所需要的镜像、依赖和资源定义等,还可能包含Kubernetes集群中的服务定义(可以理解为docker的image)
    • Release: 在Kubernetes集群上运行的 Chart的一个实例。在同一个集群上,一个 Chart可以安装很多次。每次安装都会创建一个新的release(可以理解为docker的container实例)
  2. Helm包含两个组件: Helm客户端和Tiller服务器,如下图所示
  3. Helm客户端负责chart和release的创建和管理以及和Tiller的交互。Tiller 服务器运行在Kubernetes集群中,它会处理Helm客户端的请求,与Kubernetes API Server交互
    在这里插入图片描述

1.3 helm安装

  1. Helm 的安装十分简单。下载 helm命令行具到master节点.
  2. 安装github网站:https://github.com/helm/helm/releases/tag/v3.2.4
  3. 这里安装3.2.4版本,通过脚本的方式后查看版本。helm version
  4. 或者通过下载 Linux amd64 版本。
# 如无需更换版本,直接执行下载
wget https://get.helm.sh/helm-v3.2.4-linux-amd64.tar.gz
# 解压
tar -zxvf helm-v3.2.4-linux-amd64.tar.gz
# 进入到解压后的目录
cd linux-amd64/
cp helm /usr/local/bin/
# 赋予权限
chmod a+x /usr/local/bin/helm
# 查看版本
helm version
  1. Kubernetes 1.6 中开启了 RBAC ,权限控制变得简单了。Helm 也不必与 Kubernetes 做重复的事情,因此 Helm 3 彻底移除了 Tiller 。 移除 Tiller 之后,Helm 的安全模型也变得简单(使用 RBAC 来控制生产环境 Tiller 的权限非常不易于管理)。Helm 3 使用 kubeconfig 鉴权。集群管理员针对应用,可以设置任何所需级别的权限控制,而其他功能保持不变。
  2. 官网仓库: https://hub.helm.sh/ 这里是官方或别人的仓库。

第二节 自定义的chart

2.1 模板文件目录结构

  1. 上面仓库中的模板是别人做的。如何做自己的模板呢?
  2. 目录结构如下
.
├── Chart.yaml
├── templates
|   ├── deployment.yaml
|   └── service.yaml
├── values.yaml
  1. 一个基本的自定义chart的文件目录结构大概是如上:
    • Chart.yaml: 定义当前chart的基本metadata, 比如name,tag啥的
    • templates: 这个文件夹下放当前chart需要的一些yaml资源清单
      • 资源清单支持变量模版语法
    • values.yaml: 定义变量,可被template下的yaml资源清单使用

2.2 自定义chart的示例

# 1. 新建一个文件夹demo存放chart
mkdir demo && cd demo && mkdir templates

# 2. 新建Chart.yaml 必须包含name和version两个字段
cat << EOF > Chart.yaml
name: hello-world
version: 1.0.0
EOF

# 3. 新建./templates/deployment.yaml
# 模板目录必须是templates 注意image部分可以使用变量的模板语法,可以动态插入
cat << EOF > ./templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment 
metadata:
  name: hello-world 
spec:
  replicas: 1
  selector:
    matchLabels:
      app: hello-world
  template:
    metadata:
      labels:
        app: hello-world 
    spec:
      containers:
        - name: hello-world 
          image: hub.qnhyn.com/library/myapp:v1 
          ports:
            - containerPort: 80 
              protocol: TCP 
EOF

# 4. 新建./templates/service.yaml
cat << EOF > ./templates/service.yaml
apiVersion: v1
kind: Service 
metadata:
  name: hello-world 
spec:
  type: NodePort 
  ports:
    - port: 80 
      targetPort: 80 
      protocol: TCP 
  selector:
    app: hello-world 
EOF

# 5. 新建values.yaml 这个用来动态导入的image: {
   { .Values.image.repository }}:{
   { .Values.image.tag }}
# 这样做有个好处 只需要修改values.yaml文件 可以动态修改配置
#cat << EOF > values.yaml
#image:
#  repository: lzw5399/tocgenerator
#  tag: '951'
#EOF
# 将chart实例化成release
# 格式:helm install [RELEASE-NAME] [CHART-PATH]
helm install testname .
# 查看release
helm ls
# 查看历史
helm history <RELEASE_NAME>
# 安装成功!!
kubectl get pod

2.3 helm的基本操作

  1. 查看release
# 列出已经部署的Release 
helm ls 
# 查询一个特定的Release的状态 
helm status <RELEASE_NAME> 
# 查看被移除了,但保留了历史记录的release
helm ls --uninstalled
  1. 安装release

                
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值