K8S实战 - 如何在kubernetes中安装软件

news2025/8/3 21:54:30

如何在kubernetes中安装软件

1、编写脚本安装

通过编写yaml文件,执行kubectl apply -f 可以安装软件
编写yaml的时候注意事项:

  1. pod的类型(deployment、statefulset等)
  2. 端口的定义(service)
  3. 配置文件的定义(configmap、secret)
  4. 存储的定义(host、PVC)
  5. ingress的定义,微服务需要用到

参考如下脚本(mysql-pvc.yaml mysql安装脚本):

## 定义PV
apiVersion: v1
kind: PersistentVolume
metadata: # PV建立不要加名称空间,因为PV属于集群级别的
  name: mysql-pv # PV名称
spec: # 这里的spec和volumes里面的一样
  storageClassName: manual # 类的名称
  accessModes: # 用于定义资源的访问方式
    - ReadWriteOnce # 可读可写
  capacity: # 设置存储空间大小
    storage: 1Gi
  persistentVolumeReclaimPolicy: Recycle # 回收策略
  hostPath:
    ## 绑定在node上的位置
    path: /data/mysql-data
---
## 定义mysql的pvc,同时申领资源
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-pv   
  namespace: default
spec:
  storageClassName: manual
  accessModes: # PVC也需要定义访问模式,不过它的模式一定是和现有PV相同或者是它的子集,否则匹配不到PV
    - ReadWriteOnce
  resources: # 定义资源要求PV满足这个PVC的要求才会被匹配到
    requests:
      storage: 1Gi # 定义要求有多大空间
---
## 定义创建mysql并部署
apiVersion: apps/v1
kind: Deployment # 副本控制器RC
metadata:
  name: mysql-pvc #RC 的名称,全局唯一
  namespace: default # 默认空间
spec:
  replicas: 1 #Pod 副本的期待数量
  selector:
    matchLabels:
      app: mysql-pvc # 符合目标的Pod拥有此标签
  template: # 根据此模版创建Pod的副本
    metadata:
      labels:
        app: mysql-pvc # Pod副本拥有的标签,对应RC的Selector
    spec:
      containers: # Pod的内容的定义部分
        - name: mysql-pvc # 容器的名称
          image: mysql # 容器对应的Docker Image
          ports:
            - containerPort: 3306 # 容器应用监听的端口号
          env:
            - name: MYSQL_ROOT_PASSWORD # 设置mysql的初始化密码
              value: "123456" # 设置mysql的初始化密码
          volumeMounts:
            - name: mysql-data
              mountPath: /var/lib/mysql
      volumes:
        - name: mysql-data
          persistentVolumeClaim: #引用的模式
            claimName: mysql-pv #引用到的pvc动态创建的名字
---
apiVersion: v1
kind: Service # 表明是Kubernetes Service
metadata:
  name: mysql-pvc # Service 的全局唯一名称
spec:
  type: NodePort
  selector:
    app: mysql-pvc
  ports: # Service 提供服务的端口
    - port: 3306 # Service 对应的Pod拥有这里定义的标签

这个里面主要定义,PV、PVC、Deployment、Service等信息,主要说明安装mysql、安装mysql的位置、配置及端口,通过执行kubectl apply -f mysql-pvc.yaml安装mysql。

2、通过kubebiz安装软件

写脚本实际上对我们来说还是有一定的门槛的,而且这个试错成本也比较高。为此我找到了这个网站https://www.kubebiz.com/。这里面有很多软件,这个网站为大部分软件都直接创建好了脚本,可以直接使用的。

  1. 输入网址https://www.kubebiz.com/进入
    在这里插入图片描述
    可以看到里面有很多软件信息,如mysql、mongodb、jenkins、redis等,下面还有分页显示,足足有23页,每页显示10条,记录了大部分使用的软件,右边有搜索栏可以进行搜索。
  2. 点击进入mysql查看配置信息
    在这里插入图片描述
    以上点击mysql进入的页面,在这个网页上面,可以选择kubernetes的版本,查看脚本内容。
  3. 执行脚本
    我们copy出来mysql的执行脚本,可以把脚本都粘贴到一起,然后在脚本上修改一下,比如:namesapce、nodeport等等一些信息。
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-mysql
  namespace: my-space
spec:
  replicas: 1
  selector:
    matchLabels:
      app: my-mysql
  template:
    metadata:
      labels:
        app: my-mysql
    spec:
      containers:
        - name: my-mysql
          image: "mysql:8.0.30"
          imagePullPolicy: IfNotPresent
          env:
            - name: MYSQL_ROOT_PASSWORD
              value: root
            - name: MYSQL_USER
              value: test
            - name: MYSQL_PASSWORD
              value: test
          ports:
            - containerPort: 3306
              protocol: TCP
              name: http
          volumeMounts:
            - name: my-mysql-data
              mountPath: /var/lib/mysql
            - name: mysql-conf
              mountPath: /etc/mysql/mysql.conf.d
      volumes:
        - name: mysql-conf
          configMap:
            name: mysql-conf
        - name: my-mysql-data
          persistentVolumeClaim:
            claimName: my-mysql-data
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: mysql-conf
  namespace: my-space
data:
  mysql.cnf: |
    [mysqld]

     pid-file        = /var/run/mysqld/mysqld.pid
     socket          = /var/run/mysqld/mysqld.sock
     datadir         = /var/lib/mysql
     
     symbolic-links=0
     sql-mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
---
apiVersion: v1
kind: Service
metadata:
  name: mysql-export
  namespace: my-space
spec:
  type: NodePort
  selector:
    app: my-mysql
  ports:
    - port: 3306
      targetPort: 3306
      nodePort: 32306
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: my-mysql-data
  namespace: my-space
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 5Gi

命名一下文件名称mysql-kube.yaml,然后执行kubectl apply -f mysql-kube.yaml,之后在kubernetes中查看是否创建成功。

3、通过kubeapp安装软件

kubeapps是一个kubernetes端的应用商店,但是首先要安装kubeapps到k8s中,然后通过kubeapps安装软件,我直接把如何安装kubeapps在下面描述一下,具体如何安装软件,可以到平台里面查看,这个就不细说了,类似安装应用一样。

下面是通过访问主页获取的安装信息

Step 1: Install Kubeapps (for demo purposes)

  helm repo add bitnami https://charts.bitnami.com/bitnami
  helm install -n kubeapps --create-namespace kubeapps bitnami/kubeapps

以上是通过helm安装kubeapps,首先添加源信息,然后开始安装kubeapps

Step 2: Create a demo credential with which to access Kubeapps and Kubernetes

  kubectl create --namespace default serviceaccount kubeapps-operator
  kubectl create clusterrolebinding kubeapps-operator --clusterrole=cluster-admin --serviceaccount=default:kubeapps-operator

  cat <<EOF | kubectl apply -f -
  apiVersion: v1
  kind: Secret
  metadata:
    name: kubeapps-operator-token
    namespace: default
    annotations:
      kubernetes.io/service-account.name: kubeapps-operator
  type: kubernetes.io/service-account-token
  EOF
    
  kubectl get --namespace default secret kubeapps-operator-token -o go-template='{{.data.token | base64decode}}'

安装好之后创建serviceaccount,执行加密配置存储token信息,然后通过 kubectl get获取token登录

Step 3: Start the Kubeapps Dashboard

  kubectl port-forward -n kubeapps svc/kubeapps 8080:80

通过port-forward可以映射外部访问端口8080,然后在浏览器输入http://localhost:8080进入Kubeapps控制台登陆页,然后输入token信息就可以直接登录Kubeapps应用商店,就可以安装应用了。

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

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

相关文章

艾美捷Cholesterol胆固醇功效和参数说明

胆固醇又称胆甾醇。一种环戊烷多氢菲的衍生物。其溶解性与脂肪类似&#xff0c;不溶于水&#xff0c;易溶于乙-醚、氯-仿等溶剂。胆固醇是动物组织细胞所不可缺少的重要物质&#xff0c;它不仅参与形成细胞膜&#xff0c;而且是合成胆汁酸&#xff0c;维生素D以及甾体激素的原料…

[附源码]计算机毕业设计JAVA公益劳动招募管理系统

[附源码]计算机毕业设计JAVA公益劳动招募管理系统 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM my…

漏洞深度分析|Apache MINA SSHD反序列化漏洞

项目介绍 Apache MINA SSHD 是一个 100% 纯 java 库&#xff0c;支持客户端和服务器端的 SSH 协议。它的目的不是要替代 Unix 操作系统中的 SSH 客户端或 SSH 服务器&#xff0c;而是为需要 SSH 支持的基于 Java 的应用程序提供支持。 该库可以利用多个 I/O 后端&#xff1a; …

最小二乘法在ISP CCM标定中的简介

一、基础知识 假设我们有16幅名人脸部灰度图像&#xff0c;我们是否可以找到16幅脸部图像的线性组合&#xff0c;使得其线性组合最接近于目标脸部图像呢&#xff1f; 名人库我们知道灰度图像可以用矩阵表示。假设有如下灰度图。 我们可以用矩阵表示为&#xff1a; 我们也可以用…

Python机器学习16——相关向量机(RVM)

本系列基本不讲数学原理&#xff0c;只从代码角度去让读者们利用最简洁的Python代码实现机器学习方法。 背景介绍 学机器学习的应该都知道支持向量机&#xff08;SVM&#xff09;&#xff0c;这个方法在深度学习兴起之前算是很热门的分类方法&#xff0c;在机器学习里面&#…

Go: 通过Fiber构建微服务

文章目录简介1. 微服务2. Fiber&#xff1f;Fiber集成及使用1.安装fiber2. 简单使用3.简单实例小结简介 1. 微服务 微服务或微服务架构是一种体系结构风格&#xff0c;可以将应用程序构建成一个服务的集合&#xff1a; Maintainable 可维修Testable 可测试的Loosely coupled…

毫米波雷达基础知识系列——FFT

毫米波雷达基础知识系列——FFT及DSP优化实现FFT来源FFT为什么快FFT的种类基2FFT推导FFT来源 FFT来源于DFT离散傅里叶变换&#xff0c;DFT的计算公式为&#xff1a; X(k)∑n0N−1x(n)WNknX(k) \sum_{n0}^{N-1} x(n)W_{N}^{kn} X(k)n0∑N−1​x(n)WNkn​ 为什么不直接用DFT计算…

【 java 常用类】日期相关 API 操作

&#x1f4cb; 个人简介 &#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是阿牛&#xff0c;全栈领域优质创作者。&#x1f61c;&#x1f4dd; 个人主页&#xff1a;馆主阿牛&#x1f525;&#x1f389; 支持我&#xff1a;点赞&#x1f44d;收藏⭐️留言&#x1f4d…

ZYNQ之FPGA学习----MMCM/PLL IP核使用实验

1 MMCM/PLL IP核介绍 PLL 的英文全称是 Phase Locked Loop&#xff0c;即锁相环&#xff0c;是一种反馈控制电路。PLL 对时钟网络进行系统级的时钟管理和偏移控制&#xff0c;具有时钟倍频、分频、相位偏移和可编程占空比的功能 Xilinx 7 系列器件中的时钟资源包含了时钟管理…

Kata3.0.0 x LifseaOS x 龙蜥内核三管齐下!带你体验最新的安全容器之旅

文/云原生SIG 北京时间 2022 年 10 月 10 日&#xff0c;袋鼠 RunD 安全容器&#xff08;Rust Kata runtime Dragonball VMM&#xff09;正式作为安全容器上游 Kata Container 3.0.0 release 版本的重要特性发布。 龙蜥体验包 安全容器作为龙蜥云原生重要项目&#xff0c;我…

