kubernetes集群编排(9)

news2024/11/26 12:36:59

目录

helm

部署helm

封装chart包

上传chart到OCI仓库

部署wordpress博客系统

helm部署storageclass

helm部署ingress-nginx

helm部署metrics-server

kubeapps

更新


helm

部署helm

官网: Helm | 快速入门指南

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

[root@k8s2 ~]# tar zxf helm-v3.11.0-linux-amd64.tar.gz
[root@k8s2 ~]# cd linux-amd64/
[root@k8s2 linux-amd64]# mv helm  /usr/local/bin/

配置helm命令补齐

[root@k8s2 ~]# echo "source <(helm completion bash)" >> ~/.bashrc
[root@k8s2 ~]# source ~/.bashrc
[root@k8s2 ~]# helm version

查询官方应用中心

[root@k8s2 ~]# helm search hub nginx

添加第三方repo源

[root@k8s2 ~]# helm repo add my-repo https://charts.bitnami.com/bitnami
"my-repo" has been added to your repositories
[root@k8s2 ~]# helm  repo  list

拉取应用

[root@k8s2 helm]# helm  pull my-repo/nginx
[root@k8s2 helm]# tar zxf nginx-13.2.29.tgz
[root@k8s2 helm]# cd nginx/

按需修改

[root@k8s2 nginx]# vim values.yaml

上传镜像

[root@k8s1 ~]# docker pull bitnami/nginx:1.23.3-debian-11-r33
[root@k8s1 ~]# docker tag bitnami/nginx:1.23.3-debian-11-r33 reg.westos.org/bitnami/nginx:1.23.3-debian-11-r33
[root@k8s1 ~]# docker push reg.westos.org/bitnami/nginx:1.23.3-debian-11-r33

部署应用

[root@k8s2 nginx]# helm  install myapp .

再次修改配置

[root@k8s2 nginx]# vim values.yaml

更新应用

[root@k8s2 nginx]# helm upgrade myapp .

查看应用

[root@k8s2 nginx]# helm list

查看应用历史

[root@k8s2 helm]# helm  history myapp

回滚应用

[root@k8s2 nginx]# helm  rollback myapp 1

回收

[root@k8s2 helm]# helm uninstall myapp

封装chart包

[root@k8s2 helm]# helm  create mychart        //创建一个名为mychart的Helm chart

[root@k8s2 mychart]# vim Chart.yaml        //元数据文件

[root@k8s2 mychart]# vim values.yaml        //默认配置文件

检测语法

[root@k8s2 helm]# helm lint mychart/        //检测语法
[root@k8s2 helm]# helm package mychart/            //打包
[root@k8s2 helm]# helm install  myapp mychart-0.1.0.tgz        //部署应用
[root@k8s2 helm]# helm  list            //列出当前安装的所有Helm chart
[root@k8s2 helm]# helm uninstall myapp            //回收

 

测试

更新

查看历史、回滚

上传chart到OCI仓库

复制仓库证书

[root@k8s2 helm]# cp /etc/docker/certs.d/reg.westos.org/ca.crt /etc/pki/tls/certs/

登录仓库

[root@k8s2 helm]# helm  registry login reg.westos.org -u admin -p shg12345

查看默认缓存信息

[root@k8s2 helm]# helm env

提前在harbor仓库创建charts项目,这个仓库专门存放chart包

上传chart

helm  push mychart-0.2.0.tgz oci://reg.westos.org/charts

下载chart,默认下载最新版本

helm pull oci://reg.westos.org/charts/mychart		
helm pull oci://reg.westos.org/charts/mychart --version 0.2.0

安装chart

helm install myapp oci://reg.westos.org/charts/mychart  --version 0.2.0

升级

helm upgrade  myapp oci://reg.westos.org/charts/mychart --version 0.3.0

部署wordpress博客系统

部署mysql数据库集群

vim mysql-values.yaml
global:
  imageRegistry: reg.westos.org
architecture: replication
auth:
  rootPassword: westos
  database: wordpress
  username: wordpress
  password: wordpress
  replicationUser: replicator
  replicationPassword: westos

helm install --wait mydbcluster -f mysql-values.yaml mysql-9.14.2.tgz

查看部署信息

helm  get manifest mydbcluster |kubectl get -f -

连接数据库

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

kubectl run mydbcluster-mysql-client --rm --tty -i --restart='Never' --image  reg.westos.org/bitnami/mysql:8.0.35-debian-11-r0 --namespace default --env MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD --command -- bash

连接主库

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

连接从库

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

部署wordpress

vim wordpress-values.yaml
global:
  imageRegistry: reg.westos.org
