云原生|kubernetes|centos下安装部署kubeapps以及简单的使用示例(一)

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
简介: 云原生|kubernetes|centos下安装部署kubeapps以及简单的使用示例

前言:


kubeapps是Bitnami公司的一个项目,其目的是为Kubernetes的使用者们提供已经打包好的应用仪表盘,它拥有网页界面可以更方便的部署和管理k8s 原生应用。

包含绝大多数的云原生应用管理应用-部署,删除,升级以及修改配置服务目录-(Service Catalog)是一种扩展api,它能让 Kubernetes 集群中运行的应用易于使用外部托管的的软件服务,例如云供应商提供的数据仓库服务。

说了这么多,其实估计很多同学还是云山雾罩的,OK,宝塔面板大家应该都知道的吧,可以把kubeapps想象成这个玩意----kubernetes里的宝塔面板,只是这个“面板”管理的是chart包而已了。

部署安装kubeapps


一,

kubeapps的部署比较简单,基本也就是几条命令就搞定了。主要是有一些先决条件,例如,helm包管理器这个 不用说肯定要有,如何安装helm就不在这里废话了。

添加helm的官方仓库:

# 添加 kubeapps 仓库
helm repo add bitnami https://charts.bitnami.com/bitnami
# 创建 kubeapps 的命名空间
kubectl create namespace kubeapps

此时,可以查询到现有helm仓库一个(名字是bitnami,前面定义的):

[root@k8s-master ~]# helm repo list
NAME    URL                               
bitnami https://charts.bitnami.com/bitnami

查询此仓库内所有的关于redis的chart(helm search repo  仓库名称/要查询的chart  -l  如果没有l,只显示最新的那个chart):

[root@k8s-master kubeapps]# helm search repo bitnami/redis  -l 
NAME                  CHART VERSION APP VERSION DESCRIPTION                                       
bitnami/redis         17.3.5        7.0.5       Redis(R) is an open source, advanced key-value ...
bitnami/redis         17.3.4        7.0.5       Redis(R) is an open source, advanced key-value ...
bitnami/redis         17.3.2        7.0.5       Redis(R) is an open source, advanced key-value ...
bitnami/redis         17.3.1        7.0.5       Redis(R) is an open source, advanced key-value ...
bitnami/redis         17.2.0        7.0.5       Redis(R) is an open source, advanced key-value ...
。。。。。。略略略

查询此仓库内所有的关于kubeapps的chart(helm search repo  仓库名称/要查询的chart  -l  如果没有l,只显示最新的那个chart):

[root@k8s-master kubeapps]# helm search repo bitnami/kubeapps  -l 
NAME              CHART VERSION APP VERSION DESCRIPTION                                       
bitnami/kubeapps  11.0.1        2.6.0       Kubeapps is a web-based UI for launching and ma...
bitnami/kubeapps  10.3.5        2.5.1       Kubeapps is a web-based UI for launching and ma...
bitnami/kubeapps  10.3.4        2.5.1       Kubeapps is a web-based UI for launching and ma...
bitnami/kubeapps  10.3.3        2.5.1       Kubeapps is a web-based UI for launching and ma...
bitnami/kubeapps  10.3.1        2.5.0       Kubeapps is a web-based UI for launching and ma...

考虑到我的kubernetes集群版本是1.18,因此,挑选了一个不是版本太高的kubeapps---kubeapps-8.0.9,下载此chart包,并进入解压后的目录:

[root@k8s-master kubeapps]# helm pull bitnami/kubeapps --version=8.0.9

查看chart包内的README.MD文件中的先决条件:

kubernetes版本必须大于1.16,安装方式不限定,比如,minikube什么的都支持。

helm版本必须大于3.0.2.。

pgsql需要有pv插件支持,也就是volume插件。因此,需要一个默认的StorageClass,如何部署StorageClass请看我的博客:

kubernetes学习之持久化存储StorageClass(4)_晚风_END的博客-CSDN博客_kubernetes中用于持久化存储的组件

我的kubernetes版本是1.18.3,helm版本是3.2,因此,我可以安装kubeapps-8.0.9版本。

[root@k8s-master ~]# k get no
NAME         STATUS   ROLES    AGE   VERSION
k8s-master   Ready    <none>   15d   v1.18.3
k8s-node1    Ready    <none>   15d   v1.18.3
k8s-node2    Ready    <none>   15d   v1.18.3
[root@k8s-master ~]# helm version
version.BuildInfo{Version:"v3.2.4", GitCommit:"0ad800ef43d3b826f31a5ad8dfbb4fe05d143688", GitTreeState:"clean", GoVersion:"go1.13.12"}

