コンテナクラウドプラットフォームKubeSphere:インストールKubeSphere
方言
インストールはこちらkubesphere v2.1のバージョンは、主に関連して設置されている公式ドキュメントインストールガイド、および自分の個人的な経験クリニックのいくつか、することもできます直接公式のインストールと。インストールは、既存のKubenetesクラスタに搭載されています。
公式https://kubesphere.com.cn/docs/v2.0/zh-CN/installation/install-on-k8s/と組み合わせます
インストール
1. Kubernetes
バージョン要件1.13.0 ≤ K8s Version < 1.16
、KubeSphere依存Kubernetes 1.13.0
リリース後の新しい特徴は、実行することができるkubectl version
ことを確認します:
$ kubectl version | grep Server
Server Version: version.Info{Major:"1", Minor:"13", GitVersion:"v1.13.5", GitCommit:"2166946f41b36dea2c4626f90a77706f426cdea2", GitTreeState:"clean", BuildDate:"2019-03-25T15:19:22Z", GoVersion:"go1.11.5", Compiler:"gc", Platform:"linux/amd64"}
説明:結果として得られる出力することを注意
Server Version
表示があればラインは、GitVersion
より大きいv1.13.0
、Kubernetesバージョンがインストールされています。未満ならばv1.13.0
、あなたは見ることができます V1.12からV1.13へのアップグレードkubeadmクラスタを アップグレード次のバージョンK8Sに。
- あなたがインストールされている確認し
Helm
、そしてHelm
少なくともバージョン2.10.0
。端末の実装ではhelm version
、のような出力を得るために
$ helm version
Client: &version.Version{SemVer:"v2.13.1", GitCommit:"618447cbf203d147601b4b9bd7f8c37a5d39fbb4", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.13.1", GitCommit:"618447cbf203d147601b4b9bd7f8c37a5d39fbb4", GitTreeState:"clean"}
少なくとも利用可能3.クラスタ従来のメモリ10G
上。あなたが実行している場合はallinone
、インストールを実行はfree -g
利用可能なリソースを見ることができます
root@kubernetes:~# free -g
total used free shared buff/cache available
Mem: 16 4 10 0 3 2
Swap: 0 0 0
-
(非必須)KubeSphere非常に永続ストレージを使用することが提案され、ない
kubectl get sc
現在のデフォルト設定の場合を見てみましょうstorageclass
。root@kubernetes:~$ kubectl get sc NAME PROVISIONER AGE ceph kubernetes.io/rbd 3d4h csi-qingcloud (default) disk.csi.qingcloud.com 54d glusterfs kubernetes.io/glusterfs 3d4h
ヒント:あなたが永続ストレージを設定しない場合、インストールはこのモードが正常にインストールすることができ、ホストパスデフォルトを使用しますが、ポッド他の問題をもたらす、公式の推奨構成環境STORAGECLASS使用永続ストレージによりドリフトすることがあります。
あなたはこれらの点を満たしている場合、上記の点は、ゼロから必要なコンポーネントをインストールする必要は満たしていない場合、直接ジャンプクラスタ化され3.部署 KubeSphere
、それにインストールを。
環境
IP | ホスト名 | CPU | メモリ | ディスク |
---|---|---|---|---|
192.168.181.100 | マスター-001 | 2 | 2G | 40G |
192.168.181.101 | ノード001 | 2 | 2G | 40G |
192.168.181.102 | ノード002 | 2 | 2G | 40G |
192.168.181.103 | ノード003 | 2 | 2G | 40G |
ヘルムをインストール1.
ダウンロード
ヘルムは、我々は以下のアドレスでダウンロードすることができますリリースのgithubのに直接バイナリファイルに行くされています
https://github.com/helm/helm/releases
国内ネットワーク上の理由として、アクセスない科学の学生は、ダウンロード、バージョン2.13.1-のlinux-amd64のに自分のWebサイトに行くことができます。
リンク:https://pan.baidu.com/s/1bu-cpjVaSVGVXuWvWoqHEw
抽出コード:5wds
インストール
# 解压
$ tar -zxvf helm-v2.13.1-linux-amd64.tar.gz
$ mv linux-amd64/helm /usr/local/bin/
# 没配置环境变量的需要先配置好
$ export PATH=$PATH:/usr/local/bin/
# 验证
$ helm version
ティラーのインストール
ティラーは、ミラーを引っ張る原因storage.googleapis.comにKubernetes展開クラスタ、ヘルムデフォルトで展開され、我々は、デフォルトの科学的、インターネットで、ここではありません。
# 指向阿里云的仓库
$ helm init --client-only --stable-repo-url https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/charts/
$ helm repo add incubator https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/charts-incubator/
$ helm repo update
# 因为官方的镜像无法拉取,使用-i指定自己的镜像
$ helm init --service-account tiller --upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.13.1 --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
# 创建TLS认证服务端
$ helm init --service-account tiller --upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.13.1 --tiller-tls-cert /etc/kubernetes/ssl/tiller001.pem --tiller-tls-key /etc/kubernetes/ssl/tiller001-key.pem --tls-ca-cert /etc/kubernetes/ssl/ca.pem --tiller-namespace kube-system --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
エラーインストール:v1.16.0バージョンKubernetes以上の場合は、エラーが発生する可能性のあるサーバは要求されたリソースのエラーを見つけることができませんでした。これは拡張/ v1beta1によるものであるアプリケーション/ V1に置き換えられました。私がリリースされたバージョン2.15または3で、この問題が発生してはならないと考えています。
解決策は、インストールのようなステートメントを使用することです
$ helm init -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.13.1 --stable-repo-url http://mirror.azure.cn/kubernetes/charts/ --service-account tiller --override spec.selector.matchLabels.'name'='tiller',spec.selector.matchLabels.'app'='helm' --output yaml | sed 's@apiVersion: extensions/v1beta1@apiVersion: apps/v1@' | kubectl apply -f -
ティラーへの許可
# 创建serviceaccount
$ kubectl create serviceaccount --namespace kube-system tiller
# 创建角色绑定
$ kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
検証
# 查看Tiller的serviceaccount,需要跟我们创建的名字一致:tiller
$ kubectl get deploy --namespace kube-system tiller-deploy -o yaml|grep serviceAccount
# 验证pods
$ kubectl -n kube-system get pods|grep tiller
# 验证版本
$ helm version
NFSをインストール2.
NFSは、比較的シンプルで実用的なストレージとして使用しました
ノードまたは短い他のマシンへのインストールノード、マスターをインストールしていない、常にマスターノードのインストールを迅速に接続することはできません
インストール
$ yum install nfs-utils rpcbind -y
コンフィギュレーション・ファイル共有
$ vim /etc/exports
# 粘贴进去
/home/data *(insecure,rw,async,no_root_squash)
#保存后创建文件
$ mkdir /home/data
# 设置权限
$ chmod 777 /home/data
サービス開始
#先启动rpc服务
$ systemctl start rpcbind
#设置开机启动
$ systemctl enable rpcbind
# 启动nfs服务
$ systemctl start nfs-server
#设置开机启动
$ systemctl enable nfs-server
インストールSTORAGECLASS
storageclass.yaml
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: nfs-provisioner
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: nfs-provisioner-runner
namespace: default
rules:
- apiGroups: [""]
resources: ["persistentvolumes"]
verbs: ["get", "list", "watch", "create", "delete"]
- apiGroups: [""]
resources: ["persistentvolumeclaims"]
verbs: ["get", "list", "watch", "update"]
- apiGroups: ["storage.k8s.io"]
resources: ["storageclasses"]
verbs: ["get", "list", "watch"]
- apiGroups: [""]
resources: ["events"]
verbs: ["watch", "create", "update", "patch"]
- apiGroups: [""]
resources: ["services", "endpoints"]
verbs: ["get","create","list", "watch","update"]
- apiGroups: ["extensions"]
resources: ["podsecuritypolicies"]
resourceNames: ["nfs-provisioner"]
verbs: ["use"]
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: run-nfs-provisioner
subjects:
- kind: ServiceAccount
name: nfs-provisioner
namespace: default
roleRef:
kind: ClusterRole
name: nfs-provisioner-runner
apiGroup: rbac.authorization.k8s.io
---
kind: Deployment
apiVersion: apps/v1
metadata:
name: nfs-client-provisioner
spec:
selector:
matchLabels:
app: nfs-client-provisioner
replicas: 1
strategy:
type: Recreate
template:
metadata:
labels:
app: nfs-client-provisioner
spec:
serviceAccount: nfs-provisioner
containers:
- name: nfs-client-provisioner
image: quay.io/external_storage/nfs-client-provisioner:latest
imagePullPolicy: IfNotPresent
volumeMounts:
- name: nfs-client
mountPath: /persistentvolumes
env:
- name: PROVISIONER_NAME
value: fuseim.pri/ifs
- name: NFS_SERVER
value: 此处修改为nfs服务器ip
- name: NFS_PATH
value: /home/data
volumes:
- name: nfs-client
nfs:
server: 此处修改为nfs服务器ip
path: /home/data
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: nfs-storage
provisioner: fuseim.pri/ifs
reclaimPolicy: Retain
外観を作成します。
$ kubectl apply -f storageclass.yaml
デフォルトSTORAGECLASSを設定します。
$ kubectl patch storageclass nfs-storage -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
3.展開KubeSphere
-
Kubernetesという名前のクラスタを作成
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
-
シークレットクラスタKubernetes CA証明書を作成します。
注:現在のクラスタ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
-
証明書は、秘密をetcd作成しました。
注:実際の位置etcd証明書に基づいてクラスタを作成します。
-
etcdがすでに証明書を設定した場合、作成するには、以下を参照してください。
$ kubectl -n kubesphere-monitoring-system create secret generic kube-etcd-client-certs \ --from-file=etcd-client-ca.crt=/etc/kubernetes/pki/etcd/ca.crt \ --from-file=etcd-client.crt=/etc/kubernetes/pki/etcd/healthcheck-client.crt \ --from-file=etcd-client.key=/etc/kubernetes/pki/etcd/healthcheck-client.key
-
etcdが証明書を設定していない場合は、空のシークレット(該当Kubernetes Kubeadmが作成したクラスタ環境で、次のコマンドを)作成します。
$ kubectl -n kubesphere-monitoring-system create secret generic kube-etcd-client-certs
-
ローカルリポジトリにkubesphereインストーラのクローニング。
$ git clone https://github.com/kubesphere/ks-installer.git
-
KS-インストーラを入力すると、設定を変更します
以下に説明するパラメータの修飾リスト
$ cd deploy $ vim kubesphere-installer.yaml # 1. 修改镜像地址 这是我自己的阿里云镜像 image: registry.cn-shenzhen.aliyuncs.com/zahngchengji/ks-installer:v2.1.0 # 2. 保存后,拷贝同级目录的config.yaml所有配置信息到kubesphere-installer.yaml里面,可以放在最后。config.yaml的配置是配置了所有组件的开关,默认都是False,如果想开启改为True即可 #3. 修改etcd 配置 --- apiVersion: v1 data: ks-config.yaml: | --- persistence: storageClass: "" # 默认为空“”,则使用 default StorageClass etcd: monitoring: True endpointIps: 192.168.181.101 # etcd地址,如etcd为集群,地址以逗号分离 port: 2379 tlsEnable: False # 是否开启etcd TLS证书认证(True / False)
保存
-
KubeSphereは、クラスタKubernetesで展開しました
$ kubectl apply -f kubesphere-installer.yaml
-
展開の情報を見ます
$ kubectl get pod -n kubesphere-system ks-installer-76d4fcf7cb-4zsfz 1/1 Running 0 7h56m
正常に起動した後、ログを表示するには
-
展開ログを表示します。
$ kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l job-name=kubesphere-installer -o jsonpath='{.items[0].metadata.name}') -f
-
使用して、サービスコンソールポートを確認し
IP:30880
、クラスタのアクセスKubeSphere UIインターフェイス、デフォルトの管理者アカウントをadmin/P@88w0rd
。# 查看 ks-console 服务的端口 默认为 NodePort: 30880 $ kubectl get svc -n kubesphere-system NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE ks-account ClusterIP 10.110.150.185 <none> 80/TCP 7h36m ks-apigateway ClusterIP 10.106.157.145 <none> 80/TCP 7h36m ks-apiserver ClusterIP 10.104.176.104 <none> 80/TCP 7h36m ks-console NodePort 10.106.168.150 <none> 80:30880/TCP 7h36m openldap ClusterIP 10.105.165.136 <none> 389/TCP 7h37m redis ClusterIP 10.111.64.46 <none> 6379/TCP 7h37m
-
最終ブラウザアクセスhttp://192.168.181.103:30880/
パラメータ説明
パラメータ | 説明 | デフォルト値 | |
kube_apiserver_host | 現在のクラスタKUBE-apiserverアドレス(IP:ポート) | ||
etcd_tls_enable | オープンetcd TLS証明するかどうか(真/偽) | 真 | |
etcd_endpoint_ips | コンマアドレス(例:192.168.0.7,192.168.0.8,192.168.0.9)で区切られたetcdクラスタとしてetcdアドレス、 | ||
etcd_port | etcdポート(別のポートは、このパラメータを設定するデフォルト2379) | 2379 | |
disableMultiLogin | かどうかは、マルチ符号を閉じます(真/偽) | 真 | |
elk_prefix | ログインデックス | logstash | |
keep_log_days | ログの保持時間(日数) | 7 | |
metrics_server_enable | かどうかはmetrics_serverをインストールする(真/偽) | 真 | |
istio_enable | istioインストールするかどうか(真/偽) | 真 | |
固執 | 有効 | かどうかは、(真/偽)永続ストレージを有効にする(非テスト環境は、データの永続性を有効にすることをお勧めします) | |
STORAGECLASS | すでにSTORAGECLASS作成した環境に存在する永続的なストレージ要件を有効にする(デフォルトでは、デフォルトのSTORAGECLASS、空です) | 「」 | |
containersLogMountedPath(オプション) | コンテナは、マウントパスを記録します | 「の/ var / libに/ドッキングウィンドウ/コンテナ」 | |
external_es_url(オプション) | 外部アドレスES、外部のドッキングをサポートしたES | ||
external_es_port(オプション) | ESと外部ドッキングをサポートするための外部ポートをES | ||
local_registry(オフラインでの展開を使用) | オフライン展開、ローカルリポジトリドッキング(ローカルリポジトリにスクリプト/ download-docker-images.shをインストールするために使用される画像パラメータを用いて) |
✏️書き込みはあなたの貴重な賞賛を残すことは容易ではありません。