【Kubernetes】k8s的helm包管理与应用详细说明与操作【helm安装、heml仓库管理和搭建私有仓库

HELM_DIST=“helm- T A G − TAG- TAGOS-$ARCH.tar.gz”

DOWNLOAD_URL=“https://get.helm.sh/$HELM_DIST”

CHECKSUM_URL=“$DOWNLOAD_URL.sha256”

HELM_TMP_ROOT=“$(mktemp -dt helm-installer-XXXXXX)”

HELM_TMP_FILE=“ H E L M T M P R O O T / HELM_TMP_ROOT/ HELMTMPROOT/HELM_DIST”

HELM_SUM_FILE=“ H E L M T M P R O O T / HELM_TMP_ROOT/ HELMTMPROOT/HELM_DIST.sha256”

echo “Downloading $DOWNLOAD_URL”

if [ “${HAS_CURL}” == “true” ]; then

curl -SsL “ C H E C K S U M U R L " − o " CHECKSUM_URL" -o " CHECKSUMURL"o"HELM_SUM_FILE”

curl -SsL “ D O W N L O A D U R L " − o " DOWNLOAD_URL" -o " DOWNLOADURL"o"HELM_TMP_FILE”

elif [ “${HAS_WGET}” == “true” ]; then

wget -q -O “ H E L M S U M F I L E " " HELM_SUM_FILE" " HELMSUMFILE""CHECKSUM_URL”

wget -q -O “ H E L M T M P F I L E " " HELM_TMP_FILE" " HELMTMPFILE""DOWNLOAD_URL”

fi

}

#3: 检测上面的下载内容,如果检测不通过,就不让安装,所以得吧这判断删了

verifyChecksum() {

printf "Verifying checksum… "

local sum=$(openssl sha1 -sha256 ${HELM_TMP_FILE} | awk ‘{print $2}’)

local expected_sum=$(cat ${HELM_SUM_FILE})

if [ “ s u m " ! = " sum" != " sum"!="expected_sum” ]; then

echo “SHA sum of ${HELM_TMP_FILE} does not match. Aborting.”

exit 1

fi

echo “Done.”

}

  • 修改后成这样【我这使用的是v3.2.1】

改成这样以后呢,就表示,使用这个版本

#1:指定当前版本

checkDesiredVersion() {

TAG=v3.2.1

}

#2:get文件和sha256文件需要在同一路径哈

downloadFile() {

HELM_DIST=“helm- T A G − TAG- TAGOS-$ARCH.tar.gz”

DOWNLOAD_URL=“https://get.helm.sh/$HELM_DIST”

CHECKSUM_URL=“$DOWNLOAD_URL.sha256”

HELM_TMP_ROOT=“$(mktemp -dt helm-installer-XXXXXX)”

HELM_TMP_FILE=“ H E L M T M P R O O T / HELM_TMP_ROOT/ HELMTMPROOT/HELM_DIST”

HELM_SUM_FILE=“ H E L M T M P R O O T / HELM_TMP_ROOT/ HELMTMPROOT/HELM_DIST.sha256”

echo “Downloading $DOWNLOAD_URL”

cp helm-v3.2.1* $HELM_TMP_ROOT

}

#3: 不让判断文件是否存在。

verifyChecksum() {

printf "Verifying checksum… "

local sum=$(openssl sha1 -sha256 ${HELM_TMP_FILE} | awk ‘{print $2}’)

local expected_sum=$(cat ${HELM_SUM_FILE})

echo “Done.”

}

  • 上面3项修改完毕以后呢,保存退出,并给x权限,然后执行该脚本

[root@master helm]# chmod +x get

[root@master helm]# ./get

Downloading https://get.helm.sh/helm-v3.2.1-linux-amd64.tar.gz

Verifying checksum… Done.

Preparing to install helm into /usr/local/bin

helm installed into /usr/local/bin/helm

[root@master helm]#

执行安装并检测与卸载说明


  • 上面呢helm就装完了【此时是不能使用tab的】

我们查看下版本,能出现版本内容就算安装成功

[root@master helm]# helm version

version.BuildInfo{Version:“v3.2.1”, GitCommit:“fe51cd1e31e6a202cba7dead9552a6d418ded79a”, GitTreeState:“clean”, GoVersion:“go1.13.10”}

[root@master helm]#

  • 上面安装的时候有提示将helm安装到这个路径

所以我们卸载呢就是删除掉该路径内容即可

helm installed into /usr/local/bin/helm

helm子命令使用teb操作


  • 方式1

前面我们的kubectl也是使用的 这种方式

[root@master helm]# cat /etc/profile | head -n 4

/etc/profile

source <(kubectl completion bash)

source <(helm completion bash) # 增加改行内容

[root@master helm]#

[root@master helm]# source /etc/profile

[root@master helm]#

[root@master helm]# hel

helm help

[root@master helm]# helm version

version.BuildInfo{Version:“v3.2.1”, GitCommit:“fe51cd1e31e6a202cba7dead9552a6d418ded79a”, GitTreeState:“clean”, GoVersion:“go1.13.10”}

[root@master helm]#

  • 方式2

上面做了就不能再用这个方式了。知道就行

[root@vms10 ~]# helm completion bash > ~/.helmrc

[root@vms10 ~]# echo “source ~/.helmrc” >> ~/.bashrc

[root@vms10 ~]#

[root@vms10 ~]# source .bashrc

[root@vms10 ~]#

helm仓库管理

=======================================================================

  • 因为这个玩意需要外网才能使用,而我的集群是没有外网的,所以下面只放文档,不做实验,这个其实不难,如果下面理解有难度,可以自行百度查阅困惑内容的相关资料。

配置国内helm源


  • 查看现在使用的仓库:

[root@vms10 ~]# helm repo list

Error: no repositories to show

[root@vms10 ~]#

  • 国内常用的仓库有:

  • 阿里云的源https://apphub.aliyuncs.com【建议用这个】

  • 微软azure 的源http://mirror.azure.cn/kubernetes/charts/

  • 添加仓库的语法:

helm repo add 名称地址

  • 下面把阿里云的源和azure 的源都添加过来:

[root@vms10 ~]# helm repo add azure http://mirror.azure.cn/kubernetes/charts/

“azure” has been added to your repositories

[root@vms10 ~]#

  • 这里是吧zaure 的源添加过来,命名为azure

[root@vms10 ~]# helm repo add ali https://apphub.aliyuncs.com

“ali” has been added to your repositories

[root@vms10 ~]#

  • 这里是把阿里云的源添加过来,命名为ali

查看现在正在使用的源:

[root@vms10 ~]# helm repo list

NAME URL

azure http://mirror.azure.cn/kubernetes/charts/

ali https://apphub.aliyuncs.com

[root@vms10 ~]#

部署应用【部署chart】


查询应用对应的chart

  • 如果我们要部署哪个应用就到仓库里查询这个应用对应的chart,假设我要部署redis

[root@vms10 ~]# mkdir helm

[root@vms10 ~]# cd helm/

[root@vms10 ~]#

[root@vms10 helm]# helm search repo redis

NAME CHART VERSION APP VERSION

DESCRIPTION

ali/prometheus-redis-exporter 3.2.2 1.3.4 Prometheus exporter

for Redis metrics

ali/redis 10.5.3 5.0.7 Open source,

azure/redis 10.5.7 5.0.7 DEPRECATED

[root@vms10 helm]#

部署MySQL为例

  • 下面开始部署MySQL

切换到ns5 命名空间进行操作

[root@vms10 helm]# kubectl create ns ns5

namespace/ns5 created

[root@vms10 helm]# kubens ns5

Context “kubernetes-admin@kubernetes” modified.

Active namespace is “ns5”.

[root@vms10 helm]#

  • 下面开始部署MySQL

通过helm pull 单独把chart 下载下来,如下:

[root@vms10 helm]# helm pull azure/mysql

[root@vms10 helm]# ls

mysql-1.6.4.tgz

[root@vms10 helm]#

  • 解压并进入到MySQL 目录,会有这么几个文件:

  • Chart.yaml 是chart 的描述信息

  • README.md 是此chart 的帮助信息

  • templates 目录里是各种模板,比如定义svc,定义pvc 等

  • values.yaml里记录的是chart 的各种信息,比如镜像是什么,root 密码是什么,是否使用持久性存储等

[root@vms10 helm]# cd mysql/

[root@vms10 mysql]# ls

Chart.yaml README.md templates values.yaml

[root@vms10 mysql]#

  • 编辑values.yaml 并按照如下修改

指定自己要使用的镜像,按如下修改【其实就是些创建pod规则,有很多内容,不需要的选项可以注释掉,具体哪些不需要,不同应用有不同的规则。】

在这里插入图片描述

  • 指定MySQL 的root 密码,注意这里前面不能留有空格:

在这里插入图片描述

  • 如果要创建普通用户和密码,就修改如下两行,这里我们没有指定

在这里插入图片描述

  • 是否要使用持久性存储,如果不使用的话就把enabled 的值改成false:

在这里插入图片描述

注意:可以用vim 编辑器搜索persistence。

  • 关于values.yaml 的其他部分保持默认值即可,保存退出

安装&删除mysql

  • 安装应用的命令为helm install 名字chart 目录

在当前目录里执行安装操作:

[root@vms10 mysql]# helm install db . #最后的点,表示当前目录

NAME: db

LAST DEPLOYED: Tue Jun 9 13:05:58 2020

NAMESPACE: ns5

STATUS: deployed

…大量输出…

Execute the following command to route the connection:

kubectl port-forward svc/db-mysql 3306

mysql -h M Y S Q L H O S T − P {MYSQL_HOST} -P MYSQLHOSTP{MYSQL_PORT} -u root -p${MYSQL_ROOT_PASSWORD}

[root@vms10 mysql]#

  • 查看现在已经部署的release 及pod

[root@vms10 mysql]# helm ls

NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION

db ns5 1 2020-06-0…T deployed mysql-1.6.4 5.7.30

[root@vms10 mysql]#

[root@vms10 mysql]# kubectl get pods

NAME READY STATUS RESTARTS AGE

db-mysql-84f68ddfdc-m6xgq 1/1 Running 0 92s

[root@vms10 mysql]#

  • 安装mariadb 客户端:

[root@vms10 mysql]# yum install mariadb -y

…输出…

作为依赖被升级:

mariadb-libs.x86_64 1:5.5.65-1.el7

完毕!

[root@vms10 mysql]#

  • 查看mysql pod 的IP:

[root@vms10 mysql]# kubectl get pods -o wide --no-headers

db-mysql-84f68ddfdc-m6xgq 1/1 Running 0 3m18s 10.244.14.41 …

[root@vms10 mysql]#

  • 用mysql 命令连接到此pod 上:

[root@vms10 mysql]# mysql -uroot -predhat -h10.244.14.41

Welcome to the MariaDB monitor. Commands end with ; or \g.

Your MySQL connection id is 48.

…输出…

MySQL [(none)]> quit

Bye

[root@vms10 mysql]#

  • 删除此release

[root@vms10 mysql]# helm delete db

release “db” uninstalled

[root@vms10 mysql]# helm ls

NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION

[root@vms10 mysql]#

搭建私有仓库

=====================================================================

pod创建【node节点操作】


  • 我们用nginx做测试【注意,这是在node节点操作的 】

首先需要确保本地80端口没有被占用,如果被占用,则先吧httpd服务停了【具体方法看下面占用解决方法】

  • 在vms12 上用nginx 镜像创建一个容器,名字为c1

[root@vms12 ~]# docker run -dit --name=c1 -p 8080:80 -v /data:/usr/share/nginx/html/charts

docker.io/nginx

ca08a2ce9b8e910ed71f458fa3c7dd53843bf50e5bb92c089fdacf7cd65a1657

[root@vms12 ~]#

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

2021年Java中高级面试必备知识点总结

在这个部分总结了2019年到目前为止Java常见面试问题,取其面试核心编写成这份文档笔记,从中分析面试官的心理,摸清面试官的“套路”,可以说搞定90%以上的Java中高级面试没一点难度。

本节总结的内容涵盖了:消息队列、Redis缓存、分库分表、读写分离、设计高并发系统、分布式系统、高可用系统、SpringCloud微服务架构等一系列互联网主流高级技术的知识点。

目录:

(上述只是一个整体目录大纲,每个点里面都有如下所示的详细内容,从面试问题——分析面试官心理——剖析面试题——完美解答的一个过程)

部分内容:

对于每一个做技术的来说,学习是不能停止的,小编把2019年到目前为止Java的核心知识提炼出来了,无论你现在是处于什么阶段,如你所见,这份文档的内容无论是对于你找面试工作还是提升技术广度深度都是完美的。

不想被后浪淘汰的话,赶紧搞起来吧,高清完整版一共是888页,需要的话可以点赞+关注
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!
备知识点总结

在这个部分总结了2019年到目前为止Java常见面试问题,取其面试核心编写成这份文档笔记,从中分析面试官的心理,摸清面试官的“套路”,可以说搞定90%以上的Java中高级面试没一点难度。

本节总结的内容涵盖了:消息队列、Redis缓存、分库分表、读写分离、设计高并发系统、分布式系统、高可用系统、SpringCloud微服务架构等一系列互联网主流高级技术的知识点。

目录:

[外链图片转存中…(img-9lHPyDBV-1712073556548)]

(上述只是一个整体目录大纲,每个点里面都有如下所示的详细内容,从面试问题——分析面试官心理——剖析面试题——完美解答的一个过程)

[外链图片转存中…(img-HnY7E7Jh-1712073556548)]

部分内容:

[外链图片转存中…(img-qB3CYctN-1712073556548)]

[外链图片转存中…(img-pxQf2zWd-1712073556549)]

[外链图片转存中…(img-6DvU6sXG-1712073556549)]

对于每一个做技术的来说,学习是不能停止的,小编把2019年到目前为止Java的核心知识提炼出来了,无论你现在是处于什么阶段,如你所见,这份文档的内容无论是对于你找面试工作还是提升技术广度深度都是完美的。

不想被后浪淘汰的话,赶紧搞起来吧,高清完整版一共是888页,需要的话可以点赞+关注
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值