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

news2024/11/27 1:36:44

文章目录

    • 前言
    • 技术积累
      • 什么是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.coloradmin.cn/o/1160735.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Unity】【VR开发疑难】Unity运行就报无法启动XR Plugin

【现象】 连接Link后运行Unity的VR项目Link也无反映&#xff0c;Unity控制台报&#xff1a;无法启动XR Plugin&#xff0c;并说是由于Oculus头盔未连接导致。 【分析】 打开Oculus PC客户端&#xff0c;发现状态是连接正常。重启机器后&#xff0c;提示Oculus没有出于RunTim…

概念解析 | 揭开心电图测量的神秘面纱

注1:本文系“概念解析”系列之一,致力于简洁清晰地解释、辨析复杂而专业的概念。本次辨析的概念是:ECG的测量原理 揭开心电图测量的神秘面纱 How to read an ECG – Physical Therapy Reviewer 1. 背景介绍 心电图(ECG)是记录心脏电活动的过程,它反映了心脏在收缩和舒张期间的…

新一代构建工具Vite-xyphf

一、什么vite? vite:是一款思维比较前卫而且先进的构建工具,他解决了一些webpack解决不了的问题——在开发环境下可以实现按需编译&#xff0c;加快了开发速度。而在生产环境下&#xff0c;它使用Rollup进行打包&#xff0c;提供更好的tree-shaking、代码压缩和性能优化&…

创建javaEE项目(无maven),JSP(九大内置对象)、Servlet(生命周期)了解

一、Servlet和jsp 0.创建web项目(无maven)&#xff1a; 1.创建一个普通的java项目 2.项目根目录右键&#xff0c;添加模板 3.配置tomcat服务器 4.配置项目tomcat依赖 1.Servlet(Server Applet)服务端小程序 用户通过浏览器发送一个请求&#xff0c;服务器tomcat接收到后&…

串口通信(7)判断数据帧头来接收一串数据

本文为博主 日月同辉&#xff0c;与我共生&#xff0c;csdn原创首发。希望看完后能对你有所帮助&#xff0c;不足之处请指正&#xff01;一起交流学习&#xff0c;共同进步&#xff01; > 发布人&#xff1a;日月同辉,与我共生_单片机-CSDN博客 > 欢迎你为独创博主日月同…

微信小程序:两层循环的练习,两层循环显示循环图片大图(大图显示、多层循环)

效果 代码分析 外层循环 外层循环的框架 <view wx:for"{{info}}" wx:key"index"></view> wx:for"{{info}}"&#xff1a;这里wx:for指令用于指定要遍历的数据源&#xff0c;即info数组。当遍历开始时&#xff0c;会依次将数组中的每…

链表的结点个数统计及查找

链表节点个数统计 要统计链表中的节点个数&#xff0c;只需要遍历整个链表&#xff0c;并在遍历的过程中计数即可。具体实现代码如下&#xff1a;(仍然使用C#) 先定义一个整型函数(节点个数的返回值一定是整型变量) int getLinkNodeNum(struct Test *head) {int cnt 0;whil…

STM32:AHT20温湿度传感器驱动程序开发

注&#xff1a;温湿度传感器AHT20数据手册.pdf http://www.aosong.com/userfiles/files/AHT20%E4%BA%A7%E5%93%81%E8%A7%84%E6%A0%BC%E4%B9%A6(%E4%B8%AD%E6%96%87%E7%89%88)%20B1.pdf 一、分析AHT数据手册文档 (1).准备工作 1.新建工程。配置UART2 2.配置I2C1为I2C标准模式&…

数据链路层中存在的报文ip,arp,rarp

IP数据报 ARP请求/应答报 RARP请求/应答报 IP数据报 这里的目的地址和源地址是MAC地址。 这个被称为 MAC 地址&#xff0c;是一个网卡的物理地址&#xff0c;用十六进制&#xff0c;6 个 byte 表示。 MAC 地址是一个很容易让人误解的地址。因为 MAC 地址号称全球唯一&…

深度学习_7_实战_点集最优直线解_优化版代码解析

