centos7でk8s1.9.9をビルドする

#! /bin/bash

centos7リファレンスにk8s1.9.9を手動でインストールします#https://www.cnblogs.com/peterinblog/p/8124746.html

バイナリソフトウェアのダウンロードアドレス:https://github.com/coreos/etcd/releases #https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.9.md

https://github.com/coreos/etcd/releases

今回はmaster-worker、master node、worker node masterを使用します:192.168.29.102 #worker:192.168.29.103

ローカルyumの構成、ファイアウォールのクローズ、関連ポートの開封、SELINUXなどの基本的な環境では、これらを事前に準備する必要があります。

マスターはルート権限を使用しているので、権限に注意を払いませんでした

リーダーは選挙を通じて昇進する必要があるため、etcdは奇数のノードを使用する必要があります

1、 ダウンロードファイル

mkdir /data && cd /data

wget https://github.com/coreos/etcd/releases/download/v3.3.9/etcd-v3.3.9-linux-amd64.tar.gz # master

wget https://dl.k8s.io/v1.9.9/kubernetes-server-linux-amd64.tar.gz #master

wget https://dl.k8s.io/v1.9.9/kubernetes-node-linux-amd64.tar.gz # worker

2、 etcdを解凍してファイルを移動する

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

mv etcd* /usr/bin

3、 etcd構成ファイル

mkdir /etc/etcd

cat <>/etc/etcd/etcd.conf

ETCD_NAME=ansible-k8s2

ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"

ETCD_DATA_DIR="/var/lib/etcd/"

ETCD_ADVERTISE_CLIENT_URLS="http://192.168.29.102:2379"

EOF

4、 k8sファイルを解凍し、ファイルを/ usr / binに移動します

tar -zxvf kubernetes-server-linux-amd64.tar.gz && cd kubernetes/server/bin/

mv kube-apiserver kube-controller-manager kube-scheduler kube-proxy kubelet kubectl /usr/bin

5、 k8s関連の構成ファイル

mkdir /etc/kubernetes && cd /etc/kubernetes

apiserver

cat <>apiserver

The following values are used to configure the kube-apiserver

The address on the local server to listen to.

KUBE_API_ADDRESS="--address=0.0.0.0"

KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"

The port on the local server to listen on.

KUBE_API_PORT="--port=8080"

Port minions listen on

KUBELET_PORT="--kubelet-port=10250"

Comma separated list of nodes in the etcd cluster

KUBE_ETCD_SERVERS="--etcd-servers=http://192.168.29.102:2379"

Address range to use for services

KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=192.168.4.0/24"

default admission control policies

KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,ResourceQuota"

Add your own!

KUBE_API_ARGS=""

EOF

config

cat <>config

KUBE_LOGTOSTDERR="--logtostderr=true"

KUBE_LOG_LEVEL="--v=0"

KUBE_ALLOW_PRIV="--allow-privileged=false"

KUBE_MASTER="--master=http://192.168.29.102:8080"

EOF

controller-manager

cat <>controller-manager

KUBE_CONTROLLER_MANAGER_ARGS=""

EOF

scheduler

cat <>scheduler

KUBE_SCHEDULER_ARGS=""

EOF

6、 etcdk8s起動ファイル

etcd

cat <>/lib/systemd/system/etcd.service

[ Unit]

Description=Etcd Server

Documentation=https://github.com/coreos/etcd

After=network.target

[ Service]

User=root

Type=notify

EnvironmentFile=-/etc/etcd/etcd.conf

ExecStart=/usr/bin/etcd

Restart=on-failure

RestartSec=10s

LimitNOFILE=40000

[ Install]

WantedBy=multi-user.target

EOF

apiserver

cat <>/lib/systemd/system/kube-apiserver.service

[ Unit]

Description=Kubernetes API Server

Documentation=https://github.com/GoogleCloudPlatform/kubernetes

After=network.target

After=etcd.service

Wants=etcd.service

[ Service]

User=root

EnvironmentFile=-/etc/kubernetes/config

EnvironmentFile=-/etc/kubernetes/apiserver

ExecStart=/usr/bin/kube-apiserver \

$KUBE_LOGTOSTDERR \

$KUBE_LOG_LEVEL \

$KUBE_ETCD_SERVERS \

$KUBE_API_ADDRESS \

$KUBE_API_PORT \

$KUBELET_PORT \

$KUBE_ALLOW_PRIV \

$KUBE_SERVICE_ADDRESSES \

$KUBE_ADMISSION_CONTROL \

$KUBE_API_ARGS

Restart=on-failure

Type=notify

LimitNOFILE=65536

[ Install]

WantedBy=multi-user.target

EOF

controller-manager

cat <>/lib/systemd/system/kube-controller-manager.service

[ Unit]

Description=Kubernetes Controller Manager