wordpressUsername: james
wordpressPassword: james
mariadb:
  enabled: false
externalDatabase:
  host: mydbcluster-mysql-primary
  user: wordpress
  password: wordpress
  database: wordpress

helm  install myblog -f wordpress-values.yaml wordpress-18.1.6.tgz

等待myblog初始化完毕

kubectl logs  myblog-wordpress-*  -f

获取myblog 外部IP

helm get manifest  myblog |kubectl get -f -

使用浏览器访问wordpress

http://EXTERNAL-IP/admin

登录用户、密码: james/james

升级mydbcluster

vim mysql-values-update.yaml
global:
  imageRegistry: reg.westos.org
architecture: replication
auth:
  rootPassword: westos
  database: wordpress
  username: wordpress
  password: wordpress
  replicationUser: replicator
  replicationPassword: westos
secondary:
  replicaCount: 2

helm upgrade --atomic --timeout 10m mydbcluster -f mysql-values-update.yaml mysql-9.14.2.tgz

查看历史修订

helm  history  mydbcluster
helm get manifest mydbcluster --revision 1

回滚版本

helm  rollback mydbcluster 1
helm  history  mydbcluster

helm部署storageclass

删除原有的部署

[root@k8s2 nfs]# ls
class.yaml  deployment.yaml  pod.yaml  pvc.yaml  rbac.yaml
[root@k8s2 nfs]# kubectl delete  -f .

添加repo

[root@k8s2 helm]# helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/

[root@k8s2 ~]# helm search  repo nfs-subdir-external-provisioner

[root@k8s2 helm]# helm  pull nfs-subdir-external-provisioner/nfs-subdir-external-provisioner
[root@k8s2 helm]# tar zxf nfs-subdir-external-provisioner-4.0.18.tgz
[root@k8s2 helm]# cd nfs-subdir-external-provisioner/
[root@k8s2 nfs-subdir-external-provisioner]# vim values.yaml

创建namespace

[root@k8s2 nfs-subdir-external-provisioner]# kubectl create namespace nfs-provisioner

部署应用

[root@k8s2 nfs-subdir-external-provisioner]# helm  install nfs-provisioner . -n nfs-provisioner

方法二

[root@k8s2 helm]#vim nfs-client-values.yaml
image:
  repository: sig-storage/nfs-subdir-external-provisioner
  tag: v4.0.2
nfs:
  server: 192.168.81.10
  path: /nfsdata
storageClass:
  defaultClass: true
  reclaimPolicy: Delete
  archiveOnDelete: false

kubectl create namespace nfs-provisioner
helm  -n nfs-provisioner install nfs-client --wait -f charts/values/nfs-client-values.yaml nfs-subdir-external-provisioner/nfs-subdir-external-provisioner --version 4.0.18

测试

[root@k8s2 nfs]# kubectl apply -f pvc.yaml
[root@k8s2 nfs]# kubectl get pvc

helm部署ingress-nginx

回收原有部署

[root@k8s2 ingress]# kubectl delete  -f deploy.yaml
[root@k8s2 helm]# helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
[root@k8s2 ~]# helm search repo ingress-nginx
[root@k8s2 helm]# helm  pull ingress-nginx/ingress-nginx
[root@k8s2 helm]# tar zxf ingress-nginx-4.8.3.tgz
[root@k8s2 helm]# cd ingress-nginx/
[root@k8s2 ingress-nginx]# vim values.yaml

创建namespace

[root@k8s2 ingress-nginx]# kubectl create namespace ingress-nginx

部署应用

[root@k8s2 ingress-nginx]# helm  install ingress-nginx . -n ingress-nginx

方法二 

vim ingress-nginx-values.yaml
controller:
  image:
    registry: reg.westos.org
    image: ingress-nginx/controller
    tag: "v1.9.4"
    digest: ""
    digestChroot: ""
  ingressClassResource:
    name: nginx
    default: true
  service:
    type: LoadBalancer
  admissionWebhooks:
    patch:
      image:
        registry: reg.westos.org
        image: ingress-nginx/kube-webhook-certgen
        tag: v20231011-8b53cabe0
        digest: ""

kubectl create namespace ingress-nginx
helm  -n ingress-nginx install ingress-nginx -f ingress-nginx-values.yaml ingress-nginx-4.8.3.tgz
helm -n ingress-nginx get manifest ingress-nginx |kubectl get -f -

测试

helm部署metrics-server

回收原有部署

[root@k8s2 metrics]# kubectl delete  -f components.yaml

