微服务:kubernetes Helm与命名空间

郎家岭伯爵 2022年05月25日 436次浏览

背景

此前我们在kubernetes上部署应用都是通过自己编写yaml文件来实现的。那么能否通过类似DockerHub拉取镜像的操作,来快捷地部署常规的应用呢?

答案是肯定的。

kubernetes为我们提供了Helm的操作方式来快捷地部署应用,它也拥有自己的应用中心。它类似于npm、pip、DockerHub,可以理解为一个软件库,我们可以方便快速地为我们的集群安装一些第三方软件。

实现

安装Helm

官方文档

方式一:自动下载安装

安装命令:

curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash

注:

  • 此方式由于网络原因可能会一直卡在加载界面无法完成。此时我们提供了第二种方式进行手动下载安装。

方式二:手动下载安装

下载Helm包,或者大家可自行在GitHub下载指定版本。

# 解压Helm包
tar -zxvf helm-v3.9.0-linux-amd64.tar.gz

# 在解压目中找到helm程序,移动到需要的目录中
mv linux-amd64/helm /usr/local/bin/helm

Helm安装应用

安装软件源

helm repo add bitnami https://charts.bitnami.com/bitnami

安装MongoDB示例

简单安装

此案例未设置MongoDB的设置项。

helm install my-mongo bitnami/mongodb

设置参数安装:设置密码和架构

此案例设置了MongoDB的密码,以及集群架构。这种方式帮我们创建了副本集群以及数据持久盘(默认值可在官网找到)。

helm install my-mongo bitnami/mongodb --set architecture="replicaset",auth.rootPassword="mongopass"

查看密码:

kubectl get secret my-mongo-mongodb -o json

连接MongoDB数据库

临时运行一个包含 mongo client 的 debian 系统:

kubectl run mongodb-client --rm --tty -i --restart='Never' --image docker.io/bitnami/mongodb:4.4.10-debian-10-r20 --command -- bash

进入MongoDB:

# 进去 mongodb
mongo --host "my-mongo-mongodb" -u root -p mongopass

端口转发

端口转发可实现通过访问宿主机进而访问到MongoDB。

# 也可以转发集群里的端口到宿主机访问 mongodb
kubectl port-forward svc/my-mongo-mongodb 27017:27018

命名空间

如果一个集群中部署了多个应用,所有应用都在一起,就不太好管理,也可能导致名字冲突等。

我们可以使用namespace把应用划分到不同的命名空间,跟yaml文件里的namespace是一个概念,只是为了划分空间。

# 创建命名空间
kubectl create namespace testapp
# 部署应用到指定的命名空间
kubectl apply -f app.yml --namespace testapp
# 查询
kubectl get pod --namespace kube-system

可以用kubens快速切换namespace:

# 切换命名空间
kubens kube-system
# 回到上个命名空间
kubens -
# 切换集群
kubectx minikube

注:

  • kubens需要自行安装后才可以使用。

总结

本文介绍了通过Helm来快速地部署应用,Helm做好了一些需要设置的内容,我们只需要专注于使用即可。