Documentation=https://github.com/GoogleCloudPlatform/kubernetes

After=etcd.service

After=kube-apiserver.service

Requires=etcd.service

Requires=kube-apiserver.service

[ Service]

User=root

EnvironmentFile=-/etc/kubernetes/config

EnvironmentFile=-/etc/kubernetes/controller-manager

ExecStart=/usr/bin/kube-controller-manager \

$KUBE_LOGTOSTDERR \

$KUBE_LOG_LEVEL \

$KUBE_MASTER \

$KUBE_CONTROLLER_MANAGER_ARGS

Restart=on-failure

LimitNOFILE=65536

[ Install]

WantedBy=multi-user.target

EOF

scheduler

cat <>/lib/systemd/system/kube-scheduler.service

[ Unit]

Description=Kubernetes Scheduler

Documentation=https://github.com/kubernetes/kubernetes

[ Service]

User=root

EnvironmentFile=-/etc/kubernetes/config

EnvironmentFile=-/etc/kubernetes/scheduler

ExecStart=/usr/bin/kube-scheduler \

$KUBE_LOGTOSTDERR \

$KUBE_MASTER

Restart=on-failure

LimitNOFILE=65536

[ Install]

WantedBy=multi-user.target

EOF

7、 オンにする

systemctl daemon-reload

for service in etcd.service kube-apiserver.service kube-controller-manager.service kube-scheduler.service;

do systemctl enable $service;

done

8、 開始してステータスを表示する

for service in etcd.service kube-apiserver.service kube-controller-manager.service kube-scheduler.service;

do systemctl start $service;

done

for service in etcd.service kube-apiserver.service kube-controller-manager.service kube-scheduler.service;

do systemctl status $service;

done

worker

1、 ファイルのダウンロード、解凍、移動

wget wget https://dl.k8s.io/v1.9.9/kubernetes-node-linux-amd64.tar.gz

tar -zxvf kubernetes-node-linux-amd64.tar.gz && cd cd kubernetes/node/bin/

mv kube* /usr/bin

2、 構成ファイル

config

mkdir -p /etc/kubernetes && cd /etc/kubernetes

cat <>config

KUBE_LOGTOSTDERR="--logtostderr=true"

KUBE_LOG_LEVEL="--v=3"

KUBE_ALLOW_PRIV="--allow-privileged=false"

KUBE_MASTER = "-master = http://192.168.29.102:8080"バージョンはサポートされていません

EOF

kubeconfig

mkdir /var/lib/kubelet

cat <>/var/lib/kubelet/kubeconfig

apiVersion: v1

kind: Config

users:

clusters:

cluster:

server: http://192.168.29.102:8080

contexts:

cluster: kubernetes

user: kubelet

name: service-account-context

current-context: service-account-context

EOF

kubelet

cat <>kubelet

KUBELET_ADDRESS="--address=127.0.0.1"

KUBELET_HOSTNAME="--hostname-override=192.168.29.103"

KUBELET_API_SERVER="--api-servers=http://192.168.29.102:8080"

pod infrastructure container

KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure:latest"

KUBELET_ARGS="--enable-server=true --enable-debugging-handlers=true --fail-swap-on=false --kubeconfig=/var/lib/kubelet/kubeconfig"

EOF

proxy

cat <>proxy

KUBE_PROXY_ARGS=""

EOF

3、 スタートアップファイル

cat <>/lib/systemd/system/kubelet.service

[ Unit]

Description=Kubernetes Kubelet

Documentation=https://github.com/GoogleCloudPlatform/kubernetes

After=docker.service #

Required = docker.service#最初にdockerをインストールしてから、workerを起動します

[ Service]

WorkingDirectory=/var/lib/kubelet

EnvironmentFile=-/etc/kubernetes/config

EnvironmentFile=-/etc/kubernetes/kubelet

ExecStart=/usr/bin/kubelet \

$KUBE_LOGTOSTDERR \

$KUBE_LOG_LEVEL \

$KUBELET_API_SERVER \

$KUBELET_ADDRESS \

$KUBELET_PORT \

$KUBELET_HOSTNAME \

$KUBE_ALLOW_PRIV \

$KUBELET_POD_INFRA_CONTAINER \

$KUBELET_ARGS

Restart=on-failure

KillMode=process

[ Install]

WantedBy=multi-user.target

EOF

proxy

cat <>/lib/systemd/system/kube-proxy.service

[ Unit]

Description=Kubernetes Proxy

Documentation=https://github.com/GoogleCloudPlatform/kubernetes

After=network.target

[ Service]

EnvironmentFile=-/etc/kubernetes/config

EnvironmentFile=-/etc/kubernetes/proxy

ExecStart=/usr/bin/kube-proxy \

$KUBE_LOGTOSTDERR \

