K8Sクラスター実践のオフラインマニュアル構築

1. 基本的な環境の準備

1.1 環境の準備

オペレーティング システム: Linux CentOS

CPU名 インストール済みソフトウェア
k8s-マスター be apiserver、be controller-manager、be scheduler
k8s-ノード-1 kubelet、kube プロキシ、docker
k8s-ノード-2 kubelet、kube プロキシ、docker

1.2 lszrz のインストール

链接:https://pan.baidu.com/s/1e2KCTnnU0dy6y6zA9vlsLw 
提取码:qi9j

ステップ 1: lrzsz-0.12.20 パッケージを解凍します。

tar zxvf lrzsz-0.12.20.tar.gz

ステップ 2: インストール パスを構成します。

cd lrzsz-0.12.20/
./configure --prefix=/usr/local/lrzsz

3 番目のステップ: コンパイルしてインストールします。

make & make install

ステップ 4: ソフト リンクを作成します。

cd /usr/bin
ln -s /usr/local/lrzsz/bin/lrz rz
ln -s /usr/local/lrzsz/bin/lsz sz

1.3 Node ノードに Docker をインストールする

链接:https://pan.baidu.com/s/1gHKUMyDohAeBDF0JCWKZJA 
提取码:ua6g

最初のステップ: docker 依存関係パッケージをインストールします。

yum localinstall audit-libs-python-2.7.6-3.el7.x86_64.rpm -y
yum localinstall checkpolicy-2.5-4.el7.x86_64.rpm -y
yum localinstall libcgroup-0.41-13.el7.x86_64.rpm -y
yum localinstall libsemanage-python-2.5-8.el7.x86_64.rpm -y
yum localinstall libtool-ltdl-2.4.2-22.el7_3.x86_64.rpm -y
yum localinstall python-IPy-0.75-6.el7.noarch.rpm -y
yum localinstall setools-libs-3.3.8-1.1.el7.x86_64.rpm -y
yum localinstall policycoreutils-python-2.5-17.1.el7.x86_64.rpm -y
yum localinstall container-selinux-2.19-2.1.el7.noarch.rpm -y
yum localinstall docker-ce-17.12.0.ce-1.el7.centos.x86_64.rpm -y

ステップ 2: /etc/docker/daemon.json ファイルを編集します。

{
    
    
  "insecure-registries":[],
  "hosts": ["unix:///var/run/docker.sock"],
  "storage-driver": "overlay2",
  "storage-opts": ["overlay2.override_kernel_check=true"],
  "log-driver": "json-file",
  "log-opts": {
    
    
    "max-size": "20m",
    "max-file": "10"
  },
  "live-restore": true
}

ステップ 3: docker サービスを再起動します。

systemctl daemon-reload
systemctl restart docker

2. マスター ノードをデプロイする

2.1 etcd のインストール

链接:https://pan.baidu.com/s/1mlC0oOQ1z6Ddu8fbyHcEGQ 
提取码:teqx

ステップ 1: etcd-v3.3.9-linux-amd64.tar.gz を解凍します。

tar zxvf etcd-v3.3.9-linux-amd64.tar.gz

ステップ 2: 解凍後、etcdctl と etcd を /usr/bin ディレクトリにコピーします。

cd etcd-v3.3.9-linux-amd64
mv etcdctl etcd /usr/bin

ステップ 3: /usr/lib/systemd/system/etcd.service ファイルを編集します。

[Unit]
Description=Etcd Server
After=network.target

[Service]
Type=notify
EnvironmentFile=-/etc/etcd/etcd.conf
WorkingDirectory=/var/lib/etcd/ 
ExecStart=/usr/bin/etcd --listen-client-urls http://0.0.0.0:2379 --advertise-client-urls http://0.0.0.0:2379 --listen-peer-urls http://0.0.0.0:2389
Restart=on-failure

[Install]
WantedBy=multi-user.target

ステップ 4: etcd サービスを開始します。

systemctl daemon-reload
systemctl start etcd
systemctl status etcd
systemctl enable etcd

ステップ 5: etcd クラスターのステータスを確認します。

etcdctl cluster-health

2.2 k8s のインストール

链接:https://pan.baidu.com/s/1bL5w5Z_QGp-dvnoQeaNX7Q 
提取码:dr3c

k8s-master ノードに K8S をインストールする手順:
ステップ 1: kubernetes-server-linux-amd64.tar.gz を解凍します;
ステップ 2: /kubernetes/server/bin ディレクトリに入り、kube-apiserver と kube-controller -manager を追加します、kube-scheduler、および kubectl 実行ファイルが /usr/bin ディレクトリにコピーされます。
ステップ 3: kube-apiserver、kube-controller-manager、および kube-scheduler サービスを構成します。

