各ノードのインストール・ドッカ
ヤムヤム-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