节点构造如下 :
节点ip | 节点角色 | hostname |
---|---|---|
192.168.0.57 | node | bigdata3 |
192.168.0.56 | node | bigdata4 |
192.168.0.58 | node | bigdata5 |
192.168.0.48 | master01 | ingest01 |
192.168.0.49 | master02 | ingest02 |
192.168.0.50 | master03 | ingest03 |
192.168.0.38 | etcd01 | etcd01 |
192.168.0.39 | etcd02 | etcd02 |
192.168.0.40 | etcd03 | etcd03 |
集群网络结构:
网络名称 | 网络范围 |
---|---|
集群网络 | 172.20.0.0/16 |
svc网络 | 172.21.0.0/16 |
物理网络 | 192.168.0.0/24 |
组件配置:
系统 | 参数 |
---|---|
系统 | centos7 |
内核版本 | 4.4 |
docker-data数据盘 | ext4 |
docker | 1.126 |
Storage | Driver: overlay2 |
Backing | Filesystem: extfs |
Logging | Driver: journald |
Cgroup | Driver: systemd |
一、所有节点升级内核,安装Docker 1.126
1.1 升级内核
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm ;yum --enablerepo=elrepo-kernel install kernel-lt-devel kernel-lt -y #查看默认启动顺序 awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg CentOS Linux (4.4.4-1.el7.elrepo.x86_64) 7 (Core) CentOS Linux (3.10.0-327.10.1.el7.x86_64) 7 (Core) CentOS Linux (0-rescue-c52097a1078c403da03b8eddeac5080b) 7 (Core) #默认启动的顺序是从0开始,新内核是从头插入(目前位置在0,而4.4.4的是在1),所以需要选择0。 grub2-set-default 0 #重启 reboot #检查内核,成功升级到4.4 uname -a Linux bigdata5 4.4.104-1.el7.elrepo.x86_64 #1 SMP Tue Dec 5 12:46:32 EST 2017 x86_64 x86_64 x86_64 GNU/Linux
1.2 所有节点安装Docker, 修改文件系统为ovelay2驱动
#安装docker
yum install docker-common-1.12.6 docker-client-1.12.6 docker-1.12.6-61 -y #设置文件系统为ovelay2驱动 cat /etc/docker/daemon.json { "storage-driver": "overlay2" }
1.3 所有节点安装ipvsadm
yum install ipvsadm -y
二、准备 k8s-node、master、etcd、flanneld二进制文件
####注意所有的文件由master ingest01这台机下发,配置ssh信任所有机器
####下载目录为/root/
[root@ingest01 ~]# pwd /root wget https://dl.k8s.io/v1.9.0/kubernetes-server-linux-amd64.tar.gz wget https://github.com/coreos/etcd/releases/download/v3.2.11/etcd-v3.2.11-linux-amd64.tar.gz wget https://github.com/coreos/flannel/releases/download/v0.9.0/flannel-v0.9.0-linux-amd64.tar.gz
三、下发所有二进制文件
3.1 解压
tar xvf kubernetes-server-linux-amd64.tar.gz && tar xvf etcd-v3.2.11-linux-amd64.tar.gz && tar xvf flannel-v0.9.0-linux-amd64.tar.gz
3.2 创建node,master ,etcd所需的二进制目录并进行归类
mkdir -p /root/kubernetes/server/bin/{node,master,etcd} mv /root/kubernetes/server/bin/kubelet /root/kubernetes/server/bin/node/ mv /root/mk-docker-opts.sh /root/kubernetes/server/bin/node/ mv /root/flanneld /root/kubernetes/server/bin/node/ mv /root/kubernetes/server/bin/kube-* /root/kubernetes/server/bin/master/ mv /root/kubernetes/server/bin/kubelet /root/kubernetes/server/bin/master/ mv /root/kubernetes/server/bin/kubectl /root/kubernetes/server/bin/master/ mv /root/etcd-v3.2.4-linux-amd64/etcd* /root/kubernetes/server/bin/etcd/
3.3 下发node以及flanneld二进制文件
for node in bigdata3 bigdata4 bigdata5 ingest01;do rsync -avzP /root/kubernetes/server/bin/node/ ${node}:/usr/local/bin/ done
3.4 下发master 二进制文件
for master in ingest01 ingets01 ingest03;do rsync -avzP /root/kubernetes/server/bin/master/ ${master}:/usr/local/bin/ done
3.5 下发etcd文件
for etcd in etcd01 etcd02 etcd03;do rsync -avzP /root/kubernetes/server/bin/etcd/ ${etcd}:/usr/local/bin/ done
四、创建集群systemctl 启动服务service文件
4.1 创建服务归类文件夹
mkdir -p /root/kubernetes/server/bin/{node-service,master-service,etcd-service,docker-service,ssl}
4.2 创建node 所需的文件
#docker.service
cat >/root/kubernetes/server/bin/node-service/docker.service <<'HERE' [Unit] Description=Docker Application Container Engine Documentation=http://docs.docker.com After=network.target Wants=docker-storage-setup.service Requires=docker-cleanup.timer [Service] Type=notify NotifyAccess=all KillMode=process EnvironmentFile=-/etc/sysconfig/docker EnvironmentFile=-/etc/sysconfig/docker-storage EnvironmentFile=-/etc/sysconfig/docker-network EnvironmentFile=/run/flannel/docker Environment=GOTRACEBACK=crash Environment=DOCKER_HTTP_HOST_COMPAT=1 Environment=PATH=/usr/libexec/docker:/usr/bin:/usr/sbin ExecStart=/usr/bin/dockerd-current $DOCKER_NETWORK_OPTIONS \ --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current \ --default-runtime=docker-runc \ --exec-opt native.cgroupdriver=systemd \ --userland-proxy-path=/usr/libexec/docker/docker-proxy-current \ $OPTIONS \ $DOCKER_STORAGE_OPTIONS \ $DOCKER_NETWORK_OPTIONS \ $ADD_REGISTRY \ $BLOCK_REGISTRY \ $INSECURE_REGISTRY ExecReload=/bin/kill -s HUP $MAINPID LimitNOFILE=1048576 LimitNPROC=1048576 LimitCORE=infinity TimeoutStartSec=0 Restart=on-abnormal MountFlags=slave [Install] WantedBy=multi-user.target HERE ---------- #kubeliet.service cat >/root/kubernetes/server/bin/node-service/kubelet.service