$KUBE_LOG_LEVEL \

$KUBE_MASTER \

$KUBE_PROXY_ARGS

Restart=on-failure

LimitNOFILE=65536

[ Install]

WantedBy=multi-user.target

EOF

4、 dockerをインストールします。rpmでインストールしました。依存関係に関係なく、yumでインストールするのが最適です。

cd /data/

yum -y install container-selinux libcgroup libltdl.so.7 pigz libtool-ltdl

rpm -ivh docker-ce-18.03.1.ce-1.el7.centos.x86_64.rpm --nodeps#依存関係の問題が発生する可能性があります

5、 ブート

systemctl daemon-reload

for service in docker.service kube-proxy.service kubelet.service;

do systemctl enable $service;

done

6、 労働者を始める

for service in docker.service kube-proxy.service kubelet.service;

do systemctl start $service;

done

マスターを確認してください

[ root@ansible-k8s2 system]# kubectl get nodes

NAME STATUS ROLES AGE VERSION

192.168.29.103 Ready 16h v1.9.9

[ root@ansible-k8s2 system]# kubectl get cs

NAME STATUS MESSAGE ERROR

controller-manager Healthy ok

etcd-0 Healthy {"health":"true"}

scheduler Healthy ok

注:kubectlを実行し、「バイナリファイルを実行できません」というプロンプトが表示された場合、ダウンロードしたファイルを解凍した後、これが問題になります。再解凍して移動するだけです。

githubアドレス:https://github.com/chances-for-those-who-have-prepared/study/blob/master/k8s/install_k8s_by_manual

ご不明な点がございましたら、githubアドレスを参照してください:https://github.com/chances-for-those-who-have-prepared/study/issues

Recommended Posts

centos7でk8s1.9.9をビルドする
ジェンキンスはセントスに基づいて構築されています
CentOSでMariaDBレプリケーションを構築する
dockerに基づいてElasticsearch6.2.4(centos)を構築する
LinuxでNginx環境を構築する(CentOS)
CentOSに基づいてDiscuzフォーラムを構築する
CentOS7ビルドジェンキンス
Centosビルドlnmp
Centos7ビルドpython3.8.5 + scrapy + gerapy
CentOSに基づいてWeChatアップルトサービスを構築する
CentOSに基づいてWeChatアップルトサービスを構築する
CentOS7ビルドFastDFS分散ファイルシステム(オン)
CentOS7.3 64ビット、ビルドZabbix3.4
Centos7にDockerをインストールする
CentOSビルドプライベートgit
Centos 7(仮想ホストを含む)に基づいてNginxを構築する
Centos7.4はLNMPをインストールします
Centos7にJavaをインストールする
centos7でのXfs構成
CentOS6.7ビルドLNMP環境
CentOS6でOcservを構成する
CentOS7.3.1611はk8s1.5.2クラスターを展開します
Centos6.9ビルドrabbitmq3.6.8クラスター
Nodejsはcentos7にインストールされます
CentOS8にFFmpegをインストールします
Centos7.6ビルドLNMP環境
K8S:(1)CentOSスタンドアロン展開に関する予備調査
CentOS7にRabbitMQをインストールします
CentosにNode.jsをインストールします
Centos7ビルドKubernetesクラスター
Mavenはcentos7にインストールします
CentOS7にMongoDBをインストールします
CentOS8にSurelogをインストールする
CentOSでHadoopを構築する
centos7にvuepressをデプロイする
centos7へのOpenjdkのインストール
Centos7ビルドDNSサービス
Jenkinsをcentos7にインストールします
CentOS7でRapidSVNを使用する
セントスにRabbitMQをインストールする
CentOS7にRabbitMQをインストールします
centos6.5にDockerをインストールします
centos7.2でLAMP環境を構築する方法
CentOS7はk8sクラスターを展開します
セントスにオラクルをインストールする
Centos7にElasticsearch6をインストールします
CentOS7にRabbitMQをインストールします
Jenkinをcentos7にデプロイします
CentOS7ビルドLNMP環境
Centosサーバーでgiteaをセットアップする方法を教える3分
ランチャーを使用して、CentOS7でK8sクラスターを構築します
Centos6.5でドッカー環境を構築する
CentOs7.3ビルドSolrスタンドアロンサービス
CentOS7でOpenV **サーバーを構築する
CentOs7.3ビルドRabbitMQ3.6スタンドアロンサービス
CentOS7.6でzabbixモニタリングzabbix4.2をビルドする
CentOS7にElasticSearch7.xをインストールします
CentOS7でOpenLDAPサーバーを構築する
Centos7へのGlusterfsクラスターのインストール
CentOS7.6でzabbixモニタリングzabbix4.2をビルドする
LinuxCentosにMySQL8.0.16をインストールします