Kubernetesの最も包括的なインストールノート

centos&UbuntuにK8Sをインストールする方法

1最初のステップはdockerをインストールすることです

  1. システムソースの更新システムに
    独自のミラーアドレスがあり、サーバーが海外にある場合、ダウンロード速度は非常に遅くなります。/etc/apt/sources.lisを開いて、国内のミラーソースに置き換えることができます。
    aptアップグレード
  2. ソフトウェアパッケージの更新
    システムのソフトウェアコンポーネントを最新の安定バージョンに更新します。
    aptアップデート
  3. インストールドッカー
    3.1 Ubuntuのインストールプロセス
    apt-getをdocker.ioインストールし
    、以下のコマンドを実行し、ブートに設定する必要がある場合は3.2
    ドッキングウィンドウを有効systemcd
    ドッキングウィンドウを起動しsystemcd


セントスの場合は、次を使用できます。yuminstall -ydocker.ce
または
wget - P /etc/yum.repos.d/ https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce

Dockerイメージアクセラレーションを構成する場合は、/ etc / docker /daemon.jsonファイルを開いてregistry-mirrorsを追加または変更し、アドレスhttps://registry.docker-cn.comを追加するか、AlibabaCloudやTencentCloudなどのイメージアクセラレーションを入力できます。住所。

{ "registry-mirrors":[

    "https://kzflb.mirror.aliyuncs.com"

]

}

設定を有効にするために再起動ドッカー
sudoのsystemctlデーモンリロード
須藤systemctl再起動ドッカ

もちろん、指定したバージョンをインストールすることもできます(結局のところ、実稼働環境でのサービスは過激すぎることはありません)

次のコマンドを使用して、インストールできるバージョンを表示します

yum list docker-ce --showduplicates | sort -r

例:install dockerceバージョン18.03.0yum
install -y docker-ce-18.03.0.ce-1.el7.centos

2 2番目のステップは、K8S(Kubernetes)をインストールすることです。

  1. 次のコマンドを実行して、httpsツールとk8をインストールします。
    apt-get update && apt-get install -y apt-transport-https curl
    apt-get install -y kubelet kubeadm kubectl --allow-unauthenticated
    次のコマンドを実行して、正常な
    kubeadminitかどうかをテストします。

インストール中に次のような状況が発生した場合は、システムのミラーソースにk8sパッケージが見つからないことを意味します。
aptパッケージ「kubeadm」はありませんが、その名前のスナップがあります。「snapinstallkubeadm」を
試してください。apt
パッケージ「kubectl」はありませんが、その名前のスナップがあります。「snapinstallkubectl」を
試してください。apt
パッケージ「kubelet」はありません。 、しかしその名前のスナップがあります。
「snapinstallkubelet」を試してください

2.1ubuntuの変更

/etc/apt/sources.listファイルを開いて、
debの行を追加できますhttps://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial main

コマンドを実行して、K8を再インストールします。公開鍵が利用できない
ために
次の署名を検証できなかった場合

次に、次のコマンドを実行して、一定期間キーを追加します。
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add

上記のコマンドでは、kubelet、kubeadm、およびkubectlがインストールされます。kubeletはk8s関連のサービス、kubectlはk8s管理クライアント、kubeadmは展開ツールです。Centos
change
cat >> /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name = Kubernetes
baseurl = https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled = 1
gpgcheck = 0
EOF

2.2初期化


セントスの場合は、ファイアウォールをオフにし、selinuxsystemctlを無効にしてfirewalldsystemctlを
停止しますfirewalldsetenforce
0

次のコマンドを実行して初期化します。必要なDockerイメージがネットワークから自動的にダウンロードされます。
このコマンドは、マスターノード(マスター)をデプロイするために使用されます。
kubeadm versionを実行してバージョンを確認します。GitVersion:「v1.17.2」はバージョン番号です。

2.2.1次のコマンドを実行して初期化します

最初にスワップを閉じて
、次のコマンド入力します。swapoff- a
kubernetesスワップを閉じるのは、主にパフォーマンスを考慮するためです。もちろん、スワップを閉じたくない場合は、次のものが必要です。

  1. 编辑/ etc / sysconfig / kubelet、追加KUBELET_EXTRA_ARGS = "– fail-swap-on = false"
    #cat / etc / sysconfig / kubelet
    KUBELET_EXTRA_ARGS = "– fail-swap-on = false"

  2. 初期化:
    #kubeadm init --kubernetes-version = Version-pod-network-cidr = pod network--service-cidr =サービスが生成されるネットワークアドレス--ignore-preflight-errors =スワップ
    はkubeadmによって初期化されます

	kubeadm init --pod-network-cidr=10.244.0.0/16 --ignore-preflight-errors=NumCPU

