K8Sバイナリインストール

各ノードのインストール・ドッカ

ヤムヤム-utilsのデバイスマッパー永続データLVM2を-yインストール

yumを-config設定マネージャ--add-レポhttps://download.docker.com/linux/centos/docker-ce.repo

yumをドッキングウィンドウ-CEをインストール-y

猫<< EOF> /etc/docker/daemon.json

{

 "レジストリミラー":[ "https://lvb4p7mn.mirror.aliyuncs.com"]

}

EOF

ドッキングウィンドウを起動しsystemctl

ドッキングウィンドウを有効にsystemctl

 

 

自己署名証明書をTLS:

mkdir SSL && CDのSSL /

wgetのhttps://pkg.cfssl.org/R1.2/cfssl_linux-amd64

wgetのhttps://pkg.cfssl.org/R1.2/cfssljson_linux-amd64

wgetのhttps://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64

chmodの+ X cfssl_linux-AMD64のcfssljson_linux-AMD64 cfssl-certinfo_linux、AMD64

MV cfssl_linux-AMD64は/ usr / local / binに/ cfssl

MV cfssljson_linux-AMD64は/ usr / local / binに/ cfssljson

MV cfssl-certinfo_linux-AMD64の/ usr / binに/ cfssl-certinfoを

./certificate.sh

LS | grep -v PEM | xargsの-i RM {}

管理者-key.pem CA-key.pem KUBE-プロキシkey.pemサーバー-key.pem

KUBE-proxy.pem ca.pem admin.pem server.pem

 

 

展開 ETCDのクラスタ

タールXF etcd-v3.2.12-linuxの-amd64.tar.gz

MKDIR / OPT / kubernetes / {SSL、ビン、CFG} -p

CPのSSL /サーバー* PEMのSSL / CA * .pemファイルは/ opt / kubernetes / SSL /

CA-key.pem ca.pemサーバー-key.pem server.pem

SCP -rは/ opt / kubernetes / SSL / node01場合:/ opt / kubernetes / SSL

 

MV etcd-v3.2.12-linuxの-AMD64 / etcdは/ opt / kubernetes / binに/

ETC MV-v3.2.12-linuxの-AMD64 / etcdctlは/ opt / kubernetes / binに/

SCP -rは/ opt / kubernetes / binに/ node01場合:/ opt / kubernetes / binに

 

SCP -rは/ opt / kubernetes / CFG / ETCをnode01場合:/ opt / kubernetes / CFG /のETC

ETCD来ました

#[メンバー]

ETCD_NAME = "etcd01"

ETCD_DATA_DIR = "の/ var / libに/ etcd / default.etcd"

ETCD_LISTEN_PEER_URLS = "https://192.168.81.10:2380"

ETCD_LISTEN_CLIENT_URLS = "https://192.168.81.10:2379"

#[クラスタリング]

ETCD_INITIAL_ADVERTISE_PEER_URLS = "https://192.168.81.10:2380"

ETCD_ADVERTISE_CLIENT_URLS = "https://192.168.81.10:2379"

ETCD_INITIAL_CLUSTER = "etcd01 = HTTPS://192.168.81.10:2380、etcd02 = HTTPS://192.168.81.20:2380、etcd03 = HTTPS://192.168.81.30:2380"

ETCD_INITIAL_CLUSTER_TOKENは= "etcdクラスタ"

ETCD_INITIAL_CLUSTER_STATE = "新しいです"

 

SCP /usr/lib/systemd/system/etcd.service node01します。/ usr / lib / systemdに/システム

vimの/usr/lib/systemd/system/etcd.service

[単位]

説明= Etcdサーバー

= network.target後

= network-online.target後

ウォンツ= network-online.target

[サービス]

タイプ=通知

EnvironmentFile = - は/ opt / kubernetes / CFG /のETC

ExecStart =は/ opt / kubernetes / binに/のETC \

--name = $ {ETCD_NAME} \

--dataあなたETCD_DATA_DIR = $ {} \

--listen・ピアのURL = $ {ETCD_LISTEN_PEER_URLS} \

--listen-クライアントのURL = $ {} ETCD_LISTEN_CLIENT_URLSは、http://127.0.0.1:2379 \

--advertise-クライアントのURL = $ {ETCD_ADVERTISE_CLIENT_URLS} \

--initial - 広告ピアのURL = $ {ETCD_INITIAL_ADVERTISE_PEER_URLS} \

--initialクラスタ= $ {ETCD_INITIAL_CLUSTER} \

