Kubernetes包管理工具Helm简介及使用

文章目录

    • 前言
    • 技术积累
      • 什么是Helm
      • Helm的核心概念
      • Helm可以解决哪些痛点
      • Helm中文官方文档
    • Helm安装
    • Helm安装nginx用例
    • 写在最后

前言

大家都知道K8S是云原生devops的一大利器,可以直接让我们的中间件、应用服务直接运行在云端,让我们可以只关心自身的业务功能, 不再关注其他那些非功能项以及运维部署的琐事。但是K8S对于基础服务和应用服务部署还是相当的麻烦,比如一个服务端的应用部署,我们需要配置存储pv/pvc、应用deployment、服务发现service、暴露端口管理以及secret,这些资源都是分散的需要我们使用kubectl进行分别管理。针对这个鸡肋的问题,今天我们就介绍一个K8S的包管理工具Helm,直接解放双手。
在这里插入图片描述

技术积累

什么是Helm

Helm 是 Kubernetes 的包管理器,是查找、分享和使用软件构建 Kubernetes 的最优方式。

包管理器类似于我们在 Ubuntu 中使用的apt、Centos中使用的yum一样,能快速查找、下载和安装软件包, 能够将一组K8S资源打包统一管理, 是查找、共享和使用为Kubernetes构建的软件的最佳方式。

Helm的核心概念

Helm:客户端命令行工具,用于chart的创建、打包、发布与管理;
Chart: helm管理的包,包含k8s集群内部运行的应用程序,工具或服务的资源定义;相似于centos yum所管理的rpm包,是一系列资源文件的集合;
Repository: 用于存放chart的地方,类似于yum仓库;可以使用官方的仓库,也可以自定义私有仓库;
Release: 是 k8s集群中运行的chart实列,chart可以在k8s集群中反复部署,每次部署都会创建一个新的release。

Helm可以解决哪些痛点

统一管理、配置和更新这些分散的 k8s 的应用资源文件
分发和复用一套应用模板
将应用的一系列资源当做一个软件包管理

Helm中文官方文档

https://helm.sh/zh/docs/intro/quickstart/

Helm安装

官网给定的kubernetes版本和Helm版本的支持关系如下:

那么选择对应的3.12.x版本安装,我这里采用便捷的方式进行安装helm。
在已经安装好的kubernetes集群中直接安装一下命令在master节点中安装:

#获取helm安装包
[root@master ~]# wget https://get.helm.sh/helm-v3.12.1-linux-amd64.tar.gz
#解压安装
[root@master ~]# tar -zxvf helm-v3.12.1-linux-amd64.tar.gz
[root@master ~]# mv linux-amd64/helm /usr/local/bin/helm
#添加 bitnami仓库
[root@master ~]# helm repo add bitnami https://charts.bitnami.com/bitnami
# 查看仓库列表
[root@master ~]# helm repo list
NAME            URL
bitnami         https://charts.bitnami.com/bitnami
[root@master ~]#

这样helm就安装到kubernetes集群中了。

Helm安装nginx用例

1、helm仓库查询nginx安装包

[root@master ~]# helm search repo nginx
NAME                                    CHART VERSION   APP VERSION     DESCRIPTION
bitnami/nginx                           15.3.1          1.25.2          NGINX Open Source is a web server that can be a...
bitnami/nginx-ingress-controller        9.8.5           1.9.0           NGINX Ingress Controller is an Ingress controll...
bitnami/nginx-intel                     2.1.15          0.4.9           DEPRECATED NGINX Open Source for Intel is a lig...
ingress-nginx/ingress-nginx             4.8.0           1.9.0           Ingress controller for Kubernetes using NGINX a...
stable/nginx-ingress                    1.41.3          v0.34.1         DEPRECATED! An nginx Ingress controller that us...
stable/nginx-ldapauth-proxy             0.1.6           1.13.5          DEPRECATED - nginx proxy with ldapauth
stable/nginx-lego                       0.3.1                           Chart for nginx-ingress-controller and kube-lego
stable/gcloud-endpoints                 0.1.2           1               DEPRECATED Develop, deploy, protect and monitor...
[root@master ~]#

2、helm拉取nginx安装包

[root@master ~]# cd /k8s/
[root@master k8s]# helm pull bitnami/nginx

在这里插入图片描述

