インストールKubernetesクラスタ(C)は、マスター構成KubernetesのCentOSのマスターノードに搭載されています

インストールKubernetesマスタノードは、実行etcdデータベースを含むマスター、およびプライマリノードの奇数を実装する際に使用するため、別々にetcdないマスタノードに構成される。

1. kubernets倉庫・コンフィギュレーション・ファイルを生成します

# cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

2.インストールkubeadm、kubelet、kubectl

# yum install kubeadm kubelet kubectl

最初からセットkubectl

# systemctl enable kubectl

前記マスターノードの初期化

初期化コマンド「kubeadm」パラメータ渡し、使用済みのYAMLプロファイルかもしれません。

1)組立初期の準備(オプション)

あなたは鏡の前に準備ができて、その後、初期化コマンドを実行できるように、初期化プロセスは、まず、プルコンテナミラーリングに必要なミラーリングとk8s.gcr.io、必要性の科学、インターネット上に保存されます。

コンポーネントの必要なリストを取得するには

#kubeadm config images list

直接アセンブリ引っ張っコマンドを取得

# kubeadm config images pull

あなたはk8s.gcr.ioから取得するために、デフォルトの倉庫を変更しない場合は、推奨環境科学に直接アクセスすることができます下にも、プルミラーサイトに使用することができます。

# vim k8s-pull-images.sh

#!/bin/bash
REGISTRY=gcr.azk8s.cn/google-containers

images=(
  kube-apiserver:v1.16.3
  kube-controller-manager:v1.16.3
  kube-scheduler:v1.16.3
  kube-proxy:v1.16.3
  pause:3.1
  etcd:3.3.15-0
  coredns:1.6.2
)

for imageName in ${images[@]} ; do
  docker pull ${REGISTRY}/$imageName  
  docker tag ${REGISTRY}/$imageName k8s.gcr.io/$imageName  
  docker rmi ${REGISTRY}/$imageName
done

説明:REGISTRY = mirrorgooglecontainers(注:のみAMD64ミラー)レジストリdockerhubも鏡像、特定の変更に使用することができます。

「kubeadm設定画像一覧」コマンドを取得することができますパッケージのリスト。

# chmod +x k8s-pull-images.sh
# ./k8s-pull-images.sh

上記のスクリプトを保存した後、実行は「ドッキングウィンドウの画像一覧」で結果を表示することができます。

非x86_64のアーキテクチャの画像ファイルをプル

ドッカーレジストリV2.3とドッカー1.10以降、ドッカー、すなわち画像マニフェストリストは、オブジェクトミラーリングのプラットフォーム機能(CPUのアーチやOSの種類、すでにマニフェストの存在を含む新しい画像メディアは、マニフェストリストを入力しサポートすることにより、マルチアーキテクチャドッカーミラーリング機能を実現します)前記仮想マシンを実行しているミラーは、ホスト・アーキテクチャの既存のプラットフォーム・アーキテクチャに基づいて各ミラーを引っ張ってくる引っ張られると具体的には、強く推奨される実施例のエミュレータは、KVM +ように、プラットフォームを引くミラー仮想マシンを実行するためのアーキテクチャarm64 QEMU + QEMU-システムaarch64。
AMD64プラットフォームarm64取らドロップダウン鏡画像に、例えば、ミラーを使用して仮想マシンを引っ張っする方法はありませんならば、あなたは、倉庫の特定のラベルをチェックする必要があり、このようなdocker.ioなど、複数の倉庫があるので、quey.ioので、統一ルールはありません以下は、私が使用する必要があるラベルをまとめたもの

  • k8s.gcr.io/kube-apiserver-arm64:v1.16.3
  • k8s.gcr.io/kube-controller-manager-arm64:v1.16.3
  • k8s.gcr.io/kube-scheduler-arm64:v1.16.3
  • k8s.gcr.io/kube-proxy-arm64:v1.16.3
  • k8s.gcr.io/pause:3.1
  • k8s.gcr.io/etcd-arm:3.3.15-0
  • quey.io/coreos/flannel:0.11.0-arm64
    dockerhub倉庫、次のように、同じアプリケーションの異なるプラットフォームを区別する単純なイメージリポジトリ接頭辞:
  • ARMv8 64ビット(arm64v8):https://hub.docker.com/u/arm64v8/
  • Linux x86-64で(AMD64):https://hub.docker.com/u/amd64/
  • X86-64のWindows(Windowsの-AMD64):https://hub.docker.com/u/winamd64/
    が、マルチアーキテクチャドッカーミラーを構築することをお勧めしますdockerhub、別の出会いの例外coredns:
    docker.io/coredns/coredns: coredns-arm64(corednsの最新バージョンに対応した)
    別の問題のラベルタグのquey.io文言、例えば:
  • quey.io/coreos/flannel:0.11.0-arm64
  • quey.io/coreos/etcd:3.3.15-0-arm64