[root@k8s2 helm]# helm repo add metrics-server 
[root@k8s2 dashboard]# helm  search repo metrics-server
[root@k8s2 helm]# helm  pull metrics-server/metrics-server
[root@k8s2 helm]# tar zxf metrics-server-3.8.4.tgz
[root@k8s2 helm]# cd metrics-server
[root@k8s2 metrics-server]# vim values.yaml

创建namespace

[root@k8s2 metrics-server]# kubectl create namespace metrics-server

部署应用

[root@k8s2 metrics-server]# helm  install metrics-server . -n metrics-server

方法二:

vim metrics-server-values.yaml
image:
  repository: metrics-server/metrics-server
  tag: "v0.6.4"
defaultArgs:
  - --cert-dir=/tmp
  - --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
  - --kubelet-use-node-status-port
  - --metric-resolution=15s
  - --kubelet-insecure-tls


kubectl create namespace metrics-server
helm -n metrics-server install metrics-server -f charts/values/metrics-server-values.yaml metrics-server-3.11.0.tgz

kubeapps

更新

上传镜像

vim kubeapps-values.yaml
global:
  imageRegistry: reg.westos.org
ingress:
  enabled: true
  hostname: kubeapps.westos.org
  ingressClassName: nginx
postgresql:
  primary:
    persistence:
      enabled: true
redis:
  master:
    persistence:
      enabled: true

kubectl create namespace kubeapps
helm  -n kubeapps install kubeapps -f kubeapps-values.yaml kubeapps-14.0.2.tgz

kubectl -n kubeapps edit svc kubeapps

kubectl create serviceaccount kubeapps-operator -n kubeapps
kubectl create clusterrolebinding kubeapps-operator --clusterrole=cluster-admin --serviceaccount=kubeapps:kubeapps-operator
kubectl -n kubeapps create token kubeapps-operator

用token访问192.168.81.102

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1190777.html

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

相关文章

