安装方法
可以选择使用软件包工具(yum, apt, rpm 文件, deb 文件等), 下载二进制包, 编译源代码, 以及 kubeadm(位于二进制包中) 快速安装.
由于测试使用的是 CentOS 7.x, 本次我们选择使用软件包工具 yum 安装.
节点规划
当前手里有 4 台闲置机器, 按照 IP 地址末位, 我们暂且称其为 7,8,9,10. 我们将 7 作为 Master 节点, 其余作为 Node 节点.
Master 软件: kubernetes-master etcd
Node 软件: kubernetes-node etcd flannel docker
master + node 共同组成 etcd 集群.
前期准备
1. 查看 SELinux, 禁用之
1 | cat /etc/selinux/config | grep SELINUX |
2. 查看防火墙, 禁用之
由于测试, 暂时不考虑防火墙问题, 并且由于使用云服务器, 防火墙完全可以在云端后台层去做.
1 | sudo systemctl status firewalld |
3. 更新软件包, 同步系统时间
1 | sudo yum update -y |
安装软件
全部节点安装 etcd
1 | sudo yum install etcd -y |
Master 节点安装 kubernetes-master
1 | sudo yum install kubernetes-master -y |
Node 节点安装 kubernetes-node flannel docker
1 | sudo yum install kubernetes-node flannel docker -y |
出现 Docker 与原来版本的冲突问题
由于另一篇文章: CentOS 安装 Docker, Compose, Machine, Swarm 对 Docker 的安装, 使用的是官方的源, 可能由于版本问题, 造成冲突
1 | 错误:docker-ce-cli conflicts with 2:docker-1.13.1-103.git7f2769b.el7.centos.x86_64 |
如果出现冲突, 可以选择卸载原来的 docker, 然后使用 yum
进行重新安装.
1 | # 删除旧版 |
参考文档:
配置 Etcd
位置 /etc/etcd/etcd.conf
我们先不求甚解一下, 里面很多配置, 我们暂且只关注下面的几个, 默认值如下
ETCD_DATA_DIR
数据存储位置ETCD_LISTEN_PEER_URLS
etcd 节点监听的 URL, 与分布式其他节点通信ETCD_LISTEN_CLIENT_URLS
etcd 节点对外提供服务的地址, 以逗号间隔ETCD_NAME
节点名称, 集群中唯一标识ETCD_INITIAL_ADVERTISE_PEER_URLS
集群中其他节点地址列表, 以逗号间隔ETCD_ADVERTISE_CLIENT_URLS
告诉集群其他节点, 自己对外提供服务的地址ETCD_INITIAL_CLUSTER
初始化组网的所有服务器地址
线上实际配置文件, 其中变量为各自 IP 地址尾号 7, 8, 9, 10.
1 | # 不变 |
启动 etcd 服务
1 | # 启动 |
配置 Master 节点
配置 /etc/kubernetes/apiserver 文件
1 | # 监听 IP 地址 |
启动服务
1 | sudo systemctl enable kube-apiserver |
配置 Node 节点
配置 /etc/kubernetes/config 文件
1 | KUBE_LOGTOSTDERR="--logtostderr=true" |
配置 /etc/kubernetes/kubelet 文件
1 | KUBELET_ADDRESS="--address=127.0.0.1" |
配置 /etc/kubernetes/proxy 文件
1 | KUBE_PROXY_ARGS="--bind-address=0.0.0.0" |
启动服务
1 | sudo systemctl enable kube-proxy |
配置 flannel 网络
在 etcd 中创建主键, 配置 Docker 容器可用网段
1 | etcdctl mk /xxx.com/network/config '{"Network":"172.17.0.0/16","SubnetMin":"172.17.1.0","SubnetMax":"172.17.254.0"}' |
在 Node 节点上修改 flannel 配置文件 /etc/sysconfig/flanneld
1 | FLANNEL_ETCD_ENDPOINTS="http://192.168.254.7:2379,http://192.168.254.8:2379,http://192.168.254.9:2379" |
启动服务
1 | sudo systemctl enable flanneld |
启动服务后, 会生成 /run/flannel/{docker,subnet.env}
文件.
测试环境安全隐患
由于没有配置防火墙, 没有禁用外网端口, 没有 SecurityContextDeny,ServiceAccount 配置等, k8s 的端口完全无权限限制的暴露在公网中, 可能会造成服务器被轻易攻陷.
测试结束后, 我们暂时停止一切 k8s 服务.
master 机器
1 | sudo systemctl stop etcd |
node 机器
1 | sudo systemctl stop etcd |