centos&UbuntuにK8Sをインストールする方法
1最初のステップはdockerをインストールすることです
- システムソースの更新システムに
独自のミラーアドレスがあり、サーバーが海外にある場合、ダウンロード速度は非常に遅くなります。/etc/apt/sources.lisを開いて、国内のミラーソースに置き換えることができます。
aptアップグレード - ソフトウェアパッケージの更新
システムのソフトウェアコンポーネントを最新の安定バージョンに更新します。
aptアップデート - インストールドッカー
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)をインストールすることです。
- 次のコマンドを実行して、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スワップを閉じるのは、主にパフォーマンスを考慮するためです。もちろん、スワップを閉じたくない場合は、次のものが必要です。
-
编辑/ etc / sysconfig / kubelet、追加KUBELET_EXTRA_ARGS = "– fail-swap-on = false"
#cat / etc / sysconfig / kubelet
KUBELET_EXTRA_ARGS = "– fail-swap-on = false" -
初期化:
#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つしかない場合に使用されます。
考えられる問題:
- [プリフライト]いくつかの致命的なエラーが発生しました:
/ 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):(私はd−u ):(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にアクセスできます。