kk ツールは、k8s クラスター + Kubesphere コンテナー プラットフォームを迅速に構築します。

kk (KubeKey) ツールのインストール - マルチノード モード

ステップ 1: 基本的な環境構成

例証します:

次の手順は、マスター ノードと作業ノードの両方で実行する必要があります。

1. ファイアウォールを閉じるか、必要なポートを開きます

systemctl stop firewalld  # 停止防火墙服务
systemctl disable firewalld # 禁用防火墙服务

説明: 結果

  • ファイアウォールのステータスを表示する

    systemctl status firewalld
    

ここに画像の説明を挿入します

  • ファイアウォール サービスが非アクティブであることが確認できたら、シャットダウンが成功したことを意味します。

  • ファイアウォールを閉じない場合は、以下に示すように必要なポートを閉じることができます。

    ここに画像の説明を挿入します

2. ノードが相互に通信できるようにする

ping 10.13.167.28
ping 10.13.167.102

説明: 結果

ここに画像の説明を挿入します

  • クラスターを構築するためにノードが相互に通信できることを確認する

3. タイムゾーンを設定する

timedatectl set-timezone Asia/Shanghai

例証します:

  • タイムゾーンを確認する

    timedatectl 
    

ここに画像の説明を挿入します

  • タイムゾーンを上海タイムゾーンに設定する

ステップ 2: 環境依存関係をインストールする

例証します:

次の手順は、マスター ノードと作業ノードの両方で実行する必要があります。

1. 依存関係をインストールする

yum install -y socat conntrack ebtables ipset

例証します:

  • ebtables: ebtables は、Linux カーネル内でイーサネット ブリッジのパケット フィルタリング ルールを操作できるようにするイーサネット ブリッジ用のフィルタです。ネットワーク トラフィックの制御、ネットワーク ポリシーの設定などに使用できます。
  • socat: socat は、TCP、UDP、UNIX ソケットなどのさまざまなタイプの接続を確立するために使用される強力なネットワーク ツールです。ポート転送、プロキシ、ネットワーク デバッグなどのタスクに使用できます。
  • ipset: ipset は、IP アドレスのセットを管理するためのツールです。これにより、IP アドレスのコレクションを作成および操作できるようになり、効率的な IP アドレスの照合とフィルタリングが可能になります。ipset は、ファイアウォール設定、アクセス制御リストなどに使用できます。
  • conntrack: conntrack は、Linux カーネルのネットワーク接続のステータスを追跡するために使用される接続追跡ツールです。これを使用して、アクティブな接続、接続追跡テーブルなどを表示および操作できます。conntrack は、ネットワーク セキュリティとネットワーク分析に役立ちます。

2.時刻同期サービスをインストールする

yum install chrony -y # 安装时间同步服务
systemctl enable chronyd.service # 启用时间同步服务
systemctl start chronyd.service # 开启时间同步服务

説明: 結果

  • クロニーステータスの表示

    systemctl status chronyd.service
    

    ここに画像の説明を挿入します

  • chronyc ソースを表示

    chronyc sources
    

    ここに画像の説明を挿入します

  • すべてのノードにこのサービスが存在する場合は、成功を示します。

  • 各ノード時間のステータスを確認する

    timedatectl status
    

    ここに画像の説明を挿入します

例証します:

chronyは、正確なクロック同期と時刻調整機能を提供する、コンピューターの時刻同期用ツールです k8sのインストール時に時刻同期サービスをインストールし、タイムゾーンをUTCではなくアジアと上海に切り替えます。

ステップ 3: kk ツールをインストールする

例証します:

次の操作はマスターノードでのみ実行されます

1. デフォルトの kk リージョンを変更する

export KKZONE=cn

例証します:

Github へのアクセスが制限されている場合は、静的変数を追加できます。それ以外の場合はスキップします。

2. KubKey ツールをダウンロードする

curl -sfL https://get-kk.kubesphere.io | VERSION=v3.0.7 sh -

例証します:

  • インストール結果の表示

    ls
    

ここに画像の説明を挿入します

3. kkツールに権限を追加します。

chmod +x kk

ステップ 4: クラスターを作成する

1. 設定ファイルを作成する

./kk create config --with-kubernetes v1.22.12 --with-kubesphere v3.3.2

例証します:

  • 結果を見る

    ここに画像の説明を挿入します