2.2.1 kube-apiserver の構成

  • kube-apiserver サービスを定義します。
vi /usr/lib/systemd/system/kube-apiserver.service

[Unit]
Description=Kubernetes API Server
Documentation=https://github.com/kubernetes/kubernetes
After=etcd.service
Wants=etcd.service
[Service]
EnvironmentFile=/etc/kubernetes/apiserver
ExecStart=/usr/bin/kube-apiserver $KUBE_API_ARGS
Restart=on-failure
Type=notify
[Install]
WantedBy=multi-user.target
  • kube-apiserver のパラメーター構成情報を定義します。
mkdir /etc/kubernetes
vi /etc/kubernetes/apiserver

KUBE_API_ARGS="--storage-backend=etcd3 --etcd-servers=http://127.0.0.1:2379 --insecure-bind-address=0.0.0.0 --insecure-port=8080 --service-cluster-ip-range=169.169.0.0/16 --service-node-port-range=1-65535 --admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,DefaultStorageClass,ResourceQuota --logtostderr=true --log-dir=/var/log/kubernetes --v=2"

2.2.2 kube-controller-manager の設定

  • kube-controller-manager サービスを定義します。
vi /usr/lib/systemd/system/kube-controller-manager.service

[Unit]
Description=Kubernetes Controller Manager
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
After=kube-apiserver.service
Requires=kube-apiserver.service

[Service]
EnvironmentFile=-/etc/kubernetes/controller-manager
ExecStart=/usr/bin/kube-controller-manager $KUBE_CONTROLLER_MANAGER_ARGS
Restart=on-failure
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target
  • kube-controller-manager のパラメーター構成情報を定義します。
vi /etc/kubernetes/controller-manager

KUBE_CONTROLLER_MANAGER_ARGS="--master=http://k8s-master:8080 --logtostderr=true --log-dir=/var/log/kubernetes --v=2"

2.2.3 kube-scheduler の構成

  • kube-scheduler サービスを定義します。
vi /usr/lib/systemd/system/kube-scheduler.service

[Unit]
Description=Kubernetes Scheduler
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
After=kube-apiserver.service
Requires=kube-apiserver.service

[Service]
EnvironmentFile=-/etc/kubernetes/scheduler
ExecStart=/usr/bin/kube-scheduler $KUBE_SCHEDULER_ARGS
Restart=on-failure
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target
  • kube-scheduler のパラメーター構成情報を定義します。
vi /etc/kubernetes/scheduler

KUBE_SCHEDULER_ARGS="--master=http://k8s-master:8080 --logtostderr=true --log-dir=/var/log/kubernetes --v=2"

サービスの構成が完了したら、すべてのサービスを開始し、ブートを自動的に開始するように設定します。

systemctl daemon-reload
systemctl start kube-apiserver kube-controller-manager kube-scheduler
systemctl status kube-apiserver kube-controller-manager kube-scheduler
systemctl enable kube-apiserver kube-controller-manager kube-scheduler

3. ノードノードをデプロイする

3.1 k8s のインストール

ノード node への k8s のデプロイも、次の 3 つの手順に従います:
ステップ 1: kubernetes-server-linux-amd64.tar.gz を解凍します;
ステップ 2: 2) kubernetes/server/bin ディレクトリに入り、kubelet、kube -proxy の実行ファイルが /usr/bin ディレクトリにコピーされます;
ステップ 3: 3) kubelet および kube-proxy サービスを構成します。

3.1.1 kubelets の設定

  • kubelet サービスを定義します。
vi /usr/lib/systemd/system/kubelet.service

[Unit]
Description=Kubernetes Kubelet Server
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
After=docker.service
Requires=docker.service

[Service]
WorkingDirectory=/var/lib/kubelet
EnvironmentFile=-/etc/kubernetes/kubelet
ExecStart=/usr/bin/kubelet $KUBELET_ARGS
Restart=on-failure
KillMode=process

[Install]
WantedBy=multi-user.target
  • kubelet のパラメーター構成情報を定義します。
mkdir -p /var/lib/kubelet
mkdir -p /etc/kubernetes
vi /etc/kubernetes/kubelet

KUBELET_ARGS="--kubeconfig=/etc/kubernetes/kubeconfig --hostname-override=k8s-node-1 --logtostderr=true --log-dir=/var/log/kubernetes --v=2 --fail-swap-on=false"

上記の--hostname-overrideパラメーターは、現在のノード node が配置されているホストの IP アドレスまたはホスト名を指定します。

  • kubelet が apiserver に接続するためのパラメーター情報を構成します。
vi /etc/kubernetes/kubeconfig

