环境
主机配置和角色分配
ip | host | 角色 | 配置 |
---|---|---|---|
192.168.136.130 | master.huany.com | master | CentOS 7.6 |
192.168.136.131 | node1.huany.com | node1 | CentOS 7.6 |
192.168.136.132 | node2.huany.com | node2 | CentOS 7.6 |
预先设置
关闭swap
- 临时关闭,运行:
swapoff -a
,下次启动还有 - 到/etc/fstab中永久删除或关闭swap分区,使用 # 注释掉即可。
关闭和清理ufw
下面的命令将清除现有的所有防火墙规则:1
$ iptables -F
设置cgroups
确保kubelet使用的cgroup driver与 Docker的一致。要么使用下面的方法更新 Docker:1
2
3
4
5cat << EOF > /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
要么,设置kubernetes的cgroup driver,如:kubelet 的 –cgroup-driver 标志设置为与 Docker 一样(e.g. cgroupfs)。
安装master节点
修改内核配置
编辑 /etc/sysctl.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
vm.swappiness = 0
net.ipv4.neigh.default.gc_stale_time = 120
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_announce = 2
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 1024
net.ipv4.tcp_synack_retries = 2
kernel.sysrq = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.ip_local_port_range = 1024 65023
net.ipv4.tcp_max_syn_backlog = 10240
net.ipv4.tcp_max_tw_buckets = 400000
net.ipv4.tcp_max_orphans = 60000
net.ipv4.tcp_synack_retries = 3
net.core.somaxconn = 10000
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
vm.swappiness = 0然后执行
sysctl -p
使修改生效
1 | $ sysctl -p |
安装docker环境
1 | 1. SET UP THE REPOSITORY |
安装配置kubeadm
- 配置阿里云的kubernetes镜像仓库
1 | $ cat <<EOF > /etc/yum.repos.d/kubernetes.repo |
- 安装kubeadm cni 等工具
1 | yum install -y kubernetes-cni kubelet kubeadm kubectl --skip-broken |
默认情况下这里的kubeadm kubectl kubelet默认安装的都是最新版本
- 配置CNI网络配置
1 | mkdir /etc/cni/net.d/ -p |
- 配置kubeadm的配置文件
1 | kind: MasterConfiguration |
- 拉取镜像
脚本如下,如果需要其它的容器镜像可以照此增加即可,可以将版本号修改为自己需要的。
- 注意:kubernetes每个版本依赖的版本不同,下面适用1.15.3。
1 | echo "==================================================" |
- 初始化
1 | $ kubeadm init --config kubeadm.yml --pod-network-cidr 10.244.0.0/16 -ignore-preflight-errors all |
执行成功后可以看到如下内容:
1 | Your Kubernetes control-plane has initialized successfully! |
- 切换到普通用户执行
1 | mkdir -p $HOME/.kube |
- 查看节点
1 | $ kubectl get nodes |
如果重启或者kubeadm reset 将清理掉cni配置,需要重新配置
1 | mkdir /etc/cni/net.d/ -p |
查看节点情况
1 | $ kubectl get nodes |
在node节点上安装
同上,修改Linux内核,安装docker,安装kubeadm
加入到集群中去
1
2kubeadm join 192.168.136.130:6443 --token 32ozhx.8xneb9rzjukjc3au \
--discovery-token-ca-cert-hash sha256:00c3d4e272d3736c0edcfcdda38f255c9fb75118a7d640a3e98542829f4bb3ec配置cni网络
1 | mkdir /etc/cni/net.d/ -p |
在master上查看节点情况:
1 | [meichaofan@master keights]$ kubectl get nodes |
- 在master附属flannel网络
1 | kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/v0.10.0/Documentation/kube-flannel.yml |
- 查看运行的服务
1 | [meichaofan@master keights]$ kubectl get pods -n kube-system |
在node上拉取pause、kubeproxy容器,并转换tag
- node1
1
2
3
4
5
6
7# pause
docker pull registry.aliyuncs.com/google_containers/pause:3.1
docker tag registry.aliyuncs.com/google_containers/pause:3.1 k8s.gcr.io/pause:3.1
# kube-proxy
docker pull registry.aliyuncs.com/google_containers/kube-proxy:v1.15.3
docker tag registry.aliyuncs.com/google_containers/kube-proxy:v1.15.3 k8s.gcr.io/kube-proxy:v1.15.3