2022年06月 Python(四级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python等级考试(1~6级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 有如下Python程序,包含lambda函数,运行该程序后,输出的结果是?( ) g = lambda x,y:x*y print(g(2,3)

理解RNN以及模型搭建代码

RNN结构 这是一张不直观易懂的RNN结构示意图。但也是大家见得最多结构示意图。 RNN模型解释 RNN一文就讲解清楚的博客&#xff0c;看这里&#xff1a;https://zhuanlan.zhihu.com/p/408998328 RNN为什么梯度消失和梯度爆炸&#xff0c;看这里&#xff1a;https://zhuanlan.z…

隧道技术的三种应用场景(IPv6,多播,VPN)

目录 1.IPv6的隧道技术 2.多播路由选择 (1)洪泛 (2)隧道技术 (3)基于核心的发现技术 3.隧道技术实现&#xff08;VPN&#xff09;虚拟专用网 1.IPv6的隧道技术 IPv6与IPv4的过渡技术中包含了IPv6的隧道技术&#xff1a; http://t.csdnimg.cn/wuvXY 2.多播路由选择 转发…

Redis数据类型之List类型

文章目录 简介常用命令赋值语法LPUSHRPUSHLPUSHXRPUSHX 取值语法LLENLINDEXLRANGE 删除语法LPOPRPOPBLPOPBRPOPLTRIMLREM 修改语法LSETLINSERT 高级命令RPOPLPUSH 应用场景 简介 List类型是一个链表结构的集合&#xff0c;其主要功能有push&#xff0c;pop&#xff0c;获取元素…

2023中国互联网公司排行榜!

日前&#xff0c;中国互联网协会正式发布《中国互联网企业综合实力指数&#xff08;2023&#xff09;》报告&#xff0c;同时还发布了2023年中国互联网综合实力前百家企业榜单、2023年中国互联网成长型前二十家企业和数据安全服务前五家企业名单。 总体来看&#xff0c;我国互…

C/C++特殊求和 2021年6月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析

目录 C/C幻数求和 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 C/C幻数求和 2021年6月 C/C编程等级考试一级编程题 一、题目要求 1、编程实现 如果一个数能够被7整除或者十进制表示中含有数字7&…

已解决:云原生领域的超时挂载Bug — Kubernetes深度剖析

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

尼得科电机的强大性能,将列车门和屏蔽门的开合变得从容而安全

城市脉动&#xff0c;人流涌动。 无论城市轨道交通还是远途铁路运输&#xff0c; 尼得科电机的强大性能&#xff0c;将列车门和屏蔽门的开合变得从容而安全。 尼得科的电机方案&#xff0c;有助于列车门稳准开闭&#xff0c;保障乘客安全无忧。高效驱动&#xff0c;让乘客的行程…

VUE获取当前日期的周日和周六

<template><div><div click"handleLast()">上一周</div><div click"handleNext()">下一周</div><el-calendarref"monChild"v-model"value":first-day-of-week"7":range"[sta…

iis 部署 netcore 和vue 共用端口

常规情况下&#xff0c;vue 和api是分开的两个站点进行部署&#xff0c;若是要对外只有一个端口的话&#xff0c;采用以下梁总方式即可。 1.需要配置路由转发和代理开启&#xff08;vue 使用hisoty模式&#xff09; 参考链接.netCore vue&#xff08;history模式&#xff0…

线性代数(六)| 二次型 标准型转换 正定二次型 正定矩阵

文章目录 1. 二次型化为标准型1.1 正交变换法1.2 配方法 2 . 正定二次型与正定矩阵 1. 二次型化为标准型 和第五章有什么样的联系 首先上一章我们说过对于对称矩阵&#xff0c;一定存在一个正交矩阵Q&#xff0c;使得$Q^{-1}AQB $ B为对角矩阵 那么这一章中&#xff0c;我们…

IBM Qiskit量子机器学习速成(一)

声明&#xff1a;本篇笔记基于IBM Qiskit量子机器学习教程的第一节&#xff0c;中文版译文详见&#xff1a;https://blog.csdn.net/qq_33943772/article/details/129860346?spm1001.2014.3001.5501 概述 首先导入关键的包 from qiskit import QuantumCircuit from qiskit.u…

暴力递归转动态规划(十四)

题目 arr是面值数组&#xff0c;其中的值都是正数且没有重复。再给定一个正数aim。 每个值都认为是一种面值&#xff0c;且认为张数是无限的。 返回组成aim的最少货币数 暴力递归 依然是面值张数的问题&#xff0c;暴力递归尝试的过程是从数组arr index 0位置出发&#xff0c…

mongodb导出聚合查询的数据

❗️❗️❗️在正文之前先要讲一个坑&#xff0c;就是mongoexport这个命令工具不支持导出聚合查询的数据&#xff0c;比如通过某某字段来分组 我查了一天关于mongoexport怎么来导出聚合查询的结果集&#xff0c;最终还是gpt给了我答案 &#x1f62d; 既然mongoexport不支持&…

Postgresql数据类型-布尔类型

前面介绍了PostgreSQL支持的数字类型、字符类型、时间日期类型&#xff0c;这些数据类型是关系型数据库的常规数据类型&#xff0c;此外PostgreSQL还支持很多非常规数据类型&#xff0c;比如布尔类型、网络地址类型、数组类型、范围类型、json/jsonb类型等&#xff0c;从这一节…

微信的通讯录联系人,有没有什么办法导出来做备份

6-10 这是可以做到的&#xff0c;并且很简单&#xff0c;对于需要把微信通讯录备份出来&#xff0c;或者离职交接的人来说&#xff0c;本文非常适合阅读&#xff0c;只是一个简单的方法&#xff0c;即可快速地把微信的通讯录搞出来&#xff0c;本质其实就是使用正确的工具就行…

Capacitor 插件 实现本地通知 Local Notification @capacitor/local-notifications

Capacitor 插件 实现本地通知 Local Notification capacitor/local-notifications 在前一个文章中使用 Capacitor 和 H5 应用构建了一个 Android 应用&#xff0c;这个 h5 是通过 uniapp 生成的。 https://blog.csdn.net/KimBing/article/details/134093769 这个应用的构成是这…

微机原理3

一、单项选择题(本大题共15小题,每小题3分,共45分。在每小题给出的四个备选项中,选出一个正确的答案。 1. 在机器数中&#xff0c;零的表示形式唯一的编码是() A. 原码 B. 补码 C.移码 D. 反码 2,用于定义常数、变量的内存空间分配和定位的是()。 A. 伪指令 B.机器指令…

(C++17) variant的使用与union对比

文章目录 前言与需求union内存映射图C11的union 使用ref示例构造普通构造置空emplacemonostate 访问std::get<>std::holds_alternative<>获取指针std::get_if<>获取可选数量个数std::variant_size END 前言与需求 联合体&#xff0c;是在C语言时代就存在的概…

『亚马逊云科技产品测评』活动征文|AWS 云服务器实例类型及其适用场景详细说明

授权声明&#xff1a;本篇文章授权活动官方亚马逊云科技文章转发、改写权&#xff0c;包括不限于在 Developer Centre, 知乎&#xff0c;自媒体平台&#xff0c;第三方开发者媒体等亚马逊云科技官方渠道 目录 一、AWS 定价计算器 &#xff08;1&#xff09;定价计算器官网 &…