3、解压nginx-15.3.1.tgz

[root@master k8s]# tar xzvf nginx-15.3.1.tgz
[root@master k8s]# cd nginx
[root@master nginx]# ll
total 104
-rw-r--r-- 1 root root   226 Sep 26 08:04 Chart.lock
drwxr-xr-x 3 root root    20 Nov  1 09:59 charts
-rw-r--r-- 1 root root  1012 Sep 26 08:04 Chart.yaml
-rw-r--r-- 1 root root 49429 Sep 26 08:04 README.md
drwxr-xr-x 2 root root   325 Nov  1 09:59 templates
-rw-r--r-- 1 root root  2225 Sep 26 08:04 values.schema.json
-rw-r--r-- 1 root root 37116 Sep 26 08:04 values.yaml

此时我们可以修改value.yaml中的一些配置,比如端口。

4、helm安装nginx

[root@master nginx]# helm install nginx .
NAME: nginx
LAST DEPLOYED: Wed Nov  1 10:04:36 2023
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: nginx
CHART VERSION: 15.3.1
APP VERSION: 1.25.2** Please be patient while the chart is being deployed **
NGINX can be accessed through the following DNS name from within your cluster:nginx.default.svc.cluster.local (port 80)To access NGINX from outside the cluster, follow the steps below:1. Get the NGINX URL by running these commands:NOTE: It may take a few minutes for the LoadBalancer IP to be available.Watch the status with: 'kubectl get svc --namespace default -w nginx'export SERVICE_PORT=$(kubectl get --namespace default -o jsonpath="{.spec.ports[0].port}" services nginx)export SERVICE_IP=$(kubectl get svc --namespace default nginx -o jsonpath='{.status.loadBalancer.ingress[0].ip}')echo "http://${SERVICE_IP}:${SERVICE_PORT}"
[root@master nginx]#

5、获取已经安装的nginx 服务及pod

[root@master nginx]# kubectl get pod,svc | grep nginx
pod/my-nginx-5746bbd756-6n98f                 1/1     Running   2 (2d22h ago)    64d
pod/nginx-7888c8874c-t4f4s                    1/1     Running   0                7m22s
service/my-nginx           ClusterIP      10.102.89.127   <none>        80/TCP           64d
service/nginx              LoadBalancer   10.98.78.251    <pending>     80:30120/TCP     7m22s
[root@master nginx]#

以上可知我们pod端口为80,外网访问ip为本机ip,端口为30120。
我们直接打开外部浏览器进行访问测试:
http://10.10.22.91:30120/
在这里插入图片描述

6、获取nginx映射配置

[root@master nginx]# kubectl get pods | grep nginx
my-nginx-5746bbd756-6n98f                 1/1     Running   2 (2d23h ago)    64d
[root@master nginx]#
[root@master nginx]# kubectl exec my-nginx-5746bbd756-6n98f  -- cat /etc/nginx/nginx.conf
user  nginx;
worker_processes  auto;
error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;
events {worker_connections  1024;
}
http {include       /etc/nginx/mime.types;default_type  application/octet-stream;log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log  /var/log/nginx/access.log  main;sendfile        on;#tcp_nopush     on;keepalive_timeout  65;#gzip  on;include /etc/nginx/conf.d/*.conf;
}

7、其他

#升级releas
helm upgrade nginx .
#卸载nginx
[root@master nginx]# helm uninstall nginx
release "nginx" uninstalled
[root@master nginx]#

写在最后

Kubernetes包管理工具Helm简介及使用还是比较简单,通过本博文我们可以知道Helm就是一个包管理工具如同centos中yum一样,是查找、分享和使用软件构建 Kubernetes 的最优方式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/156159.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

霍尔效应测试系统

霍尔效应是电磁效应的一种&#xff0c;这一现象是美国物理学家霍尔&#xff08;E.H.Hall&#xff0c;1855—1938&#xff09;于1879年在研究金属的导电机制时发现的。当电流垂直于外磁场通过半导体时&#xff0c;载流子发生偏转&#xff0c;垂直于电流和磁场的方向会产生一附加…

Kafka基本原理、生产问题总结及性能优化实践 | 京东云技术团队

Kafka是最初由Linkedin公司开发&#xff0c;是一个分布式、支持分区的&#xff08;partition&#xff09;、多副本的&#xff08;replica&#xff09;&#xff0c;基于zookeeper协调的分布式消息系统&#xff0c;它的最大的特性就是可以实时的处理大量数据以满足各种需求场景&a…

