KubeSphere安裝部署2.1.0DEV


KubeSphere安裝部署2.1.0DEV版本

 

1  Kubesphere簡介

https://kubesphere.io/

https://github.com/kubesphere/ks-installer

https://kubesphere.io/zh-CN/install/

https://kubesphere.io/docs/express/zh-CN/basic/

https://www.qikqiak.com/post/install-kubesphere-on-k8s/

KubeSphere是在 Kubernetes 之上構建的企業級分布式多租戶容器管理平台,提供簡單易用的操作界面以及向導式操作方式,在降低用戶使用容器調度平台學習成本的同時,極大減輕開發、測試、運維的日常工作的復雜度,旨在解決 Kubernetes 本身存在的存儲、網絡、安全和易用性等痛點。除此之外,平台已經整合並優化了多個適用於容器場景的功能模塊,以完整的解決方案幫助企業輕松應對敏捷開發與自動化運維、微服務治理、多租戶管理、工作負載和集群管理、服務與網絡管理、應用編排與管理、鏡像倉庫管理和存儲管理等業務場景。

 

1.1 產品功能

KubeSphere 為用戶提供了一個具備極致體驗的 Web 控制台,讓您能夠像使用任何其他互聯網產品一樣,快速上手各項功能與服務。KubeSphere 目前集成了應用負載、服務與網絡、應用管理、資源管理和平台管理共五大模塊,以下從專業的角度為您詳解各個模塊的功能服務:

功能

應用負載管理

對 kubernetes 中的多種 workload 提供向導式管理界面,包括 Deployments,Daemon Sets,Stateful Sets,並提供 HPA 支持。

服務與網絡管理

基於原生 API,對 k8s 中的服務 (Service)、應用路由 (ingress) 等功能提供向導式管理界面,快速將應用暴露以供用戶訪問。高級版將集成 istio 中的 微服務治理、熔斷、灰度發布、限流、智能路由等功能提供向導式管理界面。
如果部署在青雲平台之上,可以使用插件對接青雲的負載均衡器。

應用管理

后端使用開源的 OpenPitrix 服務,為用戶提供應用全生命周期管理功能,包括: 應用倉庫管理、應用拓撲圖、APM、應用變更和發布、應用上下線審批、版本控制、魯棒性測試等。

資源管理

提供存儲、主機、集群以及配額管理。存儲既支持主流開源存儲解決方案,也可對接青雲的塊存儲和 NeonSAN。可批量添加主機,且對主機平台及系統弱依賴。並且支持鏡像倉庫管理、鏡像復制、權限管理、鏡像安全掃描。

平台管理

提供基於角色的細粒度權限多租戶管理,平台服務間進行加密通信;提供操作審計日志;可對宿主機以及容器鏡像進行安全掃描並發現漏洞。

 

 

1.2  部署模式

KubeSphere 部署支持 all-in-onemulti-node 兩種部署模式, KubeSphere Installer 采用 Ansible 對部署目標機器及部署流程進行集中化管理配置。采用預配置模板,可以在部署前通過對相關配置文件進行自定義實現對部署過程的預配置,以適應不同的 IT 環境,幫助您快速部署 KubeSphere。

  • KubeSphere 集群中由於部署服務的不同,分為管理節點和計算節點兩個角色。
  • 當進行 all-in-one 模式進行單節點部署時,這個節點既是管理節點,也是計算節點。
  • 當進行 multi-node 模式部署多節點集群時,可在配置文件中設置集群角色。
  • 由於部署過程中需要更新操作系統和從鏡像倉庫拉取鏡像,因此必須能夠訪問外網。無外網環境需先下載離線安裝包安裝。
  • 如果是新裝系統,在 Software Selection 界面需要把 OpenSSH Server 選上。

2  部署

https://github.com/kubesphere/ks-installer

 

2.1  環境准備

  • 集群現有的可用內存至少在 10G 以上
#  kubectl version | grep Server
Server Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.3", GitCommit:"2d3c76f9091b6bec110a5e63777c332469e0cba2", GitTreeState:"clean", BuildDate:"2019-08-19T11:05:50Z", GoVersion:"go1.12.9", Compiler:"gc", Platform:"linux/amd64"}