補足:パラメータの説明

  • config:設定ファイルの作成
  • --with-kubernetes : k8s をインストールし、最新バージョンを使用します。バージョンを指定する場合、インストールする k8s のバージョンを指定できます。
  • --with-kubesphere: kubesphere をインストールし、最新バージョンを使用します。バージョンを指定すると、指定したバージョンのkubesphereをインストールできます

知らせ:

  • 一般に、オールインワン インストールの場合、構成を変更する必要はありません。
  • KubeKey はデフォルトでOpenEBSをインストールし、新規ユーザーを容易にする開発およびテスト環境に LocalPV を提供します。他のストレージ タイプについては、「永続ストレージ構成」を参照してください。
  • KubeSphere 3.3 をインストールするために推奨される Kubernetes バージョン: v1.20.x、v1.21.x、* v1.22.x、* v1.23.x、および * v1.24.x。アスタリスクが付いているバージョンでは、エッジ ノードの一部の機能が利用できない可能性があります。したがって、エッジ ノードを使用する必要がある場合は、v1.21.x をインストールすることをお勧めします。Kubernetes バージョンを指定しない場合、KubeKey はデフォルトで Kubernetes v1.23.10 をインストールします。サポートされている Kubernetes バージョンの詳細については、サポート マトリックスを参照してください。

2. 設定ファイルの編集

apiVersion: kubekey.kubesphere.io/v1alpha2
kind: Cluster
metadata:
  name: sample
spec:  # 指定主机列表,每个主机有名称、地址、内部地址、用户名和密码等属性。
  hosts:
  - {
    
    name: master, address: 10.13.167.28, internalAddress: 10.13.167.28, user: root, password: "123456"} # 每个主机列表中的账户密码需要与本机真实用户密码对应
  - {
    
    name: node1, address: 10.13.167.102, internalAddress: 10.13.167.102, user: root, password: "123456"}
  roleGroups: # 指定角色组
    etcd: # 责存储集群的配置数据、状态信息和元数据。
    - master # etcd 节点名称
    control-plane: # 主节点名称
    - master
    worker: # 工作节点名称
    - node1
  controlPlaneEndpoint: # 指定控制平面的终结点信息,包括域名、地址和端口号。
    ## Internal loadbalancer for apiservers 
    # internalLoadbalancer: haproxy

    domain: lb.kubesphere.local
    address: ""
    port: 6443
  kubernetes: # :指定Kubernetes的版本和集群名称等参数
    version: v1.22.12
    clusterName: cluster.local
    autoRenewCerts: true
    containerManager: docker
  etcd:
    type: kubekey
  network: # 指定网络配置,包括网络插件和Pods和服务的CIDR等参数
    plugin: calico
    kubePodsCIDR: 10.233.64.0/18 # 注意,网络地址不要与真实的Ip地址冲突
    kubeServiceCIDR: 10.233.0.0/18
    ## multus support. https://github.com/k8snetworkplumbingwg/multus-cni
    multusCNI:
      enabled: false
  registry:
    privateRegistry: ""
    namespaceOverride: ""
    registryMirrors: []
    insecureRegistries: []
  addons: []



---
apiVersion: installer.kubesphere.io/v1alpha1
kind: ClusterConfiguration
metadata:
  name: ks-installer
  namespace: kubesphere-system
  labels:
    version: v3.3.2
