Skip to content

Commit

Permalink
system-init: refine
Browse files Browse the repository at this point in the history
  • Loading branch information
Zhang Jun committed Oct 18, 2018
1 parent 083b3c7 commit fd02688
Showing 1 changed file with 17 additions and 61 deletions.
78 changes: 17 additions & 61 deletions 01.系统初始化和全局变量.md
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ SELINUX=disabled
```
+ 修改配置文件,永久生效;

## 关闭 dnsmasq
## 关闭 dnsmasq (可选)

linux 系统开启了 dnsmasq 后(如 GUI 环境),将系统 DNS Server 设置为 127.0.0.1,这会导致 docker 容器无法解析域名,需要关闭它:

Expand All @@ -159,15 +159,22 @@ $ cat > kubernetes.conf <<EOF
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
net.ipv4.ip_forward=1
net.ipv4.tcp_tw_recycle=0
vm.swappiness=0
vm.overcommit_memory=1
vm.panic_on_oom=0
fs.inotify.max_user_watches=89100
fs.file-max=52706963
fs.nr_open=52706963
net.ipv6.conf.all.disable_ipv6=1
net.netfilter.nf_conntrack_max=2310720
EOF
$ sudo cp kubernetes.conf /etc/sysctl.d/kubernetes.conf
$ sudo sysctl -p /etc/sysctl.d/kubernetes.conf
$ sudo mount -t cgroup -o cpu,cpuacct none /sys/fs/cgroup/cpu,cpuacct
```
+ tcp_tw_recycle 和 Kubernetes 的 NAT 冲突,必须关闭 ,否则会导致服务不通;
+ 关闭不使用的 IPV6 协议栈,防止触发 docker BUG;

## 加载内核模块

Expand All @@ -190,6 +197,12 @@ $ sudo systemctl restart rsyslog
$ sudo systemctl restart crond
```

## 更新系统时间

``` bash
$ sudo ntpdate cn.pool.ntp.org
```

## 创建目录

在每台机器上创建目录:
Expand All @@ -214,68 +227,11 @@ $ curl https://raw.githubusercontent.com/docker/docker/master/contrib/check-conf
$ bash ./check-config.sh
```

## 集群环境变量

后续的部署步骤将使用下面定义的全局环境变量,请根据**自己的机器、网络情况**修改:

``` bash
#!/usr/bin/bash

# 生成 EncryptionConfig 所需的加密 key
export ENCRYPTION_KEY=$(head -c 32 /dev/urandom | base64)

# 最好使用 当前未用的网段 来定义服务网段和 Pod 网段

# 服务网段,部署前路由不可达,部署后集群内路由可达(kube-proxy 和 ipvs 保证)
export SERVICE_CIDR="10.254.0.0/16"

# Pod 网段,建议 /16 段地址,部署前路由不可达,部署后集群内路由可达(flanneld 保证)
export CLUSTER_CIDR="172.30.0.0/16"

# 服务端口范围 (NodePort Range)
export NODE_PORT_RANGE="8400-9000"

# 集群各机器 IP 数组
export NODE_IPS=(172.27.129.105 172.27.129.111 172.27.129.112)

# 集群各 IP 对应的 主机名数组
export NODE_NAMES=(kube-node1 kube-node2 kube-node3)

# kube-apiserver 的 VIP(HA 组件 keepalived 发布的 IP)
export MASTER_VIP=172.27.129.253

# kube-apiserver VIP 地址(HA 组件 haproxy 监听 8443 端口)
export KUBE_APISERVER="https://${MASTER_VIP}:8443"

# HA 节点,VIP 所在的网络接口名称
export VIP_IF="eth0"

# etcd 集群服务地址列表
export ETCD_ENDPOINTS="https://172.27.129.105:2379,https://172.27.129.111:2379,https://172.27.129.112:2379"

# etcd 集群间通信的 IP 和端口
export ETCD_NODES="kube-node1=https://172.27.129.105:2380,kube-node2=https://172.27.129.111:2380,kube-node3=https://172.27.129.112:2380"

# flanneld 网络配置前缀
export FLANNEL_ETCD_PREFIX="/kubernetes/network"

# kubernetes 服务 IP (一般是 SERVICE_CIDR 中第一个IP)
export CLUSTER_KUBERNETES_SVC_IP="10.254.0.1"

# 集群 DNS 服务 IP (从 SERVICE_CIDR 中预分配)
export CLUSTER_DNS_SVC_IP="10.254.0.2"

# 集群 DNS 域名
export CLUSTER_DNS_DOMAIN="cluster.local."

# 将二进制目录 /opt/k8s/bin 加到 PATH 中
export PATH=/opt/k8s/bin:$PATH
```
+ 打包后的变量定义见 [environment.sh](https://github.com/opsnull/follow-me-install-kubernetes-cluster/blob/master/manifests/environment.sh),后续部署时会**提示导入**该脚本;
## 修改和分发集群环境变量定义脚本

## 分发集群环境变量定义脚本
后续的部署步骤将使用 [environment.sh](https://github.com/opsnull/follow-me-install-kubernetes-cluster/blob/master/manifests/environment.sh) 中定义的全局环境变量,请根据**自己的机器、网络情况**修改。

把全局变量定义脚本拷贝到**所有**节点的 `/opt/k8s/bin` 目录:
然后,把全局变量定义脚本拷贝到**所有**节点的 `/opt/k8s/bin` 目录:

``` bash
source environment.sh
Expand Down

0 comments on commit fd02688

Please sign in to comment.