インストール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-システム」を使用することができます。
参考:
- 参考kubeadm-config.yaml設定構文:https://godoc.org/k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta2
- kubeadm-config.yamlマスターノード:https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/control-plane-flags/
- オープンKUBE-プロキシIPVS:https://github.com/kubernetes/kubernetes/blob/master/pkg/proxy/ipvs/README.md
- 参考kubelet構成例:https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/kubelet-integration/#configure-kubelets-using-kubeadm
追加情報:
- 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
- あなたが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]
- kubeadm初期kubelet最初から設定されていません
[WARNING Service-Kubelet]: kubelet service is not enabled, please run 'systemctl enable kubelet.service'
解決策:最初からコマンドを実行するには、「kubelet.serviceを有効systemctl」
- 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-プリフライトエラー=スワップ」末端に添加してもよいです。
- ビューの初期化後kubeadm設定
kubeadm config view