Skip to content

Commit d00c2d3

Browse files
authored
master 설치 스크립트 추가
1 parent d57d328 commit d00c2d3

File tree

2 files changed

+90
-0
lines changed

2 files changed

+90
-0
lines changed

install-master.sh

+60
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
#!/bin/bash -xe
2+
3+
set -x
4+
5+
swapoff -a
6+
7+
function get_random_string () {
8+
random_string=$(cat /dev/urandom | tr -dc 'a-z0-9' | fold -w $1 | head -n 1)
9+
echo $random_string
10+
}
11+
12+
# 서버단에서 내려줘야 함.
13+
ADVERTISE_NET_DEV=${ADVERTISE_NET_DEV:-enp0s8}
14+
ADVERTISE_ADDR=$(ifconfig $ADVERTISE_NET_DEV | grep 'inet' | cut -d: -f2 | awk '{print $2}')
15+
JOIN_TOKEN=${JOIN_TOKEN:-"$(get_random_string 6).$(get_random_string 16)"}
16+
KUBERNETES_VERSION=${KUBERNETES_VERSION:-latest}
17+
KUBERNETES_CNI_VERSION=${KUBERNETES_CNI_VERSION:-latest}
18+
DOCKER_VERSION=${DOCKER_VERSION:-latest}
19+
20+
sed -i $(eval echo 's/JOIN_TOKEN/$JOIN_TOKEN/g') master.yaml
21+
sed -i $(eval echo 's/ADVERTISE_ADDR/$ADVERTISE_ADDR/g') master.yaml
22+
23+
apt-get update
24+
apt-get install -y apt-transport-https curl
25+
26+
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
27+
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" >/etc/apt/sources.list.d/kubernetes.list
28+
29+
wget -qO- get.docker.com | sh
30+
31+
if [ "$DOCKER_VERSION" != "latest" ]
32+
then
33+
apt-get install -y --allow-downgrades docker-ce=$DOCKER_VERSION
34+
service docker restart
35+
fi
36+
37+
if [ "$KUBERNETES_VERSION" = "latest" ]
38+
then
39+
apt-get install -y kubelet kubeadm kubectl
40+
else
41+
apt-get install -y kubelet=$KUBERNETES_VERSION \
42+
kubeadm=$KUBERNETES_VERSION \
43+
kubectl=$KUBERNETES_VERSION
44+
fi
45+
46+
if [ "$KUBERNETES_CNI_VERSION" = "latest" ]
47+
then
48+
apt-get install -y kubernetes-cni
49+
else
50+
apt-get install -y kubernetes-cni=$KUBERNETES_CNI_VERSION
51+
fi
52+
53+
# Run kubeadm
54+
kubeadm init \
55+
--config master.yaml
56+
57+
# Prepare kubeconfig file for download to local machine
58+
sudo mkdir -p /root/.kube
59+
sudo cp -i /etc/kubernetes/admin.conf /root/.kube/config
60+
sudo chown root:root /root/.kube/config

master.yaml

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
kind: ClusterConfiguration
2+
apiVersion: kubeadm.k8s.io/v1beta2
3+
apiServer:
4+
extraArgs:
5+
authorization-mode: Node,RBAC
6+
timeoutForControlPlane: 4m0s
7+
certificatesDir: /etc/kubernetes/pki
8+
clusterName: kubernetes
9+
controlPlaneEndpoint: ""
10+
dns:
11+
type: CoreDNS
12+
etcd:
13+
local:
14+
dataDir: /var/lib/etcd
15+
imageRepository: k8s.gcr.io
16+
17+
networking:
18+
dnsDomain: cluster.local
19+
podSubnet: 172.24.0.0/16 # Pod Subnet
20+
serviceSubnet: 10.96.0.0/12
21+
scheduler: {}
22+
---
23+
apiVersion: kubeadm.k8s.io/v1beta2
24+
kind: InitConfiguration
25+
bootstrapTokens:
26+
- token: "JOIN_TOKEN"
27+
description: "kubeadm bootstrap token"
28+
ttl: "15m"
29+
localAPIEndpoint:
30+
advertiseAddress: "ADVERTISE_ADDR"

0 commit comments

Comments
 (0)