--initialクラスタトークン= $ {ETCD_INITIAL_CLUSTER} \

新しい--initial-クラスタ状態= \

--cert-ファイル=は/ opt / kubernetes / SSL / server.pem \

--key-ファイル=は/ opt / kubernetes / SSL /サーバー-key.pem \

--peer-CERT-ファイル=は/ opt / kubernetes / SSL / server.pem \

--peerキーファイル=は/ opt / kubernetes / SSL /サーバー-key.pem \

--trusted-CA-ファイル=は/ opt / kubernetes / SSL / ca.pem \

--peer信頼-CA-ファイル=は/ opt / kubernetes / SSL / ca.pem

再起動=オンの失敗

LimitNOFILE = 65536

[インストール]

WantedBy = multi-user.target

 

サービス開始

etcd開始systemctl

etcdを有効systemctl

コマンドの追加

vimのは/ etc / profile

PATH = $ PATH:/ OPT / kubernetes / binに

ソースは/ etc / profile

ビュークラスタのステータス

cd ssl

etcdctl --caファイル= ca.pem --cert-ファイル= server.pem --key-ファイル=サーバー-key.pem --endpoints = "https://192.168.81.10:2379,https://192.168 .81.20:2379、HTTPS://192.168.81.30:2379" クラスタ・健康

 

 

展開のフランネルネットワーク

vimの/usr/lib/systemd/system/flanneld.service

[単位]

説明= Flanneldオーバーレイアドレスetcdエージェント

= network-online.target network.target後

= docker.service前

[サービス]

タイプ=通知

EnvironmentFile =は/ opt / kubernetes / CFG / flanneld

ExecStart =は/ opt / kubernetes / binに/ flanneld --ip-MASQ $ FLANNEL_OPTIONS

ExecStartPost =は/ opt / kubernetes / binに/ mk-docker-opts.sh -k DOCKER_NETWORK_OPTIONS -d /run/flannel/subnet.env

再起動=オンの失敗

[インストール]

WantedBy = multi-user.target

SCPの/usr/lib/systemd/system/flanneld.serviceマスターします。/ usr / lib / systemdに/システム

 

vimの/usr/lib/systemd/system/docker.service

[単位]

説明=ドッカーアプリケーションコンテナエンジン

ドキュメント= HTTPS://docs.docker.com

= network-online.target firewalld.service後

ウォンツ= network-online.target

[サービス]

タイプ=通知

EnvironmentFile = /実行/フランネル/ subnet.env

ExecStart =は/ usr / binに/ dockerd \ $ DOCKER_NETWORK_OPTIONS

ExecReload = / binに/ HUP \ $ MAINPIDを-s殺します

LimitNOFILE =無限大

LimitNPROC =無限大

LimitCORE =無限大

TimeoutStartSec = 0

委任=はい

KillMode =プロセス

再起動=オンの失敗

StartLimitBurst = 3

StartLimitInterval = 60年代

[インストール]

WantedBy = multi-user.target

SCPの/usr/lib/systemd/system/docker.serviceマスターします。/ usr / lib / systemdに/システム

 

Vimのflanneld

FLANNEL_OPTIONS = "--etcd-エンドポイント= HTTPS://192.168.81.10:2379、HTTPS://192.168.81.20:2379、HTTPS://192.168.81.30:2379 \

-etcd-CAFile =は/ opt / kubernetes / SSL / ca.pem \

-etcd-certfileに=は/ opt / kubernetes / SSL / server.pem \

-etcd-キーファイル=は/ opt / kubernetes / SSL /サーバkey.pem」

SCPは/ opt / kubernetes / CFG /フランネルマスターします。/ opt / kubernetes / CFG /

 

タールXFフランネル-v0.9.1-linuxの-amd64.tar.gz

フランネルmk-docker-opts.sh MVは/ opt / kubernetes / binに/

SCPはmk-docker-opts.shマスターをフランネルます。/ opt / kubernetes / binに/

 

割り当てられたサブネットに書き込まれ ETCD ため、flanneld 使用

etcdctl --caファイル= ca.pem --cert-ファイル= server.pem --key-ファイル=サーバー-key.pem --endpoints = "https://192.168.81.10:2379,https://192.168 2379、HTTPS:.81.20 //192.168.81.30:2379" に設定/coreos.com/network/config「{ "ネットワーク": "172.17.0.0/16"、 "バックエンド":{ "タイプ": "VXLAN" }}」

 

 

systemctlデーモンリロード

flanneld.serviceを開始systemctl

flanneldを有効systemctl

