kubernetes集群编排(9)

目录

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.mfbz.cn/a/125275.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

WebGL智慧城市软件项目

WebGL开发智慧城市项目时&#xff0c;需要考虑多个方面&#xff0c;包括技术、隐私、安全和可持续性。以下是一些需要注意的关键问题&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1.隐私和数据安全…

通过docker-compose部署elk日志系统,并使用springboot整合

ELK是一种强大的分布式日志管理解决方案&#xff0c;它由三个核心组件组成&#xff1a; Elasticsearch&#xff1a;作为分布式搜索和分析引擎&#xff0c;Elasticsearch能够快速地存储、搜索和分析大量的日志数据&#xff0c;帮助用户轻松地找到所需的信息。 Logstash&#xf…

​【错误解决方案】ModuleNotFoundError: No module named ‘ahocorasick‘

1. 错误提示 ModuleNotFoundError: No module named ahocorasick&#xff0c;这意味着你试图导入一个名为 ahocorasick的模块&#xff0c;但Python找不到这个模块 2. 解决方案 安装缺失的模块: 如果你确定模块名称正确但仍然收到这个错误&#xff0c;那么可能是你没有安装这个…

2023年CCF非专业级别软件能力认证第二轮 (CSP-S)提高级C++语言试题

2023年CCF非专业级别软件能力认证第二轮 &#xff08;CSP-S&#xff09;提高级C语言试题 编程题第 1 题 问答题 密码锁&#xff08;lock&#xff09; 题目描述 小Y有一把五个拨圈的密码锁。如图所示&#xff0c;每个拨圈上是从0到9的数字。每个拨圈都是从0到9的循环&#xf…

OmniFocus Pro for Mac(GTD时间管理软件) OmniFocus Mac版

OmniFocus Pro 3 for Mac 中文激活版是一款功能强大且灵活的 GTD 时间管理工具&#xff0c;可为您提供无干扰的环境&#xff0c;帮助您可以轻松地从邮件&#xff0c;消息&#xff0c;Safari 和任何其他第三方应用程序中安排任务&#xff0c;编写备注和剪辑信息。您可以快速轻松…

【OJ比赛日历】快周末了,不来一场比赛吗? #11.11-11.17 #12场