apiVersion: v1
kind: Config
clusters:
- cluster:
    server: http://k8s-master:8080
  name: local
contexts:
- context:
    cluster: local
  name: mycontext
current-context: mycontext

3.1.2 kube-proxy の設定

  • kube-proxy サービスを定義します。
vi /usr/lib/systemd/system/kube-proxy.service

[Unit]
Description=Kubernetes Kube-proxy Server
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
After=network.service
Requires=network.service

[Service]
EnvironmentFile=/etc/kubernetes/proxy
ExecStart=/usr/bin/kube-proxy $KUBE_PROXY_ARGS
Restart=on-failure
LimitNOFILE=65536
KillMode=process

[Install]
WantedBy=multi-user.target
  • kube-proxy のパラメーター構成情報を定義します。
vi /etc/kubernetes/proxy

KUBE_PROXY_ARGS="--master=http://k8s-master:8080 --hostname-override=k8s-node-1 --logtostderr=true --log-dir=/var/log/kubernetes --v=2"

上記の--hostname-overrideパラメーターは、現在のノード node が配置されているホストの IP アドレスまたはホスト名を指定します。

すべてのサービス構成が完了したら、すべてのサービスを開始し、自動的に開始するように設定します。

systemctl daemon-reload
systemctl start kubelet kube-proxy
systemctl status kubelet kube-proxy
systemctl enable kubelet kube-proxy

3.2 クラスターのヘルスチェック

マスター ノードで次のコマンドを実行します。
ここに画像の説明を挿入ここに画像の説明を挿入

4番目に、基本イメージをインストールします

4.1 centos7-orcalejdk8 のインストール

プロジェクト開始時にjdk環境が必要なため、事前にノードnodeにcentos7-oraclejdk8.tarイメージを用意しておく必要があります。

cd /root/k8s/imags/
docker load < centos7-oraclejdk8.tar
docker images
docker tag [镜像ID] centos7-orcalejdk8:v1

注:docker loadコマンドを実行すると、次のエラーが発生する場合があります。
ここに画像の説明を挿入次のコマンドに変更できます。

cat [镜像压缩包] | docker import[image_name:tag]

4.2一時停止amd64

链接:https://pan.baidu.com/s/1fWeUr7SQ4qPaijlCDs8vhw 
提取码:37h5

pause-amd64 は Kubernetes インフラストラクチャの一部であり、Kubernetes クラスター内のポッド間のネットワーク通信を実装するために使用されるため、pause-amd64 イメージをノード node にインストールする必要があります。

docker load < pause-amd64.tar
docker images
docker tag [镜像ID] gcr.io/google_containers/pause-amd64:3.0

実行効果:
ここに画像の説明を挿入
上記の gcr.io/google_containers/pause-amd64 のイメージ名は、他の名前にすることはできません。

5.クラスターテスト

1) 最初に Web プロジェクトを準備してからパッケージ化し、k8s-node-1 および k8s-node-2 ノードの特定のディレクトリにアップロードします。
2) このディレクトリに新しい Dockerfile を作成します。その内容は次のとおりです。

FROM centos7-orcalejdk8:v1
ENV CSMBP_SLEEP 0
ADD *.war /app.war
RUN sh -c 'touch /app.war'
VOLUME /tmp
EXPOSE 8081
CMD echo "The application will start in ${CSMBP_SLEEP}s..." && \
    sleep ${CSMBP_SLEEP} && \
    java -Djava.security.egd=file:/dev/./urandom -Dfile.encoding=UTF-8 -jar /app.war

上記のEXPOSEパラメーターは、Web アプリケーションのポート 8081 をホストのポート 8081 にマップするように指定しているため、クライアントはこのポートを介して Web サービスにアクセスできます。

3) 次のdocker buildコマンドを実行して、イメージをパッケージ化します。

docker build -t [镜像名:版本号] .

4) プロジェクトの配置ファイルを作成します。

apiVersion: v1
kind: ReplicationController
metadata:
  name: web-rc
spec:
  replicas: 1
  selector:
    app: web
  template:
    metadata:
      labels:
        app: web
    spec:
      containers:
      - name: web
        image: 镜像名:版本号
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 8081
---
apiVersion: v1
kind: Service
metadata:
  name: web-svc
spec:
  selector:
    app: web
  type: NodePort
  ports:
  - port: 8081
    targetPort: 8081
    nodePort: 30081

5) 展開操作を実行します。

kubectl apply –f web.yaml

ここまででK8Sの基本環境が構築できました。続いてK8S環境関連のプラグイン(個人倉庫、ダッシュボード等)のインストールです。

おすすめ

転載: blog.csdn.net/zhongliwen1981/article/details/121614653