K8s系列-KubeSphere

語言: CN / TW / HK

 

KubeSphere 介紹

KubeSphere是k8s控制檯,ubeSphere 目前提供了工作負載管理、微服務治理、DevOps 工程、Source to Image、多租戶管理、多維度監控、日誌查詢與收集、告警通知、服務與網路、應用管理、基礎設施管理、映象管理、應用配置金鑰管理等功能模組。

kubeSphere 幫我們把諸多雲原生功能集中在一起並提供了web介面。利用KubeSphere我們可以根據我們之前學習的 Jenkins docker k8s 搭建一套完整的私有云系統,極大的減少運維以及開發的工作量。具體的搭建思路我在下一節中給出,這一節我們先安裝並使用KubeSphere。

kubeSphere 安裝

為了簡化安裝,我們這裡使用的是KubeKey,KubeKey安裝k8s的最低配置要求是2核4G,低於這個配置使用KubeKey會安裝失敗。由於KubeKey會訪問github。所以需要保證你的主機能聯網。我們本地實驗的方式可以使用前文提到過的vagrant搭建虛擬機器叢集。然後在vagrant中安裝。也可以在雲上上實驗,雲上實驗採用按量計費的方式,阿里雲收費如下,網路頻寬另計費

騰訊雲的:

騰訊雲的伺服器要便宜很多,而且阿里雲要使用按量計費需要餘額大於100 元,騰訊雲沒有這個限制,不過兩家都支援餘額提現。做雲實驗的話我建議使用騰訊雲的按量計費伺服器,100塊錢能玩很久(它的物件儲存也只要幾毛錢一個月)。阿里雲和騰訊雲都推出了輕量級雲伺服器,比普通雲伺服器便宜很多,這種伺服器是你用多少給你分配多少,比如我買了2核4g的伺服器,如果我只用了1核1g,那剩餘的資源就會被系統分配出去。這種伺服器做實驗體驗不是很好,所以沒考慮,感興趣的小夥伴可以試試這種伺服器。為了偷個懶,這次我們實驗就是在騰訊雲上進行(主要是本地機器網路不太好)。執行命令:

export KKZONE=cn

curl -sfL https://get-kk.kubesphere.io | VERSION=v2.2.2 sh -
複製

為 kk 新增可執行許可權,並初始化本地主機:

chmod +x kk
./kk init os
複製

接下來我們生成一個配置檔案來安裝k8s和kubeSphere

./kk create config [--with-kubernetes version] [--with-kubesphere version] [(-f | --file) path]
複製

示例:

## 使用預設配置建立示例配置檔案
./kk create config
## 指定要安裝的 KubeSphere 版本
./kk create config --with-kubesphere v3.3.0
./kk create config --with-kubernetes v1.22.10 --with-kubesphere v3.3.0
複製

這裡建議指定版本號,因為有的機器會不支援安裝高版本kubeSphere,指定版本生成配置檔案會有對應提示。

config-sample.yaml示例:

apiVersion: kubekey.kubesphere.io/v1alpha2
kind: Cluster
metadata:
  name: sample
spec:
  hosts:
  - {name: node1, address: 192.168.221.128, internalAddress: 192.168.221.128, user: root, password: "root"}
  roleGroups:
    etcd:
    - node1
    control-plane: 
    - node1
    worker:
    - node1
  controlPlaneEndpoint:
    ## Internal loadbalancer for apiservers 
    # internalLoadbalancer: haproxy

    domain: lb.kubesphere.local
    address: ""
    port: 6443
  kubernetes:
    version: v1.18.6
    clusterName: cluster.local
  network:
    plugin: calico
    kubePodsCIDR: 10.233.64.0/18
    kubeServiceCIDR: 10.233.0.0/18
    ## multus support. https://github.com/k8snetworkplumbingwg/multus-cni
    multusCNI:
      enabled: false
  registry:
    plainHTTP: false
    privateRegistry: ""
    namespaceOverride: ""
    registryMirrors: []
    insecureRegistries: []
  addons: []


---
apiVersion: installer.kubesphere.io/v1alpha1
kind: ClusterConfiguration
metadata:
  name: ks-installer
  namespace: kubesphere-system
  labels:
    version: v3.0.0