完整版优化代码&#xff1a; import torch from torch.utils import data from d2l import torch as d2l # 特定导入 from torch import nndef load_array(data_arrays, batch_size, is_trainTrue):dataset data.TensorDataset(*data_arrays) #解包传递&#xff0c;转成张量…

【Linux】Nignx的入门使用负载均衡前端项目部署---超详细

一&#xff0c;Nignx入门 1.1 Nignx是什么 Nginx是一个高性能的开源Web服务器和反向代理服务器。它使用事件驱动的异步框架&#xff0c;可同时处理大量请求&#xff0c;支持负载均衡、反向代理、HTTP缓存等常见Web服务场景。Nginx可以作为一个前端的Web服务器&#xff0c;也可…

使用docker进行nextcloud+onlyoffice环境搭建(在线 or 离线)

1.安装 MySQL&#xff08;有MySQL就可以不装&#xff09; docker run -itd --name mysql8.0 -p 3306:3306 -e MYSQL_ROOT_PASSWORDroot --restartalways -e TZ"Asia/Shanghai" -v /home/docker/workspace/mysql:/var/lib/mysql mysql:latest --lower_case_table_na…

【案例】3D地球

效果图&#xff1a; 直接放源码 <!DOCTYPE html> <html> <head><meta http-equiv"Content-Type" content"text/html; charsetutf-8" /><meta name"viewport" content"initial-scale1.0, user-scalableno" …

用Python实现批量下载文件——代理ip排除万难

目录 前言 一、准备工作 二、批量下载文件 三、添加代理ip 四、处理异常 完整代码 总结 前言 下载文件是我们在日常工作中常常要做的一件事情。当我们需要从互联网上批量下载大量文件时&#xff0c;手动一个一个去下载显然不够高效。为了解决这个问题&#xff0c;我们可…

Unity内打开网页的两种方式(自带浏览器、内嵌浏览器)

1.自带浏览器 这个比较简单&#xff0c;直接调用unity官方的API即可&#xff0c;会直接使用默认浏览器打开网页&#xff0c;这里就不多做解释了。 代码 public InputField input;private void OpenUrlByUnity(){string inputStr input.text;if (!string.IsNullOrEmpty(input…

JVM虚拟机:你是如何理解Java中的垃圾?

什么是垃圾&#xff1f; 垃圾就是内存中不再被使用到的空间&#xff0c;当一个对象不再被引用后那么久成为垃圾可以回收了&#xff0c;但是线程计算没有引用也可以独立运行&#xff0c;因此线程和对象不同。如果一个对象没有任何一个引用指向它了&#xff0c;那么这个对象就是…

什么是Web 3.0?

什么是Web 3.0&#xff1f;简而言之&#xff0c;就是第三代互联网。 在回答Web 3.0之前&#xff0c;让我们先看一下Web 1.0和Web 2.0。 互联网革命 Web 1.0&#xff0c;第一代互联网&#xff0c;从互联网诞生到1997年。 在Web 1.0&#xff0c;互联网的信息是静态的只读网页&a…

MySQL 配置文件添加参数后服务起不来了

如何正确地向数据库添加配置参数。 作者&#xff1a;王雅蓉&#xff0c;DBA&#xff0c;负责 MySQL 日常问题处理和 DMP 产品维护。 爱可生开源社区出品&#xff0c;原创内容未经授权不得随意使用&#xff0c;转载请联系小编并注明来源。 本文约 1000 字&#xff0c;预计阅读需…

CFCA国产SSL证书

随着国潮风的兴起和中国自主技术的发展&#xff0c;很多组织单位对网络信息安全产品的需求逐渐倾向国产化。在SSL证书需求方面也有很多的组织单位更倾向于国产SSL证书。今天&#xff0c;我们就先来侧重介绍一下国产SSL证书CFCA的相关特点。 CFCA国产SSL证书 CFCA拥有国家多项认…

linux jdk配置

1.下载jdk &#xff0c;以jdk1.8为例子 Java Downloads | Oracle JDK 8 Update Release Notes (oracle.com) 2.配置环境变量 1.下载相关jdk版本&#xff0c;执行以下命令安装jdk tar -zxvf jdk-8u144-linux-x64.tar.gz 2.编辑命令 vi /etc/profile 3.在最后加入下面配置 e…