在参考了如下文档后,顺利地搭建了一个Docker私有库和使用该私有库的Kubernetes集群环境:
- Kubernetes官方的安装文档(CentOS 7)
- [推荐]Installing Kubernetes Cluster with 3 minions on CentOS 7 to manage pods and services
- Docker官方的私有库部署文档
- Docker官方的不安全私有库部署文档
- Kubernetes官方的Web UI文档
搭建期间也遇到了许许多多的问题,但是基本上都能靠悟性+谷歌解决。想要参考此文章进行环境搭建的读者,建议应具备熟练的linux使用经验、一定的网络和安全知识也是必备的。
环境规划
作者手里的环境是四台安装了CentOS 7的主机。环境规划如下:
- Kubernetes Master 节点:192.168.169.120
- Kubernetes Node 节点:192.168.169.121, 192.168.169.124
- Docker私有库节点:192.168.169.125
每台主机上都运行了如下命令来关闭防火墙和启用ntp:
# systemctl stop firewalld # systemctl disable firewalld # yum -y install ntp # systemctl start ntpd # systemctl enable ntpd
Kubernetes Master节点的安装与配置
在Kubernetes Master节点上安装etcd, docker和Kubernetes
# yum -y install etcd docker kubernetes
对etcd进行配置,编辑/etc/etcd/etcd.conf,内容如下:
ETCD_NAME=default
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
ETCD_ADVERTISE_CLIENT_URLS="http://localhost:2379"
其中ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"表示etcd在2379端口上监听所有网络接口。
对Master节点上的Kubernetes进行配置,编辑配置文件/etc/kubernetes/config
KUBE_LOGTOSTDERR="--logtostderr=true"
KUBE_LOG_LEVEL="--v=0"
KUBE_ALLOW_PRIV="--allow-privileged=false"
KUBE_MASTER="--master=http://192.168.169.120:8080"
KUBE_MASTER="--master=http://192.168.169.120:8080"是将Kubernetes的apiserver进程的服务地址告诉Kubernetes的controller-manager, scheduler和proxy进程。
编辑配置文件/etc/kubernetes/apiserver
KUBE_API_ADDRESS="--address=0.0.0.0"
KUBE_API_PORT="--port=8080"
KUBELET_PORT="--kubelet-port=10250"
KUBE_ETCD_SERVERS="--etcd-servers=http://127.0.0.1:2379"
KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16"
KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota"
KUBE_API_ARGS=""
这些配置让apiserver进程在8080端口上监听所有网络接口,并告诉apiserver进程etcd服务的地址。
现在