EEG微状态预测并发fMRI动态功能连接状态

前言 静息态功能磁共振成像(rs-fMRI)测量的大脑功能连接在多个时间尺度上有所不同&#xff0c;并确定了循环的动态功能连接(dFC)状态。这些发现与不同的认知和病理状态有关&#xff0c;有可能作为疾病的生物标志物&#xff0c;但它们的神经基础仍然存在争议。在静息态EEG研究中…

docker常见问题汇总(持续更新中)

Docker pull 时报错如下&#xff1a; -bash-4.2# docker pull hub.yj.com/test/dep_client:test Error response from daemon: Get http://hub.yj.com/v2/: dial tcp: lookup hub.yj.com on 218.2.135.1:53: server misbehaving如下图&#xff1a; 原因解析&#xff1a; 本地…

【算法系列】非线性最小二乘-高斯牛顿法

系列文章目录 【算法系列】卡尔曼滤波算法 【算法系列】非线性最小二乘求解-直接求解法 【算法系列】非线性最小二乘求解-梯度下降法 【算法系列】非线性最小二乘-高斯牛顿法 文章目录 系列文章 文章目录 前言 一、牛顿法 二、高斯-牛顿法 1.由牛顿法推导 2.直接展…

深度学习入门(四十三)计算机视觉——锚框

深度学习入门&#xff08;四十三&#xff09;计算机视觉——锚框前言计算机视觉——锚框课件锚框IoU交并比赋予锚框符号使用非极大值抑制&#xff08;NMS&#xff09;输出总结教材1 生成多个锚框2 交并比&#xff08;IoU&#xff09;3 在训练数据中标注锚框3.1 将真实边界框分配…

UE5笔记【二】添加实体和材质。后处理体积影响全局和局部。

材质 将平面赋予材质&#xff0c;显示不同的样式和纹理。 除了拖拽方式&#xff1a;还可以下拉列表的方式选择。 添加实例对象 可以添加引擎中关于room的内容&#xff0c;使得上一篇中所讲内容&#xff0c;更加直白查看。比如光影。 构造一个场景。 后处理体积 用途&#xff…

显示控件——半圆进度条

该控件是指定一个图标&#xff08;半圆条&#xff09;&#xff0c;通过沿圆弧方向滑动实现视觉调节的效果。滑动范围对应变量地址数据&#xff0c;显示位置通过变量设定。可以配合“半圆进度条触控”触摸控件进行设置。 位置信息&#xff1a;控件在工程页面区域的位置 “X”“Y…

基于Java Web的汽车租赁系统的设计与实现

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下&#xff0c;你想解决的问…

本地环境OPC数据读写模拟[Python3+OpenOPC+MatrikonOPCSimulation]

在win10本地环境下&#xff0c;通过python3和OpenOPC包与MatrikonOPCServer进行读写交互&#xff0c;模拟工厂数据读写 Python3 第一个坑&#xff0c;64位的Python似乎是和后面的OpenOPC不兼容&#xff0c;装了调用会出类似"OpenOPC.OPCError: Dispatch: 没有注册类"…

全球电子商务交易预计将在2022年假日季增长15%,消费者情绪乐观

• 感恩节到网购星期一之间的电子商务交易预计将增长10%• 新冠疫情限制措施解除后&#xff0c;旅游和票务行业持续保持强劲增长• 受通货膨胀与库存有限的共同影响&#xff0c;2022年的零售销售与2021年相比略显疲软• 欺诈者瞄准电子产品、旅游和活动等高价值品类&#xff0c…

Libuv实现帧率控制

Libuv实现帧率控制 概念 服务端帧率控制&#xff0c;保证在一段固定的时间内执行完所有事情&#xff08;包括网络I/O等&#xff09;&#xff0c;如果有空余时间&#xff0c;那么我们Sleep等待一段时间。如果超时我们需要追帧。 注意点 只要在程序中只有一个进程的情况下控制服…