k8s学习-第4部分Helm(Helm安装MySQL集群)

Helm安装MySQL集群(较为常用)

Helm简介

Helm 是一个 Kubernetes 应用的包管理工具,类似于 Ubuntu 的 APT 和 CentOS 中的 YUM。

Helm使用chart 来封装kubernetes应用的 YAML 文件,我们只需要设置自己的参数,就可以实现自动化的快速部署应用。

三大概念

  • Chart 代表着 Helm 包。
    • 它包含运行应用程序需要的所有资源定义和依赖,相当于模版。
    • 类似于maven中的pom.xml、Apt中的dpkb或 Yum中的RPM
  • Repository(仓库) 用来存放和共享 charts。
    • 不用的应用放在不同的仓库中。
  • Release 是运行 chart 的实例。

一个 chart 通常可以在同一个集群中安装多次。

每一次安装都会创建一个新的 release,release name不能重复。

Helm仓库

Helm有一个跟docker Hub类似的应用中心(Artifact Hub),我们可以在里面找到我们需要部署的应用。

安装Helm

下载安装包:

https://github.com/helm/helm/releases

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

tar -zxvf helm-v3.10.0-linux-amd64.tar.gz 
mv linux-amd64/helm /usr/local/bin/helm

在K3s中使用,需要配置环境变量

export KUBECONFIG=/etc/rancher/k3s/k3s.yaml

安装单节点Mysql

#添加仓库
helm repo add bitnami https://charts.bitnami.com/bitnami
#查看chart
helm show chart bitnami/mysql 
#查看默认值
helm show values bitnami/mysql 

#安装mysql
helm install my-mysql \
--set-string auth.rootPassword="123456" \
--set primary.persistence.size=2Gi \
bitnami/mysql

#查看设置
helm get values my-mysql
#删除mysql
helm delete my-release

values.yaml

auth:
  rootPassword: "123456"

primary:
  persistence:
    size: 2Gi
    enabled: true

secondary:
  # 从节点的数量
  replicaCount: 2
  persistence:
    size: 2Gi
    enabled: true
# 集群模式
architecture: replication
helm install my-db -f values.yaml bitnami/mysql

如果报下面的错是环境变量没弄好

Error: INSTALLATION FAILED: Kubernetes cluster unreachable: Get "http://localhost:8080/version": dial tcp [::1]:8080: connect: connection refused

解决方法

编辑/etc/profile

vim /etc/profile

追加内容:

export KUBECONFIG=/etc/rancher/k3s/k3s.yaml

刷新配置

source /etc/profile

 再次执行helm install my-db -f values.yaml bitnami/mysql

安装成功后将显示的一大堆英文复制出来

NAME: cluster
LAST DEPLOYED: Mon Dec 26 16:17:16 2022
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: mysql
CHART VERSION: 9.4.5
APP VERSION: 8.0.31

** Please be patient while the chart is being deployed **

Tip:

  Watch the deployment status using the command: kubectl get pods -w --namespace default

Services:

  echo Primary: cluster-mysql-primary.default.svc.cluster.local:3306
  echo Secondary: cluster-mysql-secondary.default.svc.cluster.local:3306

Execute the following to get the administrator credentials:

  echo Username: root
  MYSQL_ROOT_PASSWORD=$(kubectl get secret --namespace default cluster-mysql -o jsonpath="{.data.mysql-root-password}" | base64 -d)

To connect to your database:

  1. Run a pod that you can use as a client:

      kubectl run cluster-mysql-client --rm --tty -i --restart='Never' --image  docker.io/bitnami/mysql:8.0.31-debian-11-r20 --namespace default --env MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD --command -- bash

  2. To connect to primary service (read/write):

      mysql -h cluster-mysql-primary.default.svc.cluster.local -uroot -p"$MYSQL_ROOT_PASSWORD"

  3. To connect to secondary service (read-only):

      mysql -h cluster-mysql-secondary.default.svc.cluster.local -uroot -p"$MYSQL_ROOT_PASSWORD"

在依次执行

# 设置root密码环境变量
MYSQL_ROOT_PASSWORD=$(kubectl get secret --namespace default cluster-mysql -o jsonpath="{.data.mysql-root-password}" | base64 -d)

# 创建mysql客户端pod
kubectl run cluster-mysql-client --rm --tty -i --restart='Never' --image  docker.io/bitnami/mysql:8.0.31-debian-11-r20 --namespace default --env MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD --command -- bash

# 在pod中先连接主库
mysql -h cluster-mysql-primary.default.svc.cluster.local -uroot -p"$MYSQL_ROOT_PASSWORD"

# 创建test数据库和message的表 在表里放一条数据 hello

使用端口转发 用图形化工具连接mysql

kubectl port-forward --address=192.168.177.151 pods/cluster-mysql-primary-0 33060

这个命令是前台运行 关闭后就断开连接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值