当前位置: 首页 > news >正文

北戴河网站建设做网页价格

北戴河网站建设,做网页价格,公司品牌的塑造网站建设,网站推广设计制作Helm 使用 Helm 是一个 k8s 应用的包管理工具#xff0c;类似于 Ubuntu 的 APT 和 CentOS 中的 YUM。 Helm 使用 chart 来封装 k8s 应用的 yaml 文件#xff0c;我们只需要设置自己的参数#xff0c;就可以实现自动化的快速部署应用。 Helm 通过打包的方式#xff0c;支…Helm 使用 Helm 是一个 k8s 应用的包管理工具类似于 Ubuntu 的 APT 和 CentOS 中的 YUM。 Helm 使用 chart 来封装 k8s 应用的 yaml 文件我们只需要设置自己的参数就可以实现自动化的快速部署应用。 Helm 通过打包的方式支持发布的版本管理和控制很大程度上简化了 k8s 应用的部署和管理。 Helm 有一个跟 docker Hub 类似的应用中心https://artifacthub.io/我们可以在里面找到我们需要部署的应用。 helm 概述 Helm 是一个流行的 k8s 包管理工具它用于简化在 k8s 上部署、管理和扩展应用程序的过程。Helm 允许用户定义可重复使用的 k8s 部署模板称为 “charts”并使用这些 charts 来创建、配置和管理 k8s 中的应用程序。 Helm 由两个核心组件组成 Helm Clienthelm这是与用户交互的命令行工具。用户可以使用 Helm Client 来搜索、安装、升级和删除 charts并管理 Helm Repositories存储 charts 的位置。 Tiller已弃用在 Helm 2.x 版本中Tiller 是 Helm 的服务端组件负责将 charts 渲染为 k8s 资源对象并将它们部署到 k8s 集群中。然而在 Helm 3.x 版本中Tiller 已被移除取而代之的是直接通过 Helm Client 与 k8s API 交互。 Helm 的主要优势在于它提供了模板化的部署方式使得应用程序的部署过程更加可重复和可管理。通过使用 Helm您可以轻松地创建自定义的 charts并轻松地在不同的环境中部署和管理应用程序从而提高了开发人员和运维人员的效率。 helm 优点 Helm 在 k8s 中具有许多优点以下是其中一些主要优点 简化部署和管理Helm 允许用户将应用程序打包为可重复使用的 charts简化了应用程序的部署和管理过程。通过使用 Helm用户可以轻松地创建、安装、升级和删除应用程序而无需手动处理底层的 k8s 资源对象。可重用的部署模板Helm Charts 是可重用的部署模板可以定义应用程序的整个部署配置包括容器、服务、配置文件、存储卷等。这样用户可以通过 Charts 快速创建和部署应用程序减少了编写和维护大量 YAML 文件的工作量。版本控制和回滚Helm 具备版本控制功能可以管理不同版本的 Charts 和应用程序。这使得用户可以轻松地进行升级、回滚和管理应用程序的不同版本提高了应用程序的可控性和可靠性。社区支持和生态系统Helm 是一个开源项目有一个活跃的社区支持和贡献。Helm 社区维护了一个官方的 Charts 仓库其中包含了大量常用的应用程序 Charts用户可以直接使用这些 Charts 来部署和管理应用程序。此外还有许多第三方 Charts 仓库可供选择扩展了 Helm 的功能和应用场景。可扩展性和灵活性Helm 具有良好的扩展性和灵活性用户可以根据自己的需求定制 Charts 和插件以满足特定的部署和管理需求。用户可以根据需要配置应用程序的各种参数和选项以适应不同的环境和场景。 总的来说Helm 提供了简化和标准化 k8s 应用程序部署和管理的解决方案使得用户能够更高效地进行应用程序的开发、部署和运维工作。 安装 helm 安装地址https://helm.sh/zh/docs/intro/install/ # 国内下载不了 curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash我们手动下载安装包 wget https://get.helm.sh/helm-v3.10.0-linux-amd64.tar.gz[rootk8s-master home]# ll total 14196 -rw-r--r-- 1 root root 14530566 Mar 27 04:05 helm-v3.10.0-linux-amd64.tar.gz drwxr-xr-x 2 root root 4096 Mar 27 02:31 k8s下载完成后解压 # 解压压缩包 [rootk8s-master home]# tar -zxvf helm-v3.10.0-linux-amd64.tar.gz linux-amd64/ linux-amd64/helm linux-amd64/LICENSE linux-amd64/README.md [rootk8s-master home]# cd linux-amd64/ [rootk8s-master linux-amd64]# ll total 43992 -rwxr-xr-x 1 3434 3434 45031424 Sep 22 2022 helm -rw-r--r-- 1 3434 3434 11373 Sep 22 2022 LICENSE -rw-r--r-- 1 3434 3434 3367 Sep 22 2022 README.md # 在解压目中找到helm程序移动到需要的目录中 [rootk8s-master linux-amd64]# mv helm /usr/local/bin # 出现以下版本信息代表安装成功 [rootk8s-master linux-amd64]# helm version version.BuildInfo{Version:v3.10.0, GitCommit:ce66412a723e4d89555dc67217607c6579ffcb21, GitTreeState:clean, GoVersion:go1.18.6}添加一个稳定仓库 # 添加稳定仓库 [rootk8s-master linux-amd64]# helm repo add bitnami https://charts.bitnami.com/bitnami bitnami has been added to your repositories # 验证仓库是否添加完成 [rootk8s-master linux-amd64]# helm repo list NAME URL bitnami https://charts.bitnami.com/bitnami三大概念 Chart 代表着 Helm 包。 它包含运行应用程序需要的所有资源定义和依赖相当于模版。类似于 maven 中的 pom.xml、Apt中的 dpkb 或 Yum 中的 RPM。 Repository仓库用来存放和共享 charts。 不用的应用放在不同的仓库中。 Release 是运行 chart 的实例。 一个 chart 通常可以在同一个集群中安装多次。 每一次安装都会创建一个新的 releaserelease name 不能重复。 下载一个 mysql 来启动 helm 的仓库中心https://artifacthub.io/相当于 docker hub 进入这个页面搜索 mysql里面有下载的命令以及配置参数的详细信息 下载命令容器名为my-mysql helm install my-mysql bitnami/mysql参数 --set后面跟 keyvalue 的格式用于配置使用容器的一些参数key 在页面中有详细介绍--version指定容器的 charts 的版本默认是最新版 接下来我们下载一个 mysql 玩玩 helm install my-mysql --set-string auth.rootPassword123456 bitnami/mysql[rootk8s-master linux-amd64]# helm install my-mysql --set-string auth.rootPassword123456 bitnami/mysql NAME: my-mysql LAST DEPLOYED: Wed Mar 27 04:24:17 2024 NAMESPACE: default STATUS: deployed REVISION: 1 TEST SUITE: None NOTES: CHART NAME: mysql CHART VERSION: 10.1.0 APP VERSION: 8.0.36# helm安装项目之后它会帮我们生成一个详细的使用文档 ** Please be patient while the chart is being deployed **Tip:Watch the deployment status using the command: kubectl get pods -w --namespace default# 在k8s网络中如何访问该服务 Services:echo Primary: my-mysql.default.svc.cluster.local:3306Execute the following to get the administrator credentials:echo Username: rootMYSQL_ROOT_PASSWORD$(kubectl get secret --namespace default my-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 my-mysql-client --rm --tty -i --restartNever --image docker.io/bitnami/mysql:8.0.36-debian-12-r8 --namespace default --env MYSQL_ROOT_PASSWORD$MYSQL_ROOT_PASSWORD --command -- bash2. To connect to primary service (read/write):mysql -h my-mysql.default.svc.cluster.local -uroot -p$MYSQL_ROOT_PASSWORDWARNING: There are resources sections in the chart not set. Using resourcesPreset is not recommended for production. For production installations, please set the following values according to your workload needs:- primary.resources- secondary.resources info https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/它的本质是在我们的 k8s 集群上启动了一个 pod [rootk8s-master ~]# kubectl get pod NAME READY STATUS RESTARTS AGE my-mysql-1 1/1 Running 0 3m14s # stafulset类型的可以部署有状态应用。 # **Release** 是运行 chart 的实例。 [rootk8s-master ~]# helm ls NAME NAMESPACE REVISION UPDATED STATUS CHART APP my-mysql default 1 2024-3-27 13:38:53.228239944 0800 CST deployed mysql-10.1.0 8.0.36 探究 helm [rootk8s-master k8s]# helm create hello-world Creating hello-world [rootk8s-master k8s]# cd hello-world/ [rootk8s-master hello-world]# ll total 16 drwxr-xr-x 2 root root 4096 Mar 27 04:44 charts # 当前我们创建的这个charts是否依赖与其他的charts如果有就在这里面 -rw-r--r-- 1 root root 1147 Mar 27 04:44 Chart.yaml # charts信息 drwxr-xr-x 3 root root 4096 Mar 27 04:44 templates # k8s 资源文件 模版 {{ 插值 }} -rw-r--r-- 1 root root 1878 Mar 27 04:44 values.yaml # 具体的值 [rootk8s-master hello-world]# cd templates/ [rootk8s-master templates]# ll total 32 -rw-r--r-- 1 root root 1856 Mar 27 04:44 deployment.yaml -rw-r--r-- 1 root root 1822 Mar 27 04:44 _helpers.tpl -rw-r--r-- 1 root root 928 Mar 27 04:44 hpa.yaml -rw-r--r-- 1 root root 2087 Mar 27 04:44 ingress.yaml -rw-r--r-- 1 root root 1763 Mar 27 04:44 NOTES.txt -rw-r--r-- 1 root root 328 Mar 27 04:44 serviceaccount.yaml -rw-r--r-- 1 root root 373 Mar 27 04:44 service.yaml drwxr-xr-x 2 root root 4096 Mar 27 04:44 tests本质里面就是一堆 k8s 的资源文件helm 启动这个 charts相当于帮我们执行了 apply -f 我们可以检测这个 chart 是否有问题 helm lint charts目录# 检测 charts 包是否有问题 [rootk8s-master ~]# helm lint ./hello-world/Linting ./hello-world/ [INFO] Chart.yaml: icon is recommended1 chart(s) linted, 0 chart(s) failed这样就是没有问题 将 Helm Charts 渲染为 k8s 资源对象的 yaml 文件而不进行实际的部署操作 helm template charts包名这个命令非常有用可以方便地查看 Charts 的最终生成结果 [rootk8s-master k8s]# helm template hello-world/ --- # Source: hello-world/templates/serviceaccount.yaml apiVersion: v1 kind: ServiceAccount metadata:name: release-name-hello-worldlabels:helm.sh/chart: hello-world-0.1.0app.kubernetes.io/name: hello-worldapp.kubernetes.io/instance: release-nameapp.kubernetes.io/version: 1.16.0app.kubernetes.io/managed-by: Helm --- # Source: hello-world/templates/service.yaml apiVersion: v1 kind: Service metadata:name: release-name-hello-worldlabels:helm.sh/chart: hello-world-0.1.0app.kubernetes.io/name: hello-worldapp.kubernetes.io/instance: release-nameapp.kubernetes.io/version: 1.16.0app.kubernetes.io/managed-by: Helm spec:type: ClusterIPports:- port: 80targetPort: httpprotocol: TCPname: httpselector:app.kubernetes.io/name: hello-worldapp.kubernetes.io/instance: release-name --- # Source: hello-world/templates/deployment.yaml apiVersion: apps/v1 kind: Deployment metadata:name: release-name-hello-worldlabels:helm.sh/chart: hello-world-0.1.0app.kubernetes.io/name: hello-worldapp.kubernetes.io/instance: release-nameapp.kubernetes.io/version: 1.16.0app.kubernetes.io/managed-by: Helm spec:replicas: 1selector:matchLabels:app.kubernetes.io/name: hello-worldapp.kubernetes.io/instance: release-nametemplate:metadata:labels:app.kubernetes.io/name: hello-worldapp.kubernetes.io/instance: release-namespec:serviceAccountName: release-name-hello-worldsecurityContext:{}containers:- name: hello-worldsecurityContext:{}image: nginx:1.16.0imagePullPolicy: IfNotPresentports:- name: httpcontainerPort: 80protocol: TCPlivenessProbe:httpGet:path: /port: httpreadinessProbe:httpGet:path: /port: httpresources:{} --- # Source: hello-world/templates/tests/test-connection.yaml apiVersion: v1 kind: Pod metadata:name: release-name-hello-world-test-connectionlabels:helm.sh/chart: hello-world-0.1.0app.kubernetes.io/name: hello-worldapp.kubernetes.io/instance: release-nameapp.kubernetes.io/version: 1.16.0app.kubernetes.io/managed-by: Helmannotations:helm.sh/hook: test spec:containers:- name: wgetimage: busyboxcommand: [wget]args: [release-name-hello-world:80]restartPolicy: Never安装 [rootk8s-master k8s]# helm install helloworld hello-world/ NAME: helloworld LAST DEPLOYED: Wed Mar 27 04:56:06 2024 NAMESPACE: default STATUS: deployed REVISION: 1 NOTES: 1. Get the application URL by running these commands:export POD_NAME$(kubectl get pods --namespace default -l app.kubernetes.io/namehello-world,app.kubernetes.io/instancehelloworld -o jsonpath{.items[0].metadata.name})export CONTAINER_PORT$(kubectl get pod --namespace default $POD_NAME -o jsonpath{.spec.containers[0].ports[0].containerPort})echo Visit http://127.0.0.1:8080 to use your applicationkubectl --namespace default port-forward $POD_NAME 8080:$CONTAINER_PORT可以直接通过仓库找到 charts 来安装 也可以自己编写 charts 包来安装git 下载 charts helm 部署 mysql 主从复制集群 https://artifacthub.io/packages/helm/bitnami/mysql 安装过程中有两种方式传递配置数据 -f (或--values)使用 yaml 文件覆盖默认配置。可以指定多次优先使用最右边的文件。--set通过命令行的方式对指定项进行覆盖。 auth:rootPassword: 123456primary:persistence:size: 2Gienabled: truesecondary:replicaCount: 2persistence:size: 2Gienabled: truearchitecture: replication如果同时使用两种方式则 --set中的值会被合并到 -f中但是 --set中的值优先级更高。 主从复制原理 通过部署无头服务Headless Service将写操作指向固定的数据库。 部署一个 Service 用来做读操作的负载均衡。 数据库之间通过同步程序保持数据一致。 初始化容器Init Containers 初始化容器Init Containers是一种特殊容器它在 Pod 内的应用容器启动之前运行。 初始化容器未执行完毕或以错误状态退出Pod 内的应用容器不会启动。 初始化容器需要在 initContainers 中定义与 containers 同级。 基于上面的特性初始化容器通常用于 生成配置文件执行初始化命令或脚本执行健康检查检查依赖的服务是否处于 Ready 或健康 Health 的状态 这里有两个初始化容器。 init-mysql为 MySQL 实例分配server-id并将mysql-0的配置文件设置为primary.cnf其他副本设置为replica.cnfclone-mysql从前一个Pod中获取备份的数据文件放到自己的数据目录下 边车 Sidecar Pod 中运行了2个容器MySQL 容器和一个充当辅助工具的 xtrabackup 容器我们称之为边车sidecar。 Xtrabackup 是一个开源的 MySQL 备份工具支持在线热备份备份时不影响数据读写是目前各个云厂商普遍使用的 MySQL 备份工具。 sidecar容器负责将备份的数据文件发送给下一个Pod并在副本服务器初次启动时使用数据文件完成数据的导入。 MySQL 使用bin-log同步数据但是当数据库运行一段时间后产生了一些数据这时候如果我们进行扩容创建了一个新的副本有可能追溯不到bin-log的源头(可能被手动清理或者过期自动删除)因此需要将现有的数据导入到副本之后再开启数据同步sidecar只负责数据库初次启动时完成历史数据导入后续的数据 MySQL 会自动同步。 补充端口转发临时暴露服务 [rootk8s-master ~]# kubectl get all NAME READY STATUS RESTARTS AGE pod/my-db-mysql-primary-0 1/1 Running 0 15m pod/my-db-mysql-secondary-0 1/1 Running 0 15m pod/my-db-mysql-secondary-1 1/1 Running 0 13m pod/nginx 1/1 Running 1 (invalid ago) 91mNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/kubernetes ClusterIP 10.96.0.1 none 443/TCP 4d17h service/my-db-mysql-primary ClusterIP 10.96.140.100 none 3306/TCP 15m service/my-db-mysql-primary-headless ClusterIP None none 3306/TCP 15m service/my-db-mysql-secondary ClusterIP 10.96.64.24 none 3306/TCP 15m service/my-db-mysql-secondary-headless ClusterIP None none 3306/TCP 15mNAME READY AGE statefulset.apps/my-db-mysql-primary 1/1 15m statefulset.apps/my-db-mysql-secondary 2/2 15m [rootk8s-master ~]# kubectl port-forward pods/my-db-mysql-primary-0 --address192.168.0.111 33060:3306 Forwarding from 192.168.0.111:33060 - 3306 Handling connection for 33060 Handling connection for 33060这个命令是前台命令退出后端口转发就失效了。常用来做测试。
http://www.pierceye.com/news/834996/

相关文章:

  • 接网站开发项目万网网站后台登陆
  • 江苏网站建站系统平台生存曲线哪个网站可以做
  • 国内产品网站w源码1688index网站制作
  • 韩国网站域名网站推广是干嘛的
  • 怎样查询江西省城乡建设厅网站互联网行业简介
  • 芜湖网站建设推广网站开发者 地图
  • 保养车哪个网站做的好电商网站建设目的及网站的优势
  • 文化馆建设网站上海建设银行官网网站
  • 微信分销网站建设垂直网站建设步骤
  • 网站建设招聘简介应届生求职网站官网
  • 驾校网站建设中国建设银行信用卡中心网站
  • 网站开发中的文档代理网络是什么意思
  • 如何不让百度收录网站网页设计教程文字和图片
  • 深圳网站建设公司哪家最好WordPress文章查询插件
  • 用于网站开发的语言北京专业做网站推广
  • 美工免费素材网站淘宝客cms建站教程
  • 平板上做网站的软件涂料网站建设
  • 做网站导航的wordpress自由度
  • 怎样建外贸网站步骤的英文
  • 网站网上商城建设网站上线详细步骤
  • 有那些网站可以做推广长沙公司排名
  • 怎样申请做p2p融资网站北京做网站一般多少钱
  • 建筑公司网站作用ASP.NET实用网站开发答案
  • 网站建设如何获取客户东莞网络营销销售
  • 郑州平台类网站自建房平面图设计软件
  • 昆明网站运营公司有哪些网页版微信登录二维码
  • 中国最权威的网站排名网上商店系统设计与开发
  • 自己做装修网站需要多少钱太仓建设网站
  • 湘潭做网站电话磐石网络龙岩kk社区
  • 重庆孝爱之家网站建设哪里可以做期货网站平台