spec:
  persistence:
    storageClass: ""
  authentication:
    jwtSecret: ""
  zone: ""
  local_registry: ""
  namespace_override: ""
  # dev_tag: ""
  etcd: # 指定Etcd的监控配置和端点信息
    monitoring: false
    endpointIps: localhost
    port: 2379
    tlsEnable: true
  common: # 指定通用配置,包括核心组件、Redis、OpenLDAP等参数
    core:
      console:
        enableMultiLogin: true
        port: 30880
        type: NodePort
    # apiserver:
    #  resources: {}
    # controllerManager:
    #  resources: {}
    redis:
      enabled: false
      volumeSize: 2Gi
    openldap:
      enabled: false
      volumeSize: 2Gi
    minio:
      volumeSize: 20Gi
    monitoring:  # 指定监控配置,包括Prometheus的终结点信息和GPU监控等参数
      # type: external
      endpoint: http://prometheus-operated.kubesphere-monitoring-system.svc:9090
      GPUMonitoring:
        enabled: false
    gpu:
      kinds:
      - resourceName: "nvidia.com/gpu"
        resourceType: "GPU"
        default: true
    es:
      # master:
      #   volumeSize: 4Gi
      #   replicas: 1
      #   resources: {}
      # data:
      #   volumeSize: 20Gi
      #   replicas: 1
      #   resources: {}
      logMaxAge: 7
      elkPrefix: logstash
      basicAuth:
        enabled: false
        username: ""
        password: ""
      externalElasticsearchHost: ""
      externalElasticsearchPort: ""
  alerting:
    enabled: false
    # thanosruler:
    #   replicas: 1
    #   resources: {}
  auditing:
    enabled: false
    # operator:
    #   resources: {}
    # webhook:
    #   resources: {}
  devops:
    enabled: false
    # resources: {}
    jenkinsMemoryLim: 8Gi
    jenkinsMemoryReq: 4Gi
    jenkinsVolumeSize: 8Gi
  events:
    enabled: false
    # operator:
    #   resources: {}
    # exporter:
    #   resources: {}
    # ruler:
    #   enabled: true
    #   replicas: 2
    #   resources: {}
  logging: # 指定日志配置,包括日志边车的副本数等参数
    enabled: false
    logsidecar:
      enabled: true
      replicas: 2
      # resources: {}
  metrics_server:
    enabled: false
  monitoring:
    storageClass: ""
    node_exporter:
      port: 9100
      # resources: {}
    # kube_rbac_proxy:
    #   resources: {}
    # kube_state_metrics:
    #   resources: {}
    # prometheus:
    #   replicas: 1
    #   volumeSize: 20Gi
    #   resources: {}
    #   operator:
    #     resources: {}
    # alertmanager:
    #   replicas: 1
    #   resources: {}
    # notification_manager:
    #   resources: {}
    #   operator:
    #     resources: {}
    #   proxy:
    #     resources: {}
    gpu:
      nvidia_dcgm_exporter:
        enabled: false
        # resources: {}
  multicluster:
    clusterRole: none
  network:
    networkpolicy:
      enabled: false
    ippool:
      type: none
    topology:
      type: none
  openpitrix:
    store:
      enabled: false
  servicemesh:
    enabled: false
    istio:
      components:
        ingressGateways:
        - name: istio-ingressgateway
          enabled: false
        cni:
          enabled: false
  edgeruntime:
    enabled: false
    kubeedge:
      enabled: false
      cloudCore:
        cloudHub:
          advertiseAddress:
            - ""
        service:
          cloudhubNodePort: "30000"
          cloudhubQuicNodePort: "30001"
          cloudhubHttpsNodePort: "30002"
          cloudstreamNodePort: "30003"
          tunnelNodePort: "30004"
        # resources: {}
        # hostNetWork: false
      iptables-manager:
        enabled: true
        mode: "external"
        # resources: {}
      # edgeService:
      #   resources: {}
  terminal:
    timeout: 600

説明: 結果

Kubernetes 関連のパラメータをカスタマイズするには、 「Kubernetes クラスターの構成」を参照してください

3. インストールを開始する

./kk create cluster -f config-sample.yaml

例証します:

kkツールを使用してk8sクラスターをインストールする

ステップ 5: インストール結果を表示する

1. ノードのインストールログを表示する

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

例証します:

Your Kubernetes control-plane has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

Alternatively, if you are the root user, you can run:

  export KUBECONFIG=/etc/kubernetes/admin.conf

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

You can now join any number of control-plane nodes by copying certificate authorities
and service account keys on each node and then running the following as root:

  kubeadm join lb.kubesphere.local:6443 --token 6yfn1e.9dh0m2p3erl9wj72 \
	--discovery-token-ca-cert-hash sha256:0f0ab4fec32eccb17d21ff0dc71e894a7d73475526cea630ee68b460058820fc \
	--control-plane

2. KubeSphere 関連コンポーネントの実行ステータスを確認する

kubectl get pod --all-namespaces

3. キューブスフィアにアクセスする

  • 結果を見る
    ここに画像の説明を挿入します

参考文献

k8s 公式 Web サイト: Kubernetes ドキュメント | Kubernetes

KubeSphere公式サイト:製品紹介(kubesphere.io)

おすすめ

転載: blog.csdn.net/D_boj/article/details/131294709