下面是chart里面的README里的先决条件原文:

## Prerequisites
- Kubernetes 1.16+ (tested with both bare-metal and managed clusters, including EKS, AKS, GKE and Tanzu Kubernetes Grid, as well as dev clusters, such as Kind, Minikube and Docker for Desktop Kubernetes)
- Helm 3.0.2+
- Administrative access to the cluster to create Custom Resource Definitions (CRDs)
- PV provisioner support in the underlying infrastructure (required for PostgreSQL database)

二,OK,以上的先决条件搞定了就可以安装了,安装命令为:


# 安装
helm install kubeapps --namespace kubeapps kubeapps-8.0.9.tgz --version=8.0.9

安装时间根据网速来,可能会比较长,因为镜像都是从docker.io 官网下载的,安装完毕后的kubeapps相关的pod,service,configMap,serviceaccount,pv,pvc:

相关pods和service

[root@k8s-master ~]# k get po,svc -n kubeapps
NAME                                                             READY   STATUS      RESTARTS   AGE
pod/apprepo-kubeapps-sync-bitnami-1666098000-gr5ql               0/1     Completed   0          24h
pod/apprepo-kubeapps-sync-bitnami-1666098600-n5txd               0/1     Completed   0          24h
pod/apprepo-kubeapps-sync-bitnami-1666099200-js2nw               0/1     Completed   0          23h
pod/apprepo-kubeapps-sync-bitnami-hxm68-pgmk4                    0/1     Completed   2          5h28m
pod/kubeapps-67887978f5-vcbmh                                    1/1     Running     1          25h
pod/kubeapps-67887978f5-xsx7c                                    1/1     Running     2          25h
pod/kubeapps-internal-apprepository-controller-6d84d4d78-b2cjc   1/1     Running     1          25h
pod/kubeapps-internal-dashboard-84875db4c5-jdmmt                 1/1     Running     1          25h
pod/kubeapps-internal-dashboard-84875db4c5-zsrcl                 1/1     Running     1          25h
pod/kubeapps-internal-kubeappsapis-65c55c5c86-5kpq6              1/1     Running     1          25h
pod/kubeapps-internal-kubeappsapis-65c55c5c86-tjsw7              1/1     Running     1          25h
pod/kubeapps-internal-kubeops-bb7899866-kh8vx                    1/1     Running     1          25h
pod/kubeapps-internal-kubeops-bb7899866-sqk9p                    1/1     Running     1          25h
pod/kubeapps-postgresql-primary-0                                1/1     Running     1          25h
pod/kubeapps-postgresql-read-0                                   1/1     Running     2          25h
pod/mydokuwiki-79477dbcf7-hqk74                                  1/1     Running     0          5h9m
NAME                                     TYPE           CLUSTER-IP     EXTERNAL-IP   PORT(S)                      AGE
service/kubeapps                         NodePort       10.0.214.168   <none>        80:31637/TCP                 25h
service/kubeapps-internal-dashboard      NodePort       10.0.175.52    <none>        8080:31171/TCP               25h
service/kubeapps-internal-kubeappsapis   ClusterIP      10.0.17.79     <none>        8080/TCP                     25h
service/kubeapps-internal-kubeops        ClusterIP      10.0.80.30     <none>        8080/TCP                     25h
service/kubeapps-postgresql-primary      ClusterIP      10.0.49.36     <none>        5432/TCP                     25h
service/kubeapps-postgresql-primary-hl   ClusterIP      None           <none>        5432/TCP                     25h
service/kubeapps-postgresql-read         ClusterIP      10.0.126.247   <none>        5432/TCP                     25h
service/kubeapps-postgresql-read-hl      ClusterIP      None           <none>        5432/TCP                     25h
service/mydokuwiki                       LoadBalancer   10.0.184.105   <pending>     80:30403/TCP,443:30783/TCP   5h9m

pv和pvc