--Ignore-preflight-errors = NumCPUは、1G1M学生サーバーなどのCPUが1つしかない場合に使用されます。

考えられる問題:

  1. [プリフライト]いくつかの致命的なエラーが発生しました:
    / proc / sys / net / bridge / bridge-nf-call-iptablesの内容が1に設定されていません
    #解决方案:
    echo 1> / proc / sys / net / bridge / bridge-nf- call-iptables
    echo 1> / proc / sys / net / bridge / bridge-nf-call-ip6tables

2.2.2ミラーのダウンロードが必要になる場合があります(壁に囲まれているため)

ただし、Googleに接続する必要があるため、コンテンツをダウンロードできない場合があります。
kubeadm config images listコマンドを使用して、プルする必要のある画像を一覧表示できます。Dockerを介して手動でプルしてみましょう。このプロセスはより面倒であり、画像名を手動で変更する必要があります。
プルメソッドdockerpull {ミラー名}。
Googleはそれにアクセスできませんが、DockerHubは必要なイメージをバックアップしています。
mirrorgooglecontainersこのリポジトリは、対応するミラーをバックアップします。残念ながら、画像は常に最新のバックアップであるとは限りません。アリババクラウド上のgoogle_containersウェアハウスは、バックアップして最新のものにする必要があります。
たとえば、次のミラーが必要です
。k8s.gcr.io
/
kube
-apiserver v1.17.2 k8s.gcr.io/kube-controller-manager:v1.17.2 k8s.gcr.io/kube-scheduler:v1.17.2 k8s.gcr.io /kube-proxy:v1.17.2
k8s.gcr.io/pause:3.1
k8s.gcr.io/etcd:3.4.3-0
k8s.gcr.io/coredns:1.6.5

次に、対応するイメージをプルし、次のコードをコードdown.shに保存してから、chomd 777./down.shを使用してアクセス許可を付与します。

ダウンロードイメージのバージョンは、必要に応じてダウンロードする必要があります。この例で使用されているkubernetes v1.17.2は、v1.17 +より前のバージョンをテストするのに実際に適しています。

#!/bin/bash
images=(
    kube-apiserver:v1.17.2
    kube-controller-manager:v1.17.2
    kube-scheduler:v1.17.2
    kube-proxy:v1.17.2
    pause:3.1
    etcd:3.4.3-0
    coredns:1.6.5
)
for imageName in ${images[@]} ; do
        docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/${imageName}
        docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/${imageName} k8s.gcr.io/${imageName}
        docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/${imageName}
done

最後に、初期初期化コマンドを実行します。
それが機能しない場合は、https://learnku.com/articles/29209でインストールチュートリアルを試すことができます。

2.2.3マスターノードを有効にする

環境変数
exportKUBECONFIG = / etc / kubernetes / admin.confを追加
します。インストールが成功した後、プロンプトに従うこともできます。mkdir
-p $ HOME / .kube
sudo cp -i /etc/kubernetes/admin.conf $ HOME / .kube / config
sudo chown (id − u):( id -u):私はdu (id -g)$ HOME / .kube / config

3 3番目のステップは、ネットワークプラグインを追加することです

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

他の人が作成したyaml構成ファイル
kubectlapply -fを実行しますhttps://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

このステップでyamlを自分で作成することもできます。
実行後
odsecuritypolicy.policy /作成psp.flannel.unprivileged
clusterrole.rbac.authorization.k8s.io/flannel作成
clusterrolebinding.rbac.authorization.k8s.io/flannel作成
作成serviceaccount /フランネル
configmap / KUBE-フランネル-CFG作成
daemonsetを.apps / kube-flannel-ds-amd64作成された
daemonset.apps / kube-flannel-ds-arm64作成された
daemonset.apps / kube -flannel -ds-arm作成された
daemonset.apps / kube-flannel-ds-ppc64le作成された
daemonset.apps / kube-flannel-ds-s390x作成
ここで、flannelをインストールすると、イメージがダウンロードされない場合があります。手動でダウンロードできます。

フランネルのドッカー画像を手動でプルします

docker pull easzlab / francel:v0.11.0-amd64

画像名を変更する

docker tag easzlab / flannel:v0.11.0-amd64 quay.io/coreos/flannel:v0.11.0-amd64

元のミラーラベルを削除します

docker rmi easzlab / francel:v0.11.0-amd64

構成を保存して使用する
kubeadmjoin

7.ノードを確認し
、次のコマンドを実行してノード
kubectl getnodesを確認します

結果の例

root@instance-wxxixh4k:~# kubectl get nodes
NAME                STATUS   ROLES    AGE     VERSION
instance-wxxixh4k   Ready    master   9m23s   v1.17.2

成功したことを示し、ノードを追加および削除できます。

4 4番目のステップは、パネルを取り付けることです(押すことなく取り付けることができます)

4.1yaml構成ファイルのダウンロード

wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/alternative/kubernetes-dashboard.yaml

cat kubernetes-dashboard.yamlコマンドを使用して、yamlファイルの内容を表示し、バージョン番号を記録します。
ファイルには以下の内容の文があり、その後の番号がバージョン番号です。
画像:k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1

kubernetes-dashboardミラーイメージをプルします(後でリビジョン番号をメモします)。
ドッキングウィンドウプルregistry.aliyuncs.com/google_containers/kubernetes-dashboard-amd64:v1.10.1
ドッキングウィンドウタグregistry.aliyuncs.com/google_containers/kubernetes-dashboard-amd64:v1.10.1 k8s.gcr.io/kubernetes-dashboard-amd64: v1.10.1 docker
rmi Registry.aliyuncs.com/google_containers/kubernetes-dashboard-amd64:v1.10.1

安装kubernetes-ダッシュボード
kubectlcreate -f kubernetes-dashboard.yaml

インストール結果を表示する
kubectlget pod --namespace = kube-system

パネルを構成し、管理者アカウントと権限を追加します。
次のコンテンツをコピーして端末に貼り付け、Enterキーを押します。
cat <dashboard-admin.yaml
apiVersion:rbac.authorization.k8s.io/v1beta1
kind:ClusterRoleBinding
Metadata:
name:kubernetes-dashboard
labels:
k8s-app:kubernetes-dashboard
roleRef:
apiGroup:rbac.authorization.k8s.io
kind: ClusterRole
名:cluster-admin
サブジェクト:

  • 種類:ServiceAccount
    名:kubernetes-ダッシュボード
    名前空間:kube-システム
    EOF

上記のコードは、dashboard-admin.yamlファイルを作成します。
インストールを実行します
kubectlcreate -fdashboard-admin.yaml

ノードポートの表示
kubectlget svc --namespace = kube-system

kubernetes-dashboardという名前のノードを見つけて、ポートを記録します。
ポッド名を表示
kubectlget pod --namespace = kube-system

それらの1つは、レコード名であるkubernetes-dashboard-6bf999dbcc-nc4hqなどのkubernetes-dashboardで始まります。

4.2アクセスパネル(ダッシュボード)

次の方法が利用できない場合は、
https
://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/を参照してください。方法1:kubectlプロキシはkubectlプロキシを
実行し
ます。

イントラネットでは、次のアドレスを使用して
http:// localhost:8001 / api / v1 / namespaces / kube-system / services / https:kubernetes-dashboard:/ proxy /にアクセスできます。
方法2:APIサーバーの
アクセス方法
https:// {master -ip}:{apiserver-port} / api / v1 / namespaces / kube-system / services / https:kubernetes-dashboard:/ proxy /
これはここでは繰り返されません。詳細については、ネットワーク情報を参照してください。
方法3:直接露光ポート(NodePort)は
推奨されません。kubectl -n kube-system edit servicekubernetes-dashboardを
実行し
ます

タイプ:ClusterIPを見つけて、タイプ:NodePortに変更します。
また、ポートも変更できます。
ヒント:
入力するときは、最初に矢印キーボードを使用して適切な位置に移動します。文字を削除するには、Deleteキーを使用します。
次に、Escキーを押してiキーを
押して編集に入ります。Escキーを押して、Shift + qを押すと、コンテンツを入力するように求められます。 wq!と入力して、保存して終了します。
kubectl -n kube-system get service kubernetes-dashboardを実行して、ポートマッピングを表示します。

:80:31901 / TCP

アクセス方法はhttps:// {ip}:31901です。
方法3
kubectl port-forward kubernetes-dashboard-6bf999dbcc-nc4hq 8080:80 --namespace = kube-system&


10.kubectlをテストするためのノードを追加します。展開を作成します。nginx--image=
nginxkubectlは展開を公開します。nginx--port = 8090 --type = NodePort

外部ネットワークから8090にアクセスすると、Nginxにアクセスできます。

おすすめ

転載: blog.csdn.net/uucckk/article/details/105193431
おすすめ