エクスポートとインポートオフライン環境のミラーリング

オンライン環境でエクスポートダウンロードして、入ってくるオフライン環境をインポートするには、オフライン環境の展開K8S必要

輸出ミラーリング

コマンドおよびフォーマット

docker save -o <path for generated tar file> <image name> [<image2 name>, ...]

例(シングルパッケージ)

docker save -o kube-apiserver-1.16.3.tar k8s.gcr.io/kube-apiserver:v1.16.3

例(一括梱包)

docker save -o k8s-master-1.16.3.tar\
 k8s.gcr.io/kube-apiserver:v1.16.3\
 k8s.gcr.io/kube-controller-manager:v1.16.3\
 k8s.gcr.io/kube-scheduler:v1.16.3\
 k8s.gcr.io/kube-proxy:v1.16.3\
 k8s.gcr.io/pause:3.1\
 k8s.gcr.io/etcd:3.3.15-0\
 k8s.gcr.io/coredns:1.6.2

単一パッケージは、(マスターから分離etcd主として)アーキテクチャの様々な対処するために展開することができ

ミラーリングの紹介

コマンドおよびフォーマット

docker -i -load <path for generated tar file>

例の
初期化に必要なミラー負荷

docker load -i k8s-master-1.16.3.tar
docker load -i kube-apiserver-1.16.3.tar
docker load -i kube-controller-1.16.3.tar
docker load -i kube-scheduler-1.16.3.tar
docker load -i kube-proxy-1.16.3.tar
docker load -i pause-3.3.tar
docker load -i etcd-3.3.15-0.tar
docker load -i coredns-1.6.2.tar

2)コマンドラインパラメータを初期化します

# kubeadm init --kubernetes-version="1.16.3" --pod-network-cidr="10.244.0.0/16"  --service-cidr="10.96.0.0/12" --ignore-preflight-errors=Swap --ignore-preflight-errors=NumCPU --image-reporitory "gcr.azk8s.cn" --dry-run

間で

  • --kuberneteバージョン=「1.15.3」指定は、特定のバージョンをkubernete、「安定-1」、ここでは1.15.0で、非遵守の必要性は、ここで、現在のバージョンに変更されるのデフォルト1.15.3(お問い合わせコマンド "のrpm -qa | grepをkubeadm")。
  • --pod-ネットワークCIDR =「10.244.0.0/16」ネットワークからPODは、定義された一般的に展開するネットワーク・プラグインされている:フランネル本明細書で使用される場合、一貫性(例えば、フランネルとカリコ)、フランネルデフォルト住所:10.244.0.0/16,calicoデフォルトのアドレスは次のとおりです。192.168.0.0/16。
  • --ignore-プリフライトエラーは=二スワップ一NumCPU、それらは無視されたスワップは、二つよりも大きくないゼロエラーとCPUエラーが存在しないです。ここで私は、仮想マシン、メモリの1Gのみを使用するので、そう何のクローズスワップはありません。仮想マシンが仮想CPUを割り当てられています。あなたは無効にスワップしない場合は、編集kubeletの設定ファイル/ etc / sysconfig / kubeletに必要な、無視スワップがエラーを可能にしました。
KUBELET_EXTRA_ARGS="--fail-swap-on=false"
  • kubernete経営陣による--server-CIDR指定されたサービスに割り当てられたネットワークアドレスは、デフォルトのアドレスは10.96.0.0/12です。
  • --image-reporitoryは、家庭gcr.azk8s.cnとして、部品倉庫アドレスの代わりにデフォルトの「k8s.gcr.io」を指定しました。
  • --dryラン試運転は、ちょうど何も間違っている、と実際の初期化がある確認してください。

初期の結果は実行され正常に実行され実行されると、それは自動的にコマンドを引くために画像ファイルk8s.gcr.io必要になります表示されます。

...
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

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/

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join 192.168.122.10:6443 --token kt9uzn.793zkkepgvup3jg8 \
    --discovery-token-ca-cert-hash sha256:1b00c8c653c5573ff89c134bd1e62a54f3640813b0e26b79f387fddb402b0b48

3)初期化するために、構成ファイルを使用します

コンフィギュレーションファイルを取得します。

kubeadm config print init-defaults  > kubeadm-init-config.yaml