spec:
  zone: ""
  local_registry: ""
  persistence:
    storageClass: ""
  authentication:
    jwtSecret: ""
  etcd:
    monitoring: true
    endpointIps: localhost
    port: 2379
    tlsEnable: true
  common:
    es:
      elasticsearchDataVolumeSize: 20Gi
      elasticsearchMasterVolumeSize: 4Gi
      elkPrefix: logstash
      logMaxAge: 7
    mysqlVolumeSize: 20Gi
    minioVolumeSize: 20Gi
    etcdVolumeSize: 20Gi
    openldapVolumeSize: 2Gi
    redisVolumSize: 2Gi
  console:
    enableMultiLogin: false  # enable/disable multi login
    port: 30880
  alerting:
    enabled: false
  auditing:
    enabled: false
  devops:
    enabled: false
    jenkinsMemoryLim: 2Gi
    jenkinsMemoryReq: 1500Mi
    jenkinsVolumeSize: 8Gi
    jenkinsJavaOpts_Xms: 512m
    jenkinsJavaOpts_Xmx: 512m
    jenkinsJavaOpts_MaxRAM: 2g
  events:
    enabled: false
    ruler:
      enabled: true
      replicas: 2
  logging:
    enabled: false
    logsidecarReplicas: 2
  metrics_server:
    enabled: true
  monitoring:
    prometheusMemoryRequest: 400Mi
    prometheusVolumeSize: 20Gi
  multicluster:
    clusterRole: none  # host | member | none
  networkpolicy:
    enabled: false
  notification:
    enabled: false
  openpitrix:
    enabled: false
  servicemesh:
    enabled: false
複製

安裝前配置:

## 指定伺服器hostname
hostnamectl set-hostname master
## 關閉防火牆:
systemctl disable firewalld
## 關閉selinux:  (臨時關閉 setenforce 0)
sed -i 's/enforcing/disabled/' /etc/selinux/config
## 關閉swap(臨時關閉swapoff -a)
sed -ri 's/.*swap.*/#&/' /etc/fstab 

## 同步時間
yum install ntpdate -y
ntpdate time.windows.com
複製

執行命令建立叢集:

./kk create cluster -f config-sample.yaml
## 或者直接單機安裝
./kk create cluster --with-kubesphere v3.0.0
複製

安裝過程比較耗時,中途可能出現安裝失敗的情況,可以使用該命令解除安裝再進行重灌:

./kk delete cluster 
複製

安裝成功後會有如下日誌:安裝完成後執行指令:

 kubectl get pod -A
複製

根據日誌訪問網頁:

kubekey 指令

  • 新增節點

kk add nodes -f config-sample.yaml

  • 刪除節點

kk delete node-f config-sample.yaml

  • 刪除叢集

kk delete cluster kk delete cluster [-f config-sample.yaml]

  • 叢集升級

kk upgrade [--with-kubernetes version] [--with-kubesphere version] kk upgrade [--with-kubernetes version] [--with-kubesphere version] [(-f | --file) path]

kubesphere 功能介紹

1)Kubernetes 資源管理 支援工作負載管理、映象管理、服務與應用路由管理 (服務發現)、金鑰配置管理等

2)微服務治理

  • 支援熔斷、灰度釋出、流量管控、限流、鏈路追蹤、智慧路由等完善的微服務治理功能,同時,支援程式碼無侵入的微服務治理

3)DevOps 基於 Jenkins 的視覺化 CI / CD 流水線,支援從倉庫 (GitHub / SVN / Git)、程式碼編譯、映象製作、映象安全、推送倉庫、版本釋出、到定時構建的端到端流水線設定

4)監控

5)應用管理與編排 使用開源的OpenPitrix提供應用商店和應用倉庫服務,提供應用全生命週期管理功能

結語

k8s系列在這一篇算是終結了,下一篇會寫普羅米修斯相關的文章,然後之後按照計劃就是寫我的 poseidon 專案了,目前對自己的要求就是一週一更新。


原文來源:公眾號【六個核彈】

文章轉自:https://cloud.tencent.com/developer/article/2198509

文章來自網路,如有侵權,將第一時間刪除內容。