Kubernetes从1.3开始引入kubeadm来试图简化其复杂的安装。但kubeadm至今仍不稳定,而且我个人觉得kubeadm反而麻烦,还不如直接用脚本或者其他自动化工具来安装来的利索。关于kubeadm配置master的ha,也有相应的替代方案,比如使用keepalived或者corosync等高可用集群软件。所以在这篇文档中,我还是会使用传统的方式来安装kubernetes集群
创新互联公司专注于企业成都全网营销推广、网站重做改版、高明网站定制设计、自适应品牌网站建设、H5建站、商城网站建设、集团公司官网建设、成都外贸网站制作、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为高明等各大城市提供网站开发制作服务。Kubernetes依赖于docker和etcd,docker的网络,在这里直接使用flannel。在这篇文档里,不会对master的高可用做过多的阐述,我们先简单的建立一个基本可用最小化集群。我这里使用的三台CentOS 7.2的服务器,各服务器角色介绍如下:
192.168.1.20 server-20 master节点、node节点、etcd节点 192.168.1.21 server-21 node节点、etcd节 192.168.1.22 server-22 node节点、etcd节点
需要说明的是,这里需要大家自己设定好基本环境,比如关闭selinux,配置时间同步,清空现有的iptables策略,以及配置好epel源等。
1、安装并启动docker
docker的安装比较简单,直接使用yum安装即可:
yum install -y docker systemctl start docker systemctl enable docker
2、安装etcd
在所有节点上执行如下安装操作:
yum -y install etcd # 创建etcd data 目录 mkdir -p /opt/etcd/data chown -R etcd:etcd /opt/etcd/ # 修改配置文件,/etc/etcd/etcd.conf 需要修改如下参数: ETCD_NAME=server-20 ETCD_DATA_DIR="/opt/etcd/data/server-20.etcd" ETCD_LISTEN_PEER_URLS=" ETCD_LISTEN_CLIENT_URLS=" ETCD_INITIAL_ADVERTISE_PEER_URLS=" ETCD_INITIAL_CLUSTER="server-20= ETCD_ADVERTISE_CLIENT_URLS="http://192.168.1.20:2379"
# 修改 etcd 启动文件 sed -i 's/\\\"${ETCD_LISTEN_CLIENT_URLS}\\\"/\\\"${ETCD_LISTEN_CLIENT_URLS}\\\" --listen-client-urls=\\\"${ETCD_LISTEN_CLIENT_URLS}\\\" --advertise-client-urls=\\\"${ETCD_ADVERTISE_CLIENT_URLS}\\\" --initial-cluster-token=\\\"${ETCD_INITIAL_CLUSTER_TOKEN}\\\" --initial-cluster=\\\"${ETCD_INITIAL_CLUSTER}\\\" --initial-cluster-state=\\\"${ETCD_INITIAL_CLUSTER_STATE}\\\"/g' /usr/lib/systemd/system/etcd.service
# 启动 etcd systemctl enable etcd systemctl start etcd systemctl status etcd # 查看集群状态 etcdctl cluster-health
# 启动 etcd systemctl enable etcd systemctl start etcd systemctl status etcd # 查看集群状态 etcdctl cluster-health
3、配置flannel
先在etcd中注册flannel子网:
etcdctl set /coreos.com/network/config '{"network": "172.16.0.0/16"}'
在所有节点安装flannel:
yum install -y flannel
修改flannel配置文件/etc/sysconfig/flanneld如下:
FLANNEL_ETCD="http://192.168.1.20:2379,http://192.168.1.21:2379,http://192.168.1.22:2379"FLANNEL_ETCD_KEY="/coreos.com/network"
启动flannel:
systemctl start flanneld systemctl enable flanneld
需要说明的是,如果要让docker使用flannel的网络,docker必须要后于flannel启动,所以需要重新启动docker:
systemctl restart docker
4、安装kubernetes服务端
我这里使用的是网上别人提供的私有的kubernetes的yum源,如下:
vim /etc/yum.repos.d/kube.repo [kube] name=Mritd Repository baseurl=https://yum.mritd.me/centos/7/x86_64enabled=1gpgcheck=1gpgkey=https://mritd.b0.upaiyun.com/keys/rpm.public.key
先通过yumdownloader将所有kubernetes相关的包下载下来,然后再通过本地yum实现安装:
yumdownloader kubernetes-master kubernetes-client kubernetes-nodeyum localinstall -y kubernetes-master kubernetes-client
修改kubernetes master上的配置文件如下:
vim /etc/kubernetes/config KUBE_LOGTOSTDERR="--logtostderr=true"KUBE_LOG_LEVEL="--v=0"KUBE_ALLOW_PRIV="--allow-privileged=false"KUBE_MASTER="--master=http://10.5.10.116:8080"vim /etc/kubernetes/apiserver KUBE_API_ADDRESS="--address=0.0.0.0"KUBE_API_PORT="--port=8080 --secure-port=443"KUBE_MASTER="--master=http://10.5.10.116:8080"KUBELET_PORT="--kubelet-port=10250"KUBE_ETCD_SERVERS="--etcd-servers=http://10.5.10.116:2379,http://10.5.10.117:2379,http://10.5.10.131:2379"KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16"KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota"
启动kubernetes master:
systemctl start kube-apiserver kube-controller-manager kube-scheduler systemctl enable kube-apiserver kube-controller-manager kube-scheduler
5、安装kubernetes node端
yum install -y kubernetes-node
修改node的配置文件:
vim /etc/kubernetes/config KUBE_LOGTOSTDERR="--logtostderr=true"KUBE_LOG_LEVEL="--v=0"KUBE_ALLOW_PRIV="--allow-privileged=false"KUBE_MASTER="--master=http://10.5.10.116:8080"vim /etc/kubernetes/kubelet KUBELET_ADDRESS="--address=0.0.0.0"KUBELET_HOSTNAME="--hostname-override=server-116"KUBELET_API_SERVER="--api-servers=http://10.5.10.116:8080"KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-p_w_picpath=myhub.fdccloud.com/library/pod-infrastructure:latest"
启动node端:
systemctl start kubelet kube-proxy systemctl enable kubelet kube-proxy
最后通过在kubernetes master上通过kubectl查看各节点是否正常:
[root@server-116 ~]# kubectl get nodes NAME STATUS AGE server-20 Ready 1d server-21 Ready 1d server-22 Ready 1d
至此,完成kubernetes 1.5的基本安装
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。