開普勒雲平臺:9個示例解析如何安裝依賴
本文介紹開普勒雲平臺如何安裝依賴。
Kplcloud是什麼?
kplcloud是一個基於Kubernetes的輕量級PaaS平臺,通過視覺化的介面對應用進行管理,降低應用容器化的對度,從而減少應用容器化的時間成本。
Kplcloud已在宜信服務於宜人財富等多個團隊,穩定執行了近兩年,目前平臺已在生產環境跑著上百個應用,近千個容器。
一、Namespace
建議將與開普勒相關的服務獨立到一個專有的 Namespace下,在Kubernetes建立新的空間。您可以執行以下命令建立該空間
$ kubectl create namespace kpaas
或執行以下命令 :
$ kubectl apply -f install/kubernetes/namespace.yaml
二、配置持久化儲存
2.1 持久化儲存的相關配置
這裡使用的是NFS的方式進行持久化,如果您有自己的持久化方案可以不使用改方案。
$ kubectl apply -f install/kubernetes/storage/serviceaccount.yaml $ kubectl apply -f install/kubernetes/storage/rbac.yaml $ kubectl apply -f install/kubernetes/storage/provisioner.yaml $ kubectl apply -f install/kubernetes/storage/stroageclass.yaml
2.2 需要調整provisioner
根據您自己的環境調service地址及path。
volumes: - name: kpl-nfs-client-root nfs: server: 172.16.0.4 path: "/home/data" containers: - name: kpl-nfs-client-provisioner image: quay.io/external_storage/nfs-client-provisioner:latest env: - name: PROVISIONER_NAME value: fuseim.pri/ifs - name: NFS_SERVER value: 172.16.0.4 - name: NFS_PATH value: "/home/data"
三、安裝Redis 單點
為了方便給大家演示,redis也使用的docker版本部署在kubernetes叢集上,真實環境請使用獨立的redis伺服器或叢集
如果您還沒有初始化持久化儲存的,請在這裡持久化儲存配置好儲存類再安裝Redis服務。
3.1 安裝
$ kubectl apply -f install/kubernetes/redis/statefulset.yaml $ kubectl apply -f install/kubernetes/redis/service.yaml $ kubectl apply -f install/kubernetes/redis/configmap.yaml
redis的配置相關資訊寫在configmap裡面 statefulset.yaml
官方redis預設的存在/data目錄,所以我們需要將持久化儲存目標配置在/data目錄下。
四、安裝Consul叢集
如果您的獨立的Consul叢集或不想使用Consul的話,不需要執行以下命令。 以下命令是將docker版的consul叢集安裝在您的kubernetes叢集上前提是前必須有持久化儲存。
如果您還沒有初始化持久化儲存的,請在這裡持久化儲存配置好儲存類再安裝consul叢集。
4.1 安裝
$ kubectl apply -f install/kubernetes/consul/configmap.yaml $ kubectl apply -f install/kubernetes/consul/service.yaml $ kubectl apply -f install/kubernetes/consul/statefulset.yaml $ kubectl apply -f install/kubernetes/consul/ingress.yaml
我們們採用的是StatefulSet的方式部署叢集,若您已經有了持久化的儲存類,將storageClassName修改成您的儲存類包就好。
ingress.yaml 提供對外訪問的入口
configmap.yaml consul cluster server的配置檔案
4.2 註釋
這個kubernetes親和度問題您可能需要關注一下,如果您的kubernetes是單點,請使用以下注釋掉的程式碼。否由會無法起動服務。
affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchLabels: app: consul component: server topologyKey: kubernetes.io/hostname # # 單節點用這個 # preferredDuringSchedulingIgnoredDuringExecution: # - wight: 100 # podAffinityTerm: # topologyKey: kubernetes.io/hostname
五、安裝RabbitMQ服務
為了方便給大家演示,rabbitmq也使用的docker版本部署在kubernetes叢集上,真實環境請使用獨立的rabbitmq伺服器
如果您還沒有初始化持久化儲存的,請在這裡持久化儲存配置好儲存類再安裝rabbitMQ服務。
5.1 安裝
$ kubectl apply -f install/kubernetes/rabbitmq/statefulset.yaml $ kubectl apply -f install/kubernetes/rabbitmq/service.yaml
有狀態服務: statefulset.yaml 入口: ingress.yaml
kpass在rabbitmq裡需要建立:
- Vhost: kplcloud
- Exchanges: kplcloud-exchange
- User: kplcloud
- RoutingKey: kplcloud
六、安裝Mysql服務
6.1 mysql
為了方便給大家演示,mysql也使用的docker版本部署在kubernetes叢集上,真實環境請使用獨立的mysql伺服器
如果您還沒有初始化持久化儲存的,請在這裡持久化儲存配置好儲存類再安裝mysql服務。
6.2 安裝
$ kubectl apply -f install/kubernetes/mysql/statefulset.yaml $ kubectl apply -f install/kubernetes/mysql/service.yaml
-
MYSQL_ROOT_PASSWORD
: mysql使用者名稱 -
MYSQL_ROOT_PASSWORD
: mysql密碼
本專案需要建立資料庫: kplcloud
七、安裝ELK
Logstash、ES對機器要的求比較高,建議使用獨立的ELK叢集負責日誌的採集分析
如果您非要使用Docker版的elk的並且部署在Kubernetes叢集裡,如果還沒有初始貨持久化儲存,先初始化持久化儲存的,請在這裡持久化儲存配置好儲存類再安裝相關服務服務。
ELK主要包含Elasticsearch、Logstash、Kibana幾個服務,kibana和logstash可以做在Deployment,全ES需要持久化,因為日誌資料是存在ES上的。
$ kubectl apply -f install/kubernetes/elk/elasticsearch.yaml $ kubectl apply -f install/kubernetes/elk/logstash.yaml $ kubectl apply -f install/kubernetes/elk/kibana.yaml $ kubectl apply -f install/kubernetes/elk/ingress.yaml
八、安裝Harbor
映象倉庫就別在跑kubernetes叢集上了,似乎也跑不了,找一臺容量大的有安裝Docker的伺服器進行搭建。
安裝啟動方式,請檢視官方說明:https://github.com/goharbor/harbor/blob/master/docs/installation_guide.md
8.1 安裝
下載Harbor安裝檔案,我這下的是離線處理,如果下載不了請加代理
$ https://storage.googleapis.com/harbor-releases/release-1.8.0/harbor-offline-installer-v1.8.1.tgz
8.2 解壓
$ tar -zxvf harbor-offline-installer-v1.8.1.tgz
8.3 配置harbor檔案 harbor.conf
## Configuration file of Harbor # hostname設定訪問地址,可以使用ip、域名,不可以設定為127.0.0.1或localhost hostname = hub.kpaas.nsini.com # 訪問協議,預設是http,也可以設定https,如果設定https,則nginx ssl需要設定on ui_url_protocol = http # mysql資料庫root使用者預設密碼root123,實際使用時修改下 db_password = root123 max_job_workers = 3 customize_crt = on ssl_cert = /data/cert/server.crt ssl_cert_key = /data/cert/server.key secretkey_path = /data admiral_url = NA # 郵件設定,傳送重置密碼郵件時使用 email_identity = email_server = smtp.mydomain.com email_server_port = 25 email_username = sample_admin@mydomain.com email_password = abc email_from = admin <sample_admin@mydomain.com> email_ssl = false # 啟動Harbor後,管理員UI登入的密碼,預設是Harbor12345 harbor_admin_password = Harbor12345 # 認證方式,這裡支援多種認證方式,如LADP、本次儲存、資料庫認證。預設是db_auth,mysql資料庫認證 auth_mode = db_auth # LDAP認證時配置項 #ldap_url = ldaps://ldap.mydomain.com #ldap_searchdn = uid=searchuser,ou=people,dc=mydomain,dc=com #ldap_search_pwd = password #ldap_basedn = ou=people,dc=mydomain,dc=com #ldap_filter = (objectClass=person) #ldap_uid = uid #ldap_scope = 3 #ldap_timeout = 5 # 是否開啟自注冊 self_registration = on # Token有效時間,預設30分鐘 token_expiration = 30 # 使用者建立專案許可權控制,預設是everyone(所有人),也可以設定為adminonly(只能管理員) project_creation_restriction = everyone verify_remote_cert = on
8.4 啟動Harbor,直接執行./install.sh 或 docker-composer都可以
$ ./install.sh $ docker-compose start
九、Prometheus安裝
如果還沒有初始貨持久化儲存,先初始化持久化儲存的,請在這裡持久化儲存配置好儲存類再安裝相關服務服務。
Prometheus 需要將資料存在本地,所以需要掛載持久化儲存。
$ kubectl apply -f install/kubernetes/prometheus/deployment.yaml $ kubectl apply -f install/kubernetes/prometheus/ingress.yaml $ kubectl apply -f install/kubernetes/prometheus/configmap.yaml $ kubectl apply -f install/kubernetes/prometheus/serviceaccount.yaml $ kubectl apply -f install/kubernetes/prometheus/service.yaml $ kubectl apply -f install/kubernetes/prometheus/persistentvolumeclaim.yaml
9.1 相關配置
configmap.yaml檔案有五個檔案:
- etcd3.rules.yml
- kube-state-metrics_rules.yml
- kubelet_rule.yml
- kubernetes_rule.yml
- prometheus.yml
在prometheus裡引用了上面4個檔案。如果您有新的規則可以在這裡增加。
在prometheus.yml 檔案裡有配置 alerting 目前預設發身 alertmanager:9093 ,若您有自己的報警管理平臺,修改該地址就行,若還想使用alertmanager的話請看安裝AlertManager。
十、安裝配置alertmanager
Alertmanager 主要是接收來自prometheus 的alert資料
10.1 安裝
可以獨立安裝不使用Docker,以下案例是部署在kubernetes叢集上。
$ kubectl apply -f install/kubernetes/alertmanager/deployment.yaml $ kubectl apply -f install/kubernetes/alertmanager/ingress.yaml $ kubectl apply -f install/kubernetes/alertmanager/configmap.yaml $ kubectl apply -f install/kubernetes/alertmanager/service.yaml
10.2 相關配置
這裡採用webhook的方式將報警資訊傳送到kplcloud平臺,kplcloud接收資料處理併入rabbitmq。
apiVersion: v1 data: config.yml: |- global: route: group_by: ['alertname', 'cluster', 'service'] group_wait: 30s group_interval: 5m repeat_interval: 10m receiver: webhook receivers: - name: 'webhook' webhook_configs: - url: 'http://kplcloud:8080/public/prometheus/alerts' kind: ConfigMap metadata: name: alertmanager
kplcloud處理完的資料最終根據相應的規則推送給相應的使用者及平臺等。
十一、安裝kpaas
$ git clone github.com/kplcloud/kplcloud.git
11.1 Docker
$ docker pull kplcloud/kplcloud:latest
11.2 kubernetes
基礎服務安裝: install.md
若您的其他服務都已經準備好了,可以直接執行以下命令在kubernetes上進行部署開普勒雲平臺。
$ kubectl apply -f install/kubernetes/kpaas/configmap.yaml $ kubectl apply -f install/kubernetes/kpaas/deployment.yaml $ kubectl apply -f install/kubernetes/kpaas/service.yaml $ kubectl apply -f install/kubernetes/kpaas/ingress.yaml
如果您有私有倉庫,記得在master節點上執行一下:
$ kubectl create secret generic regcred --from-file=.dockerconfigjson=/root/.docker/config.json --type=kubernetes.io/dockerconfigjson -n default
在每個namespace下都建立一下,這樣k8s就有許可權拉取私有倉庫的映象了
Deployment需要把imagePullSecrets加上:
imagePullSecrets: - name: regcred
開源地址:
- Github: https://github.com/kplcloud/kplcloud
- Document: https://docs.nsini.com
- Demo: https://kplcloud.nsini.com
作者:宜人金科-財富技術部-創新團隊
來源:宜信技術學院
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69918724/viewspace-2662057/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 開普勒雲平臺:如何配置gitlab與JenkinsGitlabJenkins
- Hue安裝依賴
- kratos安裝及依賴安裝
- rubymine debug需要安裝依賴
- python 安裝依賴c++PythonC++
- 如何依賴機器人安裝極狐GitLab機器人Gitlab
- npm 安裝、刪除依賴命令NPM
- 【python】【安裝包依賴關係】Python
- 前端彙總系列:npm依賴(框架平臺)前端NPM框架
- python 離線依賴包打包&安裝Python
- vscode使用npm安裝依賴報錯VSCodeNPM
- python離線安裝外部依賴包Python
- Windows平臺下安裝與配置MySQL9WindowsMySql
- RoboWare Studio安裝及依賴項解決
- ubuntu下安裝nginx時依賴庫zlib,pcre,openssl安裝方法UbuntuNginx
- python3 依賴倒置原則示例Python
- Linux下安裝DB2的包依賴LinuxDB2
- ubuntu解決軟體安裝依賴錯誤Ubuntu
- 『手撕Vue-CLI』自動安裝依賴Vue
- Spring迴圈依賴+案例解析Spring
- Flutter 04: 圖解第一個程式遇到的安裝依賴問題Flutter圖解
- Ubuntu安裝開發者平臺BackstageUbuntu
- Vue安裝依賴報錯:checking for Python executable "python" in the PATHVuePython
- 函式計算安裝依賴庫方法小結函式
- Spring原始碼解析——依賴注入(二)Spring原始碼依賴注入
- 解析依賴注入(DI)的本質依賴注入
- Maven 原始碼解析:依賴調解是如何實現的?Maven原始碼
- Maven什麼時候需要排除依賴,如何排除依賴Maven
- 依賴注入?依賴注入是如何實現解耦的?依賴注入解耦
- 從原始碼解析vue的響應式原理-依賴收集、依賴觸發原始碼Vue
- Linux上安裝Nginx依賴環境和庫、Nginx安裝,Nginx服務命令LinuxNginx
- 安裝gcc過程中遇到相互依賴的問題GC
- Maven魔法堂:安裝Oracle JDBC Driver依賴的那些坑MavenOracleJDBC
- VUE載入相關依賴包(安裝 node_modules)Vue
- 1.go環境安裝,IDE配置以及依賴管理GoIDE
- 遊戲陪玩平臺原始碼開發,依賴收集和觸發的實現遊戲原始碼
- 開發函式計算的正確姿勢 —— 依賴安裝方法一覽函式
- Linux環境安裝Oracle11g(一)——配置檢查及依賴項安裝LinuxOracle