[root@k8s-master ~]# k get pv,pvc -n kubeapps
NAME                                                        CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                                         STORAGECLASS          REASON   AGE
persistentvolume/pvc-1e943d44-d92d-4210-a52a-5f9b0143bbc7   8Gi        RWO            Delete           Bound    kubeapps/data-kubeapps-postgresql-primary-0   managed-nfs-storage            25h
persistentvolume/pvc-c2a706ee-e9a0-4db1-b9e5-3f4d6a0d21ea   8Gi        RWO            Delete           Bound    kubeapps/mydokuwiki                           managed-nfs-storage            5h10m
persistentvolume/pvc-e75f653e-cbef-460d-bb68-e791f552bfc7   8Gi        RWO            Delete           Bound    kubeapps/data-kubeapps-postgresql-read-0      managed-nfs-storage            25h
NAME                                                       STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS          AGE
persistentvolumeclaim/data-kubeapps-postgresql-primary-0   Bound    pvc-1e943d44-d92d-4210-a52a-5f9b0143bbc7   8Gi        RWO            managed-nfs-storage   25h
persistentvolumeclaim/data-kubeapps-postgresql-read-0      Bound    pvc-e75f653e-cbef-460d-bb68-e791f552bfc7   8Gi        RWO            managed-nfs-storage   25h
persistentvolumeclaim/mydokuwiki                           Bound    pvc-c2a706ee-e9a0-4db1-b9e5-3f4d6a0d21ea   8Gi        RWO            managed-nfs-storage   5h10m

相关的sa,secret

[root@k8s-master ~]# k get sa,secret -n kubeapps
NAME                                                        SECRETS   AGE
serviceaccount/default                                      1         26h
serviceaccount/kubeapps-internal-apprepository-controller   1         25h
serviceaccount/kubeapps-internal-kubeappsapis               1         25h
serviceaccount/kubeapps-internal-kubeops                    1         25h
serviceaccount/kubeapps-operator                            1         24h
NAME                                                            TYPE                                  DATA   AGE
secret/default-token-f4pvj                                      kubernetes.io/service-account-token   3      26h
secret/kubeapps-internal-apprepository-controller-token-tpn7j   kubernetes.io/service-account-token   3      25h
secret/kubeapps-internal-kubeappsapis-token-cgvmg               kubernetes.io/service-account-token   3      25h
secret/kubeapps-internal-kubeops-token-cq2ql                    kubernetes.io/service-account-token   3      25h
secret/kubeapps-operator-token-qfxsx                            kubernetes.io/service-account-token   3      24h
secret/kubeapps-postgresql                                      Opaque                                2      25h
secret/mydokuwiki                                               Opaque                                1      5h12m
secret/sh.helm.release.v1.kubeapps.v1                           helm.sh/release.v1                    1      25h
secret/sh.helm.release.v1.mydokuwiki.v1                         helm.sh/release.v1                    1      5h12m

相关的configMap

[root@k8s-master ~]# k get cm -n kubeapps
NAME                                       DATA   AGE
kubeapps-clusters-config                   1      25h
kubeapps-frontend-config                   2      25h
kubeapps-internal-dashboard-config         5      25h
kubeapps-internal-kubeappsapis-configmap   1      25h

相关的控制器,可以看到postgresql是sts控制器,

[root@k8s-master ~]# k get deploy,ds,sts -n kubeapps
NAME                                                         READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/kubeapps                                     2/2     2            2           25h
deployment.apps/kubeapps-internal-apprepository-controller   1/1     1            1           25h
deployment.apps/kubeapps-internal-dashboard                  2/2     2            2           25h
deployment.apps/kubeapps-internal-kubeappsapis               2/2     2            2           25h
deployment.apps/kubeapps-internal-kubeops                    2/2     2            2           25h
deployment.apps/mydokuwiki                                   1/1     1            1           5h13m
NAME                                           READY   AGE
statefulset.apps/kubeapps-postgresql-primary   1/1     25h
statefulset.apps/kubeapps-postgresql-read      1/1     25h

helm install后的输出,提示要port-forward端口,但,我们这是测试,因此,采用NodePort方式暴露服务端口

[root@k8s-master ~]# helm status kubeapps -n kubeapps
NAME: kubeapps
LAST DEPLOYED: Tue Oct 18 20:05:10 2022
NAMESPACE: kubeapps
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: kubeapps
CHART VERSION: 8.0.9
APP VERSION: 2.4.4** Please be patient while the chart is being deployed **
Tip:
  Watch the deployment status using the command: kubectl get pods -w --namespace kubeapps
Kubeapps can be accessed via port 80 on the following DNS name from within your cluster:
   kubeapps.kubeapps.svc.cluster.local
To access Kubeapps from outside your K8s cluster, follow the steps below:
1. Get the Kubeapps URL by running these commands:
   echo "Kubeapps URL: http://127.0.0.1:8080"
   kubectl port-forward --namespace kubeapps service/kubeapps 8080:80
