K8S实战 - 如何在kubernetes中安装软件
创始人
2024-04-09 23:36:47

如何在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: 1GipersistentVolumeReclaimPolicy: Recycle # 回收策略hostPath:## 绑定在node上的位置path: /data/mysql-data
---
## 定义mysql的pvc,同时申领资源
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: mysql-pv   namespace: default
spec:storageClassName: manualaccessModes: # PVC也需要定义访问模式,不过它的模式一定是和现有PV相同或者是它的子集,否则匹配不到PV- ReadWriteOnceresources: # 定义资源要求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的Selectorspec:containers: # Pod的内容的定义部分- name: mysql-pvc # 容器的名称image: mysql # 容器对应的Docker Imageports:- containerPort: 3306 # 容器应用监听的端口号env:- name: MYSQL_ROOT_PASSWORD # 设置mysql的初始化密码value: "123456" # 设置mysql的初始化密码volumeMounts:- name: mysql-datamountPath: /var/lib/mysqlvolumes:- name: mysql-datapersistentVolumeClaim: #引用的模式claimName: mysql-pv #引用到的pvc动态创建的名字
---
apiVersion: v1
kind: Service # 表明是Kubernetes Service
metadata:name: mysql-pvc # Service 的全局唯一名称
spec:type: NodePortselector:app: mysql-pvcports: # 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-mysqlnamespace: my-space
spec:replicas: 1selector:matchLabels:app: my-mysqltemplate:metadata:labels:app: my-mysqlspec:containers:- name: my-mysqlimage: "mysql:8.0.30"imagePullPolicy: IfNotPresentenv:- name: MYSQL_ROOT_PASSWORDvalue: root- name: MYSQL_USERvalue: test- name: MYSQL_PASSWORDvalue: testports:- containerPort: 3306protocol: TCPname: httpvolumeMounts:- name: my-mysql-datamountPath: /var/lib/mysql- name: mysql-confmountPath: /etc/mysql/mysql.conf.dvolumes:- name: mysql-confconfigMap:name: mysql-conf- name: my-mysql-datapersistentVolumeClaim:claimName: my-mysql-data
---
apiVersion: v1
kind: ConfigMap
metadata:name: mysql-confnamespace: my-space
data:mysql.cnf: |[mysqld]pid-file        = /var/run/mysqld/mysqld.pidsocket          = /var/run/mysqld/mysqld.sockdatadir         = /var/lib/mysqlsymbolic-links=0sql-mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
---
apiVersion: v1
kind: Service
metadata:name: mysql-exportnamespace: my-space
spec:type: NodePortselector:app: my-mysqlports:- port: 3306targetPort: 3306nodePort: 32306
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: my-mysql-datanamespace: my-space
spec:accessModes:- ReadWriteManyresources: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/bitnamihelm 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-operatorkubectl create clusterrolebinding kubeapps-operator --clusterrole=cluster-admin --serviceaccount=default:kubeapps-operatorcat <{.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应用商店,就可以安装应用了。

相关内容

热门资讯

最新或2023(历届)四川旅游... 四川旅游学院是四川省人民政府主办的全日制普通本科高校。学校坚持“应用型、特色化、开放式”的办学理念,...
最新或2023(历届)四川民族... 四川民族学院是一所省属全日制普通本科院校,学校位于情歌的故乡四川省康定市姑咱镇,由原康定民族师范高等...
最新或2023(历届)玉林师范... 玉林师范学院坐落在著名的语言学家王力故乡、中国优秀旅游城市、广西东南部的千年古城玉林市,占地面积17...
最新或2023(历届)广西艺术... 广西艺术学院位于广西壮族自治区首府南宁市,是全国6所综合性普通本科高等艺术院校之一,最新或2023(...
最新或2023(历届)广西民族... 学校创办于 1952 年3月,原为中央民族学院(今中央民族大学)广西分院,1953 年改称广西省民族...