記事ディレクトリ
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)