当前位置: 首页 > article >正文

kubernetes第九天

1.statefulsets

 有状态服务面临的三大问题:

1.启动顺序,

2.每个pod有独立存储

3.ip地址动态变化

使用statefulsets可以解决这三个问题

2.部署metric-server

1.下载起源清单:

wget https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/high-availability-1.21+.yaml

2.修改资源清单,如图所示,增加- --kubelet-insecure-tls,修改镜像,

3.创建应用:kubectl apply -f high-availability-1.21+.yaml

4.检查状态:kubectl -n kube-system get pods| grep metrics-server

5.验证 metrics-server是否正常

kubectl top pods

kubectl top node

3.HPA

Kubernetes的 HPA (Horizontal Pod Autoscaler) 是一种用于自动扩缩(伸缩)Pod副本数的机制,根据指标(如 CPU 使用率、内存使用率或自定义指标)动态调整部署的Pod数量,从而保证应用程序的性能和资源的高效使用。

简单来讲就是根据pod的性能指标,动态调整pod的数量

响应式创建HPA:kubectl autoscale deployment deployment资源名字 --min=2 --max=5 --cpu-percent=80

hpa的使用:(声明式创建HPA)

# 指定Api的版本号
apiVersion: autoscaling/v2
# 指定资源类型
kind: HorizontalPodAutoscaler
# 指定hpa源数据信息
metadata:
  # 指定名称
  name: deploy01-hpa
  # 指定名称空间
  namespace: default
# 用户的期望状态
spec:
  # 指定最大的Pod副本数量
  maxReplicas: 5
  # 指定监控指标
  metrics:
    # 指定资源限制
  - resource:
      # 指定资源限制的名称
      name: cpu
      # 指定限制的阈值
      target:
        averageUtilization: 80
        type: Utilization
    type: Resource
  # 指定最小的Pod副本数量
  minReplicas: 2
  # 当前的hpa规则应用在哪个资源
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: deploy-hpa

上述代码,动态调整部署的Pod数量为2-5,关联的是名字为deploy-hpa的Deployment,限制的是cpu资源为百分之八十

下面创建一个名字为deploy-hpa的Deployment

apiVersion: apps/v1
kind: Deployment
metadata:
  name: deploy-hpa
spec:
  replicas: 3
  selector:
    matchExpressions:
    - key: apps
      operator: Exists
  template:
    metadata:
      labels:
        apps: hpa
    spec:
      containers:
      - name: web
        image: harbor.lxcedu.com/base-img/nginx:1
        resources:
          requests:
             cpu: 500m
             memory: 200M
          limits:
             cpu: 1
             memory: 500M

值得注意的是:Pod 的资源请求(requests)需要为 CPU 设置一个值。HPA 需要根据 CPU 的请求量来计算当前的 CPU 使用率。否则hpa功能无法实现

使用两个yaml文件创建资源文件

分别进去各个pod,进行压力测试:

kubectl exec deploy-hpa-5bd868655c-7kdwl -it -- sh

dd if=/dev/zero of=/dev/null bs=100M count=100000

如图所示,pods消耗资源超过限定的值,pod数量弹性扩展至5个

4.helm

helm的安装:

1.下载:wget https://get.helm.sh/helm-v3.9.0-linux-amd64.tar.gz

2.解压到指定目录:tar xf helm-v3.9.0-linux-amd64.tar.gz -C /usr/local/sbin/ linux-amd64/helm  --strip-components=1

3.验证helm安装成功:helm version

4.配置helm自动补全:helm completion bash > /etc/bash_completion.d/helm

helm的初体验:

1.创建chart:helm create lxc-linux

2.安装chart: 

         创建名称空间:kubectl create namespace lxc

         将chart安装到该名称空间下: helm install mychart01 lxc-linux -n lxc

         查看chart:  helm list -n lxc

3.卸载chart:

            helm uninstall mychart01 -n lxc

4.升级:

           先查看: helm list -n lxc

           修改变量升级:vim values.yaml (修改tags的值) 

             helm upgrade mychart01 lxc-linux -f  lxc-linux/values.yaml   -n lxc

5.回滚

         查看历史版本呢:helm history mychart01 -n lxc

         回滚到上一个版本:helm rollback mychart01 -n lxc

         

          回滚到指定版本:helm history mychart01 -n lxc

  

5.helm共有仓库管理

添加共有仓库

helm repo add weiruan http://mirror.azure.cn/kubernetes/charts/
helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

查看仓库列表:helm repo list

搜索关心的chart:  helm search repo aliyun

                                helm search repo mysql

下载chart:helm pull aliyun/mysql --untar

6.部署需要的chart

下载chart:helm pull aliyun/mysql --untar

这里以mysql为例

需要修改values.yaml,

去掉这一行的#,storageClass: "-",把他的值改为sc的值

运行chart:helm install mysql01 mysql -n lxc

测试: kubectl run -it --rm db-client --image=mysql:8.0.32-oracle -- sh

进入容器后:mysql -h 10.100.2.183 -p

或者直接:kubectl run -it --rm db-client --image=mysql:8.0.32-oracle -- mysql -h 10.100.2.183 -pg140BV7eU0

7.使用helm安装traefik程序

1.添加traefik的helm源

helm repo add traefik https://traefik.github.io/charts

2.更新helm的源

helm repo update

3.拉取官方的traefik的Chart

helm pull traefik/traefik --untar

4.修改Chart的配置文件

vim traefik/values.yaml

image:
  ...
  # repository: traefik
  repository: traefik
  tag: "v2.9.10"
    
service:
  ...
  # type: LoadBalancer
  type: NodePort

5.安装traefik

helm install traefik traefik

6.开启traefik的端口转发功能,为了安全起见,helm默认没有开启dashboar,因此需要手动暴露

kubectl port-forward `kubectl get pods -l "app.kubernetes.io/name=traefik" -o name` --address=0.0.0.0  9000:9000


http://www.kler.cn/a/506771.html

相关文章:

  • 如何解决Outlook无法连接到服务器的问题
  • CentOS 9 Stream 上安装 Node.js 18.20.5
  • 《零基础Go语言算法实战》【题目 5-1】按照给定条件构建二叉树
  • Android SystemUI——车载CarSystemUI加载(八)
  • Gateway怎么实现限流的
  • HTML中最基本的东西
  • .NET概述
  • [Do374]Ansible一键搭建sftp实现用户批量增删
  • 如何设置请求头模拟浏览器访问?
  • HTML标签笔记
  • 【Golang 面试题】每日 3 题(三十三)
  • 【React】JSX底层处理机制
  • Git 版本控制:.gitignore 文件完全指南
  • 如何制作一个高质量的 Dockerfile 镜像:从入门到实践
  • 【进程与线程】进程的状态
  • AI与药学:大语言模型赋能药物推荐
  • 为什么我喜欢在 CSS 中使用 RegEx
  • npm发布组件(vue3+webpack)
  • Vue学习之旅:从生命周期到工程化开发与组件实践(生命周期+工程化开发)
  • @Query(org.springframework.data.jpa.repository.Query)