中颖单片机SH367309全套量产PCM,专用动力电池保护板开发资料

方案总体介绍 整套方案硬件部分共2块板子&#xff0c;包括MCU主板&#xff0c;采用SH79F6441-32作为主处理器。MCU主板包括2个版本。PCM动力电池保护板采用SH367309。 软件方案采用Keil51建立的工程&#xff0c;带蓝牙的版本&#xff0c;支持5~16S电池。 硬件方案--MCU主板 MC…

【2023Mathorcup大数据】B题 电商零售商家需求预测及库存优化问题 python代码解析

【2023Mathorcup大数据】B题 电商零售商家需求预测及库存优化问题 python代码解析 1 题目 2023 年MathorCup 高校数学建模挑战赛——大数据竞赛赛道B&#xff1a;电商零售商家需求预测及库存优化问题电商平台存在着上千个商家&#xff0c;他们会将商品货物放在电商配套的仓库…

信息收集-web架构-源码

一、web架构资产-平台指纹识别-源码 代码审计&#xff0c;从代码中挖掘漏洞&#xff0c;有代码才能做的&#xff0c;没有代码&#xff08;黑盒&#xff09;&#xff0c;有代码&#xff08;白盒&#xff09; 没有源码只能做黑盒&#xff0c;有源码黑白盒都可做 有源码成功率高…

opencv c++ canny 实现 以及与halcon canny的对比

Opencv和C实现canny边缘检测_opencv边缘增强-CSDN博客 一、canny实现步骤 1、图像必须是单通道的&#xff0c;也就是说必须是灰度图像 2、图像进行高斯滤波&#xff0c;去掉噪点 3、sobel 算子过程的实现&#xff0c;计算x y方向 、梯度&#xff08;用不到&#xff0c;但是…

【机器学习】四、计算学习理论

1 基础知识 计算学习理论&#xff08;computational learning theory&#xff09;&#xff1a;关于通过“计算”来进行“学习”的理论&#xff0c;即关于机器学习的理论基础&#xff0c;其目的是分析学习任务的困难本质&#xff0c;为学习算法体统理论保证&#xff0c;并根据结…

如何远程访问具有多个显示器的计算机

留出扩展空间对身体和电脑屏幕都有好处。许多人受益于使用多台显示器或将笔记本电脑连接到外接显示器以扩展屏幕。对于使用屏幕的人来说&#xff0c;拥有这样的屏幕空间可能意味着更高效的工作流程和生产力。 但是&#xff0c;如果你需要远程访问那台计算机呢&#xff1f;是否…

C++——类和对象之拷贝构造

拷贝构造 本章思维导图&#xff1a; 注&#xff1a;本章思维导图对应的xmind文件和.png文件都已同步上传到”资源“ 如果我们想要用一个已经存在的对象实例化一个与之完全相同的对象&#xff0c;怎么做呢&#xff1f; C提供了一个简单的方法——拷贝构造 拷贝构造是C类里面默…

Vue解决img路径报错

问题&#xff1a; 我们有一组图片的地址&#xff0c;使用v-for遍历img标签&#xff0c;设置src属性&#xff0c;却无法获取图片 解决方法&#xff1a; 因为我们将图片路径放入data中后会被webpack进行打包&#xff0c;这时候的路径仅仅只是一个字符串&#xff0c;无法进行解析…

使用vue3+vite+elctron构建小项目介绍Electron进程间通信

进程间通信 (IPC) 是在 Electron 中构建功能丰富的桌面应用程序的关键部分之一。 由于主进程和渲染器进程在 Electron 的进程模型具有不同的职责&#xff0c;因此 IPC 是执行许多常见任务的唯一方法&#xff0c;例如从 UI 调用原生 API 或从原生菜单触发 Web 内容的更改。 在 …

innovus: set_ccopt_property的基本用法

我正在「拾陆楼」和朋友们讨论有趣的话题&#xff0c;你⼀起来吧&#xff1f; 拾陆楼知识星球入口 clock route clock route的net type分为三种&#xff0c;分别是root、trunk和leaf&#xff0c;其中root是指fanout超过routing_top_fanout_count约束的net&#xff0c;leaf是指…