# helm version
Client: &version.Version{SemVer:"v2.13.1", GitCommit:"618447cbf203d147601b4b9bd7f8c37a5d39fbb4", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.13.1", GitCommit:"618447cbf203d147601b4b9bd7f8c37a5d39fbb4", GitTreeState:"clean"}

 

 

2.1.1 創建StorageClass

首先需要確保集群中有一個默認的 StorageClass 資源對象,關於 StorageClass 的使用可以查看

kubernetes(14):k8s基於NFS部署storageclass實現pv自動供給

# vim sphere-sc.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: kubesphere-data
  annotations:
    storageclass.kubernetes.io/is-default-class: "true"
provisioner: fuseim.pri/ifs

 

 

其中 annotations 下面的 storageclass.kubernetes.io/is-default-class: “true” 是必須的:

# kubectl get sc | grep dynamic
NAME                     PROVISIONER      AGE
kubesphere-data (default)   fuseim.pri/ifs   4h41m

 

 

 

2.2  清理環境

建議先停止已經安裝的prometheus/gitlab/Jenkins/sonarqube/harbor/ metrics_server/node-exporter/ Dashboard會有沖突

 

2.3  安裝

2.3.1 創建命名空間

首先,在集群中創建名為 kubesphere-system 和 kubesphere-monitoring-system 的namespace:

 

cat <<EOF | kubectl create -f -
---
apiVersion: v1
kind: Namespace
metadata:
  name: kubesphere-system
---
apiVersion: v1
kind: Namespace
metadata:
  name: kubesphere-monitoring-system
EOF

 

2.3.2 創建集群ca證書secret

注:按照當前集群 ca.crt 和 ca.key 證書路徑創建(kubeadm 創建集群的證書路徑一般為/etc/kubernetes/pki)

kubectl -n kubesphere-system create secret generic kubesphere-ca  \
--from-file=ca.crt=/etc/kubernetes/pki/ca.crt  \
--from-file=ca.key=/etc/kubernetes/pki/ca.key 

 

2.3.3 創建etcd證書secret

注:以集群實際 etcd 證書位置創建;若 etcd 沒有配置證書,則創建空secret

kubectl -n kubesphere-monitoring-system create secret generic kube-etcd-client-certs

 

cat /etc/kubernetes/manifests/etcd.yaml
......
livenessProbe:
  exec:
    command:
    - /bin/sh
    - -ec
    - ETCDCTL_API=3 etcdctl --endpoints=https://[127.0.0.1]:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt
        --cert=/etc/kubernetes/pki/etcd/healthcheck-client.crt --key=/etc/kubernetes/pki/etcd/healthcheck-client.key
        get foo
......

 

從這里我們也可以獲得 etcd 集群相關的證書。

2.3.4 下載代碼

git clone https://github.com/kubesphere/ks-installer.git -b master
# 看起來我這邊是2.1.0dev版本

 

 

2.3.5   在Kubernetes 集群部署 KubeSphere。

版本不一部署方式也不一樣,我這里是通過配置文件確定部署模塊的,把Jenkins、gitlab、harbor、sonarqube、監控一堆都部署上

修改cat config.yaml 文件

# ls
controller  deploy  Dockerfile  docs  env  LICENSE  playbooks  README.md  README_zh.md  roles  scripts  src
cd deploy
# ls
config.yaml  kubesphere-installer.yaml
# cat config.yaml
---
apiVersion: v1
data:
  ks-config.yaml: |
    ---
    kubernetes:
      apiserverAddr: 10.6.76.25:6443      # master addr or master's lb addr

    etcd:
      endpointIps: 10.6.76.25
      port: 2379
      tlsEnable: True

    persistence:
      storageClass: "kubesphere-data"

    common:
      enableHA: True
      mysqlVolumeSize: 20Gi
      minioVolumeSize: 20Gi
      etcdVolumeSize: 20Gi
      openldapVolumeSize: 2Gi
      redisVolumSize: 2Gi

    metrics-server:
      enabled: True

    console:
      enableMultiLogin: True  # enable/disable multi login
      port: 30880
      replicas: 1

    monitoring:
      prometheusReplicas: 1
      prometheusMemoryRequest: 400Mi
      prometheusVolumeSize: 20Gi
      grafana:
        enabled: True

    logging:
      enabled: True
      elasticsearchMasterReplica: 1
      elasticsearchDataReplica: 1
      elasticsearchVolumeSize: 20Gi
      logMaxAge: 7
      elkPrefix: logstash
      containersLogMountedPath: ""
      kibana:
        enabled: True

    openpitrix:
      enabled: True

    devops:
      enabled: True
      jenkinsMemoryLim: 2Gi
      jenkinsMemoryReq: 1500Mi
      jenkinsVolumeSize: 8Gi
      jenkinsJavaOpts_Xms: 512m
      jenkinsJavaOpts_Xmx: 512m
      jenkinsJavaOpts_MaxRAM: 2g
      sonarqube:
        enabled: True

    servicemesh:
      enabled: True

    notification:
      enabled: True

    alerting:
      enabled: True

    harbor:
      enabled: True
      domain: harbor.devops.kubesphere.local
    gitlab:
      enabled: True
      domain: gitlab.devops.kubesphere.local

kind: ConfigMap
metadata:
  name: ks-installer
  namespace: kubesphere-system
cat config.yaml

 

#執行部署
kubectl apply -f kubesphere-installer.yaml

 

 

2.3.6   查看部署日志

#這個不同版本也不一樣,實在不行就直接 kubectl -n kubesphere-system logs -f 部署的pod

kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-install -o jsonpath='{.items[0].metadata.name}') -f

 

 

2.3.7   所需鏡像

注意查看失敗的pod信息,如果有鏡像不能正確拉取,可以通過ks-installer/scripts/download-docker-images.sh下載 或者根據提示失敗的node上拉取

 

#例如
docker login -u guest -p guest dockerhub.qingcloud.com
docker pull dockerhub.qingcloud.com/gitlab_org/gitlab-unicorn-ce:v11.8.1

 

 

