HELM_DIST=“helm- T A G − TAG- TAG−OS-$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- TAG−OS-$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
- 方式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 ~]#
=======================================================================
- 因为这个玩意需要外网才能使用,而我的集群是没有外网的,所以下面只放文档,不做实验,这个其实不难,如果下面理解有难度,可以自行百度查阅困惑内容的相关资料。
- 查看现在使用的仓库:
[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,假设我要部署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 MYSQLHOST−P{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]#
=====================================================================
- 我们用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开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
![img](https://img-blog.csdnimg.cn/img_convert/b30e2a2104d378b09ad5f6d77f06463d.jpeg)
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面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门即可获取!