CompHub[1] 实时聚合多平台的数据类(Kaggle、天池…)和OJ类(Leetcode、牛客…&#xff09;比赛。本账号会推送最新的比赛消息&#xff0c;欢迎关注&#xff01; 以下信息仅供参考&#xff0c;以比赛官网为准 目录 2023-11-11&#xff08;周六&#xff09; #5场比赛2023-11-12…

kubernetes集群编排——k8s调度

nodename vim nodename.yaml apiVersion: v1 kind: Pod metadata:name: nginxlabels:app: nginxspec:containers:- name: nginximage: nginxnodeName: k8s2 nodeName: k8s2 #找不到节点pod会出现pending&#xff0c;优先级最高 kubectl apply -f nodename.yamlkubectl get pod …

uniapp踩坑之项目:隐藏显示密码功能

1.input组件的password设置为动态前面加:冒号&#xff1b; 2.动态切换眼睛图标使用:style //html <view> 密码&#xff1a;<input placeholder"请输入密码" :password"openPassword" type"text" placeholder-style"color:#e2e2e2;…

C++ 图解二叉树非递归中序 + 实战力扣题

leetCode 94.二叉树的中序遍历 94. 二叉树的中序遍历 - 力扣&#xff08;LeetCode&#xff09; 算法思路&#xff1a; 总结&#xff1a; 对中序遍历这个例子进行总结&#xff0c;找出打印“中”节点的时刻&#xff0c;来寻找本质。打印的是一棵二叉树的“中”节点&#xff0c…

53基于matlab的Tamura纹理特征提取

基于matlab的Tamura纹理特征提取&#xff0c;包括粗糙度、对比度、方向度、线性度、规则度、粗糙度六种&#xff0c;可替换自己的数据进行特征提取。程序已调通&#xff0c;可直接运行。 53 方向度、线性度、规则度 (xiaohongshu.com)

线性代数(五) | 矩阵对角化 特征值 特征向量

文章目录 1 矩阵的特征值和特征向量究竟是什么&#xff1f;2 求特征值和特征向量3 特征值和特征向量的应用4 矩阵的对角化 1 矩阵的特征值和特征向量究竟是什么&#xff1f; 矩阵实际上是一种变换,是一种旋转伸缩变换&#xff08;方阵&#xff09; 不是方阵的话还有可能是一种…

【Docker安装RockeMQ:基于Windows宿主机,并重点解决docker rocketMQ安装情况下控制台无法访问的问题】

拉取镜像 docker pull rocketmqinc/rocketmq创建网络 docker network create rocketmq-net构建namesrv容器 docker run -d -p 9876:9876 -v D:/dockerFile/rocketmq/namesrv/logs:/root/logs -v D:/dockerFile/rocketmq/namesrv/store:/root/store --network rocketmq-net -…

面试10000次依然会问的【线程池】,你还不会?

线程池的基本概念 线程池是一种基于池化技术的线程使用方式&#xff0c;它允许我们有效地管理和复用线程&#xff0c;减少线程的创建和销毁的开销&#xff0c;从而提高系统的响应速度。在Java中&#xff0c;线程池的管理主要通过ThreadPoolExecutor类来实现。 线程池的定义与…

【Python】AppUI自动化—appium自动化开发环境部署、APP测试案例(17)上

文章目录 一.appium简介1.什么是appium2.appium 的工作原理3.APP类型4.APP页面布局 二,appium开发环境部署&#xff08;python环境&#xff09;1.下载安装环境1.1.下载安装所需环境1.2.Appium-desktop&#xff08; Appium-Server-GUI &#xff09;配置1.3.Appium-Inspector 配置…

Python堆栈详细介绍

概要 虽然一些数据结构是通用的并且可以在广泛的应用中使用&#xff0c;但其他数据结构是专门化的并且被设计用于处理特定问题。堆栈就是这样一种专门的结构&#xff0c;以其简单性和非凡的实用性而闻名。 那么&#xff0c;什么是栈呢&#xff1f;从本质上讲&#xff0c;堆栈…

web3通过antd 在React dapp中构建订单组件基本结构

上文web3 dapp React项目引入 antd 对 balance 用户token信息组件进行样式改造 中 我们导入 antd组件 算是比较完整的编写了用户资产组件 那么 今天开始 我们就要说订单组件了 这个就会比之前的复杂很多 我们还是先开环境 ganache 终端执行 ganache -d然后 将合约 发布到区块链…

使用promise创建一个同步事件驱动api

使用promise创建一个同步事件驱动api 事件驱动体系结构(EDA)是一种强大的方法&#xff0c;可以在网络上构建松散耦合、性能好、可伸缩的应用程序。它支持非常多功能&#xff0c;如推送通知、协作编辑和多人操作&#xff0c;以及其他实时交互。 但有时模型与我们开发人员需要的…

【树的存储结构,孩子链表】

文章目录 树和森林树的存储结构孩子链表 树和森林 森林&#xff1a;是m(m>0)棵互不相交的树的集合。 树的存储结构 1.双亲表示法 实现&#xff1a;定义结构数组存放树的结点&#xff0c;每个结点含两个域。 数据域&#xff1a;存放结点本身信息。 双亲域&#xff1a;指…

虚假内容检测,谣言检测,不实信息检测,事实核查;纯文本,多模态,多语言;数据集整理

本博客系博主个人理解和整理所得&#xff0c;包含内容无法详尽&#xff0c;如有补充&#xff0c;欢迎讨论。 这里只提供数据集相关介绍和来源出处&#xff0c;或者下载地址等&#xff0c;因版权原因不提供数据集所含的元数据。如有需要&#xff0c;请自行下载。 “Complete d…

亚马逊云科技海外服务器初体验

目录 前言亚马逊云科技海外服务器概述注册使用流程实例创建性能表现用户体验服务支持初体验总结 前言 随着云原生技术的飞速发展&#xff0c;越来越多的企业和开发者选择云服务器来作为自己的使用工具&#xff0c;云原生技术的发展也促进了云服务厂商的产品发展&#xff0c;所…