ドッキングウィンドウを再起動しsystemctl

 

ビュー割り当てられたフランネルのサブネット

etcdctl --caファイル= ca.pem --cert-ファイル= server.pem --key-ファイル=サーバー-key.pem --endpoints = "https://192.168.81.10:2379,https://192.168 .81.20:2379、HTTPS://192.168.81.30:2379" のls /coreos.com/network/subnets

ビューフランネルの詳細サブネット

etcdctl --caファイル= ca.pem --cert-ファイル= server.pem --key-ファイル=サーバー-key.pem --endpoints = "https://192.168.81.10:2379,https://192.168 .81.20:2379、HTTPS://192.168.81.30:2379" を取得coreos.com/network/subnets/172.17.17.0-24

 

 

以下のためのノードは、ノード作成するkubeconfigのファイルを

RM -rfは/ usr / binに/ kubectl

CDは/ opt / kubernetes / binに/ 

政府kubectl

chmodの+ X kubectl

作成TLSブートストラップトークンを

CD /ルート/ SSL && RZ kubeconfig.sh 

輸出BOOTSTRAP_TOKEN = $(ヘッド-c 16は/ dev / urandomの| OD -An -tx | TR -d '「)

猫> token.csv << EOF

$ {BOOTSTRAP_TOKEN}、kubeletブートストラップ、10001、 "システム:kubeletブートストラップ"

EOF

作成kubeletブートストラップkubeconfigを

輸出KUBE_APISERVER = "https://192.168.81.10:6443"

 

設定するクラスタパラメータ

kubectlコンフィグ設定クラスタkubernetes \

  --certificate-権限=。/ ca.pem \

  --embed-本命=真\

  --server = $ {KUBE_APISERVER} \

  --kubeconfig = bootstrap.kubeconfig

 

クライアント認証パラメータを設定します

kubectlコンフィグセットの資格情報kubelet、ブートストラップ\

  --token = $ {BOOTSTRAP_TOKEN} \

  --kubeconfig = bootstrap.kubeconfig

 

コンテキストパラメータを設定します。

kubectlコンフィグ設定コンテキストのデフォルトの\

  --cluster kubernetes = \

  --user = kubelet、ブートストラップ\

  --kubeconfig = bootstrap.kubeconfig

 

デフォルトコンテキストを設定します

kubectlコンフィグ利用-コンテキストのデフォルト--kubeconfig = bootstrap.kubeconfig

 

作成KUBE-プロキシkubeconfigのファイルを

kubectlコンフィグ設定クラスタkubernetes \

  --certificate-権限=。/ ca.pem \

  --embed-本命=真\

  --server = $ {KUBE_APISERVER} \

  --kubeconfig = KUBE-proxy.kubeconfig

 

kubectlコンフィグ設定-資格情報KUBE-プロキシ\

  --client証明書=。/ KUBE-proxy.pem \

  --clientキー=。/ KUBE-プロキシkey.pem \

  --embed-本命=真\

  --kubeconfig = KUBE-proxy.kubeconfig

 

kubectlコンフィグ設定コンテキストのデフォルトの\

  --cluster kubernetes = \

  --user = KUBE-プロキシ\

  --kubeconfig = KUBE-proxy.kubeconfig

 

kubectl設定を使用-コンテキストのデフォルト--kubeconfig = KUBE-proxy.kubeconfig

结果:bootstrap.kubeconfigのKUBE-proxy.kubeconfig

 

 

展開するマスターノードを

mkdirマスター&& CDマスター

RZ master.zip &&解凍master.zip

など、キューブコントローラマネージャキューブ・スケジューラキューブapiserverは/ opt / Kubernetes / binに/

chmodの+ Xは/ opt / kubernetes / binに/ *

chmodの+ X * .SH

Vimのapiserver.sh

MASTER_ADDRESS = $ {1 - "192.168.81.10"}

インストール KUBE-apiserver

192.168.81.10 ./apiserver.sh //192.168:httpsを。81.10 :2379、HTTPS://192.168。81.20 :2379、HTTPS://192.168。81.30 2379:

token.csv CPは/ opt / kubernetes / CFG /

結果:/usr/lib/systemd/system/kube-apiserver.serviceは/ opt / kubernetes / CFG / KUBE-apiserver

KUBE-apiserverを開始systemctl

インストール KUBE-コントローラマネージャ

./controller-manager.sh 127.0.0.1

インストール KUBE-スケジューラ

./scheduler.sh 127.0.0.1

クラスタの状態を確認します

CSを得るkubectl

 

 

展開ノードのノード

マスターノードの承認

ノードブートストラップ--user = kubeletブートストラップ:kubeletブートストラップ--clusterrole =システムclusterrolebinding作成kubectl

MKDIR node_pakage &&のCD node_pakage /

RZ解凍node.zip &&解凍node.zip

プロキシは/ usr / kubernetes / binに起因するCK /

chmodの+ Xは/ opt / kubernetes / binに/ *

chmodの+ X *、SH

マスターノードパス kubeconfig

SCP * kubeconfig node01ます。/ opt / kubernetes / CFG /

インストール kubelet

Vimのkubelet.sh

192.168.81.20 ./kubelet.sh 10.10.10.2

インストール KUBE-プロキシ

Vimのproxy.sh

./proxy.sh 192.168.81.20

マスターノードの追加ノードを

kubectl GET CSR   ビューノード要求

kubectl証明書は、ノード-CSR-NcST9yP_lzVPXcc00p2g3KFfDMyqaKbTKONBEA_6IEwを承認します

ODEは、   証明書が参加することができます

ノードを取得kubectl  ビューノードを

テスト

kubectl実行nginxの--image = nginxの--replicas = 3

ポッドを取得kubectl

kubectl公開展開ウェブ--port = 88 --target-ポート= 80 --type = NodePort

kubectl GET SVC

 

 

 

展開するダッシュボードを

MKDIR UI && CDのUI

Vimのダッシュボードrbac.yaml

apiVersion:V1

種類:ServiceAccount

メタデータ:

  ラベル:

    K8S-アプリ:kubernetes、ダッシュボード

    addonmanager.kubernetes.io/mode:リコンサイル

  名前:kubernetes、ダッシュボード

  名前空間:KUBE-システム

---

種類:ClusterRoleBinding

apiVersion:rbac.authorization.k8s.io/v1beta1

メタデータ:

  名前:kubernetes-ダッシュボード、最小限

  名前空間:KUBE-システム

  ラベル:

    K8S-アプリ:kubernetes、ダッシュボード

    addonmanager.kubernetes.io/mode:リコンサイル

roleRef:

  apiGroup:rbac.authorization.k8s.io

  種類:ClusterRole

  名前:クラスタ管理者

科目:

  - 種類:ServiceAccount

    名前:kubernetes、ダッシュボード

    名前空間:KUBE-システム

 

Vimのダッシュボードdeployment.yaml

apiVersion:アプリケーション/ v1beta2

種類:展開

メタデータ:

  名前:kubernetes、ダッシュボード

  名前空間:KUBE-システム

  ラベル:

    K8S-アプリ:kubernetes、ダッシュボード

    kubernetes.io/cluster-service: "真"

    addonmanager.kubernetes.io/mode:リコンサイル

スペック:

  セレクタ:

    matchLabels:

      K8S-アプリ:kubernetes、ダッシュボード

  テンプレート:

    メタデータ:

      ラベル:

        K8S-アプリ:kubernetes、ダッシュボード

      注釈:

        scheduler.alpha.kubernetes.io/critical-pod: ''

    スペック:

      serviceAccountName:kubernetes、ダッシュボード

      コンテナ:

      - 名前:kubernetes、ダッシュボード

        画像:registry.cn-hangzhou.aliyuncs.com/google_containers/kubernetes-dashboard-amd64:v1.7.1

        リソース:

          制限:

            CPU:100メートル

            メモリ:300MI

          リクエスト:

            CPU:100メートル

            メモリ:100Mi

        ポート:

        - containerPort:9090

          プロトコル:TCP

        livenessProbe:

          HTTPGET:

            スキーム:HTTP

            パス:/

            ポート:9090

          initialDelaySeconds:30

          timeoutSecondsの:30

      tolerations:

      - キー: "CriticalAddonsOnly"

        オペレータ:「存在」

 

Vimのダッシュボードservice.yaml

apiVersion:V1

種類:サービス

メタデータ:

  名前:kubernetes、ダッシュボード

  名前空間:KUBE-システム

  ラベル:

    K8S-アプリ:kubernetes、ダッシュボード

    kubernetes.io/cluster-service: "真"

    addonmanager.kubernetes.io/mode:リコンサイル

スペック:

  タイプ:NodePort

  セレクタ:

    K8S-アプリ:kubernetes、ダッシュボード

  ポート:

  - ポート:80

    targetPort:9090

確認してください

kubectl GET SVC

おすすめ

転載: www.cnblogs.com/leiwenbin627/p/11493264.html
おすすめ