3   登錄使用kubesphere

3.1  登錄

查看控制台的服務端口,使用 IP:30880 訪問 KubeSphere UI 界面,默認的集群管理員賬號為 admin/P@88w0rd

 

 

 

 

 

 

 

 

 

 

 

 

3.2  prometheus監控

ks整合了prometheus監控,多種維度監控

# kubectl  -n kubesphere-monitoring-system get pod
NAME                                   READY   STATUS    RESTARTS   AGE
kube-state-metrics-6749b6ff4b-5dh62    4/4     Running   0          18h
node-exporter-5ctrs                    2/2     Running   0          18h
node-exporter-gqd84                    2/2     Running   0          18h
node-exporter-q2vdl                    2/2     Running   0          18h
node-exporter-t7wfj                    2/2     Running   0          18h
prometheus-k8s-0                       3/3     Running   27         18h
prometheus-k8s-1                       3/3     Running   1          18h
prometheus-k8s-system-0                3/3     Running   1          18h
prometheus-k8s-system-1                3/3     Running   1          18h
prometheus-operator-799455496d-fwlcb   1/1     Running   0          18h

 

 

 

 

設置一個測試告警

配置起來非常方便

 

 

 

 

 

 

 

郵件發送

 

 

 

 

 

 

 

 

 

3.3  Jenkins

Jenkins 是一款由 Java 開發的開源的持續集成工具,KubeSphere 內置的 Jenkins 服務端可參考如下步驟登錄訪問。

1、Jenkins Dashboard 服務暴露的端口 (NodePort) 默認為 30180,若在雲平台部署 KubeSphere,則需要進行端口轉發和添加防火牆規則,確保外網流量能夠正常通過該端口。

2、然后訪問公網 IP 和端口號即 http://${EIP}:${NODEPORT},Jenkins 已對接了 KubeSphere 的 LDAP,因此可使用用戶名 admin 和 KubeSphere 集群管理員的密碼 (初始密碼為 P@88w0rd) 登錄 Jenkins Dashboard。

說明:若部署在私有環境,則可以在集群的任意節點通過 http://{$節點 IP}:30180 進行訪問。

 

 

 

 

3.4 sonarqube

https://kubesphere.io/docs/v2.0/zh-CN/installation/sonarqube-jenkins/

SonarQube 是一個開源的代碼分析軟件,用來持續分析和檢測代碼的質量,支持檢測 Java、C#、C、C++、JavaScript 等二十多種編程語言。通過 SonarQube 可以檢測出項目中潛在的 Bug、漏洞、代碼規范、重復代碼、缺乏單元測試等問題,SonarQube 提供了 UI 界面進行查看和管理。KubeSphere 安裝時默認內置了 SonarQube 服務,可參考如下步驟,訪問內置 SonarQube。

 

# kubectl get pods,svc  -n kubesphere-devops-system | grep sonarqube

pod/ks-sonarqube-postgresql-5cbb44cc9-64mgb    1/1     Running     0          18h
pod/ks-sonarqube-sonarqube-9bf449458-7mzfw     1/1     Running     0          18h
service/ks-sonarqube-postgresql              ClusterIP   10.104.23.38     <none>        5432/TCP         18h
service/ks-sonarqube-sonarqube               NodePort    10.97.163.216    <none>        9000:30746/TCP   18h

 

 

在瀏覽器中訪問 SonarQube,初次登錄的默認賬號密碼為 admin / admin

創建 SonarQube Token

 

 

 

 

e7a66041f8920011049207b480cef50b54474c8a

 

 

 

 

mvn sonar:sonar \
  -Dsonar.host.url=http://10.6.76.25:32746 \
  -Dsonar.login=e7a66041f8920011049207b480cef50b54474c8a

 

 

3.5 gitlab

https://kubesphere.io/docs/v2.1/zh-CN/installation/gitlab-installation/

 

在瀏覽器中可以通過 {$域名}:{$NodePort}http://gitlab.devops.kubesphere.local:30080 訪問 GitLab 登錄頁面。默認的 GitLab 用戶名和密碼為 admin / P@88w0rd

 

這個一定要域名解析啊

 

 

 

 

3.6 harbor

https://kubesphere.io/docs/v2.1/zh-CN/installation/harbor-installation/

可以域名解析 http://harbor.devops.kubesphere.local:30280

輸入默認的管理員用戶名和密碼 admin / Harbor12345 登錄 Harbor。

其它用戶登錄的賬號密碼與 KubeSphere 的 LDAP 用戶賬戶體系一致。

 

 

 

 

3.7 elk日志中心

 

 

 

 

 

 

3.8 kubectl控制台

相當於命令行

 

 

 

 

 

 

4 卸載

卸載腳本 將從機器中刪除 KubeSphere,該操作不可逆,也不會備份任何數據,請謹慎操作。

ks-installer/scripts/kubesphere-delete.sh
helm list #查看未刪除的
刪除 devops命名空間 sts 有狀態服務
#刪除持久化存儲文件 cd /data/volumes/v1/ 選擇性刪除

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM