kubernetes 1.8インストールスクリプトのノード
今回の使用環境は次のとおりです. CentOs 7.3 Etcd v3.2.9
IP
コンポーネント
192.168.2.11
etcd1
192.168.2.12
etcd1
192.168.2.13
etcd1
192.168.2.1
ホスト
各仮想マシンにetcdが事前にインストールされています
足どりはホスト上で実行され、ホストには密sshのない各サーバが必要です.ホストにcfsslをインストールする必要があります
kubernetes 1.8インストールスクリプトは全部で3つのスクリプトがあり、各スクリプトは対応する名前のフォルダの下に置く必要があります.3つのフォルダは同じ親ディレクトリの下にある必要があります.後のスクリプトは前のスクリプトで生成する*を使用する必要があります.pem
スクリプトが正常に実行されると、Masterノードでkubectl get csrを使用するとNode申請が表示されます.
次のコマンドを使用して承認します.
kubectl get csr | grep Pending | awk '{print $1}' | xargs kubectl certificate approve
IP
コンポーネント
192.168.2.11
etcd1
192.168.2.12
etcd1
192.168.2.13
etcd1
192.168.2.1
ホスト
各仮想マシンにetcdが事前にインストールされています
足どりはホスト上で実行され、ホストには密sshのない各サーバが必要です.ホストにcfsslをインストールする必要があります
kubernetes 1.8インストールスクリプトは全部で3つのスクリプトがあり、各スクリプトは対応する名前のフォルダの下に置く必要があります.3つのフォルダは同じ親ディレクトリの下にある必要があります.後のスクリプトは前のスクリプトで生成する*を使用する必要があります.pem
#!/bin/bash
#********************************************************************
#Author: bravewang
#QQ: 6142553
##blog: http://brave666.blog.51cto.com/
#Description: Kubernetes Master install
#Date: 2017-11-14
#********************************************************************
export host1=192.168.2.11
export host2=192.168.2.12
export host3=192.168.2.13
export host4=192.168.2.14
export host5=192.168.2.15
export zhuji="$host4 $host5 "
cat < config
###
# kubernetes system config
#
# The following values are used to configure various aspects of all
# kubernetes services, including
#
# kube-apiserver.service
# kube-controller-manager.service
# kube-scheduler.service
# kubelet.service
# kube-proxy.service
# logging to stderr means we get it in the systemd journal
KUBE_LOGTOSTDERR="--logtostderr=true"
# journal message level, 0 is debug
KUBE_LOG_LEVEL="--v=2"
# Should this cluster be allowed to run privileged docker containers
KUBE_ALLOW_PRIV="--allow-privileged=true"
# How the controller-manager, scheduler, and proxy find the apiserver
# KUBE_MASTER="--master=http://127.0.0.1:8080"
EOF
cat < nginx.conf
error_log stderr notice;
worker_processes auto;
events {
multi_accept on;
use epoll;
worker_connections 1024;
}
stream {
upstream kube_apiserver {
least_conn;
server $host1:6443;
server $host2:6443;
server $host3:6443;
}
server {
listen 0.0.0.0:6443;
proxy_pass kube_apiserver;
proxy_timeout 10m;
proxy_connect_timeout 1s;
}
}
EOF
cat < nginx-proxy.service
[Unit]
Description=kubernetes apiserver docker wrapper
Wants=docker.socket
After=docker.service
[Service]
User=root
PermissionsStartOnly=true
ExecStart=/usr/bin/docker run -p 127.0.0.1:6443:6443 \\
-v /etc/nginx:/etc/nginx \\
--name nginx-proxy \\
--network=host \\
--restart=on-failure:5 \\
--memory=512M \\
nginx
ExecStartPre=-/usr/bin/docker rm -f nginx-proxy
ExecStop=/usr/bin/docker stop nginx-proxy
Restart=always
RestartSec=15s
TimeoutStartSec=30s
[Install]
WantedBy=multi-user.target
EOF
peizhi()
{
cat < proxy${IP##*.}
###
# kubernetes proxy config
# default config should be adequate
# Add your own!
KUBE_PROXY_ARGS="--bind-address=$IP \\
--hostname-override=docker${IP##*.} \\
--kubeconfig=/etc/kubernetes/kube-proxy.kubeconfig \\
--cluster-cidr=10.254.0.0/16"
EOF
cat < kubelet${IP##*.}
###
# kubernetes kubelet (minion) config
# The address for the info server to serve on (set to 0.0.0.0 or "" for all interfaces)
KUBELET_ADDRESS="--address=$IP"
# The port for the info server to serve on
# KUBELET_PORT="--port=10250"
# You may leave this blank to use the actual hostname
KUBELET_HOSTNAME="--hostname-override=docker${IP##*.}"
# location of the api-server
# KUBELET_API_SERVER=""
# Add your own!
KUBELET_ARGS="--cgroup-driver=cgroupfs \\
--cluster-dns=10.254.0.2 \\
--resolv-conf=/etc/resolv.conf \\
--experimental-bootstrap-kubeconfig=/etc/kubernetes/bootstrap.kubeconfig \\
--kubeconfig=/etc/kubernetes/kubelet.kubeconfig \\
--fail-swap-on=false \\
--cert-dir=/etc/kubernetes/ssl \\
--cluster-domain=cluster.local. \\
--hairpin-mode=promiscuous-bridge \\
--serialize-p_w_picpath-pulls=false \\
--pod-infra-container-p_w_picpath=gcr.io/google_containers/pause-amd64:3.0"
EOF
ssh root@$IP hostnamectl set-hostname docker${IP##*.}
ssh root@$IP mkdir /etc/kubernetes/ssl
scp ../Master/*.pem root@$IP:/etc/kubernetes/ssl
scp ../Master/*.kubeconfig ../Master/token.csv ../Master/audit-policy.yaml root@$IP:/etc/kubernetes
ssh root@$IP chown -R kube:kube /etc/kubernetes/ssl
ssh root@$IP mkdir -p /etc/etcd/ssl
scp ../etcd/*.pem root@$IP:/etc/etcd/ssl
ssh root@$IP chmod -R 644 /etc/etcd/ssl/*
ssh root@$IP chmod 755 /etc/etcd/ssl
scp kubelet${IP##*.} root@$IP:/etc/kubernetes/kubelet
scp proxy${IP##*.} root@$IP:/etc/kubernetes/proxy
scp config root@$IP:/etc/kubernetes/config
ssh root@$IP mkdir -p /etc/nginx/
scp nginx.conf root@$IP:/etc/nginx/nginx.conf
ssh root@$IP chmod +r /etc/nginx/nginx.conf
scp nginx-proxy.service root@$IP:/etc/systemd/system/nginx-proxy.service
ssh root@$IP systemctl daemon-reload
#ssh root@$IP systemctl start nginx-proxy
sleep 2
ssh root@$IP systemctl start nginx-proxy
sleep 2
ssh root@$IP systemctl enable nginx-proxy
sleep 2
ssh root@$IP systemctl start kubelet
sleep 2
ssh root@$IP systemctl enable kubelet
sleep 2
ssh root@$IP systemctl start kube-proxy
sleep 2
ssh root@$IP systemctl enable kube-proxy
sleep 2
ssh root@$IP systemctl restart kubelet
}
for IP in $zhuji ;do
peizhi
done
スクリプトが正常に実行されると、Masterノードでkubectl get csrを使用するとNode申請が表示されます.
次のコマンドを使用して承認します.
kubectl get csr | grep Pending | awk '{print $1}' | xargs kubectl certificate approve