設定ファイルを変更します(下記ご確認ください)

...
apiVersion: kubeadm.k8s.io/v1beta2
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
...
dns:
  type: CoreDNS
etcd:
  local:
    dataDir: /var/lib/etcd
...
kind: ClusterConfiguration
kubernetesVersion: v1.16.2
networking:
  dnsDomain: cluster.test
  serviceSubnet: 10.96.0.0/16
  podSubnet: 10.244.0.0/16
...
kind: KubeProxyConfiguration
imageRepository: gcr.k8s.io
kubeProxy:
  config:
    featureGates:
      SupportIPVSProxyMode: true
    mode: ipvs

初期化するコマンドを使用します

kubeadm init -f kubeadm-init-config.yaml

オフライン環境設定ファイルには、rootとしてオンライン環境を初期化していますが、イメージファイルをインポートする必要があります。

4)その後の初期化動作

次に、上述した初期の結果は、ネットワーク環境とインストール準備kubectlのマスターノードの現在のユーザのための後続の必要性を促し

フォルダを作成します。

$ mkdir -p ~/.kube
$ cp /etc/kubernetes/admin.conf ~/.kube/config

ネットワークプラグを取り付け

语法:"kubectl apply -f [podnetwork].yaml"

ここでは、使用フランネルを(coreos R&Dによる)。githubのページでは、特定のインストール手順、アドレスhttps://github.com/coreos/flannelを持っています。

# kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

あなたがいる場合は、オフラインインストールパッケージをダウンロードすることができ、KUBE-flannel.ymlフランネルの画像ファイルは、その後、kubectlインストールを使用します。次のとおりです。

ダウンロードフランネル

docker pulll query.io/coreos/flannel

フランネル包装し、それを保存します

docker save query.io/coreos/flannel -o <your_save_path>/flannel:0.11.0.tar

画像読み込み中フランネル

docker load -i <your_save_path>/flannel:0.11.0

ダウンロードファイルKUBE-flannel.yml

wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

インストールのフランネル

kubectl apply -f kube-flannel.yml

次に、表示するためのコマンド「kubectl GETポッド-n KUBE-システム」を使用することができます。

参考:

追加情報:

  1. kubeadm-config.yaml構成デプロイメントの手順:
    • InitConfiguration:そのようなアドレストークン初期化と同じように使用apiserverなどの初期設定を定義するために使用
    • ClusterConfiguration:apiserverを定義するために使用される、etcd、ネットワーク、スケジューラ、コントローラマネージャの構成項目および他の関連部品マスタ
    • KubeletConfiguration:成分kubelet関連設定項目を定義するために使用
    • KubeProxyConfiguration:に関連する設定項目を定義するためKUBEプロキシコンポーネント

これは、デフォルトkubeadm-config.yamlファイルのみInitConfiguration、ClusterConfiguration二つの部分で見ることができます。我々は2つの部分によってさらなる例示的なファイル操作を生成できます。

# 生成KubeletConfiguration示例文件 
kubeadm config print init-defaults --component-configs KubeletConfiguration
# 生成KubeProxyConfiguration示例文件 
kubeadm config print init-defaults --component-configs KubeProxyConfiguration
  1. あなたがkubeadmを初期化するときkuberneteドッキングウィンドウは、問題のバージョンを承認します
[WARNING SystemVerification]: this docker version is not on the list of validated version: 19.01.1. Latest validated version: 18.06

上記のコマンドに応じて、その後、自分の環境でレポートのバージョンに応じて、あなたがサポートドッカ版を決定するためのgitリポジトリ内kubernetesのchangelogファイルを見ることができます異なります

# yum list docker-ce.x86_64 --showduplicates | sort -r

リストを入手し、インストールのための特定のバージョンを選択

sudo yum -y install docker-ce-[VERSION]
  1. kubeadm初期kubelet最初から設定されていません
[WARNING Service-Kubelet]: kubelet service is not enabled, please run 'systemctl enable kubelet.service'

解決策:最初からコマンドを実行するには、「kubelet.serviceを有効systemctl」

  1. kubeadmの初期設定が無効にスワップではありません。
[ERROR Swap]: running with swap on is not enabled, please disable swap
[preflight] If you know what you are doing, you can make a check non-fatal with '--ignore-preflight-errors=...'

解決策:エンドkubeadmコマンドパラメータ「--ignore-プリフライトエラー=スワップ」末端に添加してもよいです。

  1. ビューの初期化後kubeadm設定
kubeadm config view

おすすめ

転載: blog.51cto.com/huanghai/2455472