2. Open a browser and access Kubeapps using the obtained URL.


相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
22天前
|
Kubernetes Cloud Native 微服务
云原生入门与实践:Kubernetes的简易部署
云原生技术正改变着现代应用的开发和部署方式。本文将引导你了解云原生的基础概念,并重点介绍如何使用Kubernetes进行容器编排。我们将通过一个简易的示例来展示如何快速启动一个Kubernetes集群,并在其上运行一个简单的应用。无论你是云原生新手还是希望扩展现有知识,本文都将为你提供实用的信息和启发性的见解。
|
29天前
|
Kubernetes Cloud Native 开发者
云原生入门:Kubernetes的简易指南
【10月更文挑战第41天】本文将带你进入云原生的世界,特别是Kubernetes——一个强大的容器编排平台。我们将一起探索它的基本概念和操作,让你能够轻松管理和部署应用。无论你是新手还是有经验的开发者,这篇文章都能让你对Kubernetes有更深入的理解。
|
27天前
|
运维 Kubernetes Cloud Native
云原生技术入门:Kubernetes和Docker的协同工作
【10月更文挑战第43天】在云计算时代,云原生技术成为推动现代软件部署和运行的关键力量。本篇文章将带你了解云原生的基本概念,重点探讨Kubernetes和Docker如何协同工作以支持容器化应用的生命周期管理。通过实际代码示例,我们将展示如何在Kubernetes集群中部署和管理Docker容器,从而为初学者提供一条清晰的学习路径。
|
1月前
|
Kubernetes 负载均衡 Cloud Native
探索Kubernetes:云原生应用的基石
探索Kubernetes:云原生应用的基石
|
1月前
|
Kubernetes 监控 负载均衡
深入云原生:Kubernetes 集群部署与管理实践
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术以其弹性、可扩展性成为企业IT架构的首选。本文将引导你了解如何部署和管理一个Kubernetes集群,包括环境准备、安装步骤和日常维护技巧。我们将通过实际代码示例,探索云原生世界的秘密,并分享如何高效运用这一技术以适应快速变化的业务需求。
62 1
|
24天前
|
Kubernetes Cloud Native 云计算
云原生入门:Kubernetes 和容器化基础
在这篇文章中,我们将一起揭开云原生技术的神秘面纱。通过简单易懂的语言,我们将探索如何利用Kubernetes和容器化技术简化应用的部署和管理。无论你是初学者还是有一定经验的开发者,本文都将为你提供一条清晰的道路,帮助你理解和运用这些强大的工具。让我们从基础开始,逐步深入了解,最终能够自信地使用这些技术来优化我们的工作流程。
|
28天前
|
存储 Kubernetes Devops
Kubernetes集群管理和服务部署实战
Kubernetes集群管理和服务部署实战
47 0
|
运维 Kubernetes Linux
kubernetes(2):Centos7 安装 kubernetes 1.5 版本
1,kubernetes 安装 centos 7 已经集成了kubernetes 1.5 直接安装就可以了。 非常的简单,方便。 yum install kubernetes etcd docker 同时会,安装一个kubernetes-client kubernetes-master kubernetes-node 运维也是非常的方便了。1.5.2-
2545 0
|
Kubernetes Linux Docker
kubernetes(1):Centos7 安装 kubernetes 1.4.0 版本
首先看到最新的kubernetes 1.4.0 发布了。激动了下,就开始研究了。 本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/52685592 未经博主允许不得转载。 博主地址是:http://blog.csdn.net/freewebsys 1,关于k8s Kubernetes
1849 0
|
8天前
|
存储 Kubernetes 关系型数据库
阿里云ACK备份中心,K8s集群业务应用数据的一站式灾备方案
本文源自2024云栖大会苏雅诗的演讲,探讨了K8s集群业务为何需要灾备及其重要性。文中强调了集群与业务高可用配置对稳定性的重要性,并指出人为误操作等风险,建议实施周期性和特定情况下的灾备措施。针对容器化业务,提出了灾备的新特性与需求,包括工作负载为核心、云资源信息的备份,以及有状态应用的数据保护。介绍了ACK推出的备份中心解决方案,支持命名空间、标签、资源类型等维度的备份,并具备存储卷数据保护功能,能够满足GitOps流程企业的特定需求。此外,还详细描述了备份中心的使用流程、控制台展示、灾备难点及解决方案等内容,展示了备份中心如何有效应对K8s集群资源和存储卷数据的灾备挑战。