摘要
本文部分内容来源于网络,个人收集整理,请勿传播
- https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.13.md#downloads-for-v1131
- https://kubernetes.io/docs/home/?path=users&persona=app-developer&level=foundational
- https://github.com/etcd-io/etcd
- https://shengbao.org/348.html
- https://github.com/coreos/flannel
- http://www.cnblogs.com/blogscc/p/10105134.html
- https://blog.csdn.net/xiegh2014/article/details/84830880
- https://blog.csdn.net/tiger435/article/details/85002337
- https://www.cnblogs.com/wjoyxt/p/9968491.html
- https://blog.csdn.net/zhaihaifei/article/details/79098564
- http://blog.51cto.com/jerrymin/1898243
- http://www.cnblogs.com/xuxinkun/p/5696031.html
docker安装
请移步 docker安装学习记录
kubernetes
角色划分
1 | k8s-master1 10.2.8.44 k8s-master etcd、kube-apiserver、kube-controller-manager、kube-scheduler |
下载相关资源
1 | wget https://dl.k8s.io/v1.13.1/kubernetes-server-linux-amd64.tar.gz |
环境文件配置
1 | master01="172.16.198.133" |
配置hosts
1 | echo -e "172.16.198.133 master01 |
ubuntu
1 | apt-get update && apt-get install -y apt-transport-https |
修改内核参数
1 | vim /etc/sysctl.conf |
环境配置
1 | rm -r -f /etc/kubernetes /var/lib/kubelet /var/lib/etcd; |
使用二进制文件部署k8s
etcd集群安装
本文使用静态配置的方式搭建,详细操作以及介绍请移步 etcd-cluster 部署
安装etcd
1 | ETCD_VER="v3.2.4" |
静态配置
静态配置主要预先将集群的配置信息分配好,然后将集群分布启动,集群将根据配置信息组成集群。这里按如下的配置信息分别启动三个etcd。
1 | mkdir /data/bin -p && cd /data/bin && touch etcd.sh |
配置supervisor
详情请移步 etcd-cluster 部署
1 | mkdir -p /etc/supervisor/conf.d/ |
环境变量配置
本文最开始使用的是etcd2接口,目前etcd3接口变化比较大,所以现在直接重新按照etcd3的接口进行配置
1 | cd /data/bin && vim etcd.env |
集群验证
按如上配置分别启动集群,启动集群后,将会进入集群选举状态,若出现大量超时,则需要检查主机的防火墙是否关闭,或主机之间是否能通过2380端口通信,集群建立后通过以下命令检查集群状态。
1 | etcdctl member list -w table |
在其中一个节点执行
1 | # api2 |
其他节点执行有正常返回结果说明集群搭建成功
1 | etcdctl get /k8s/network/config |
该命令含义是,期望docker运行的container实例的地址,都在 172.100.0.0/16网段中
flanneld会读取/k8s/network目录中config值,然后接管docker的地址分配,并把docker和宿主机器之间的网络桥接起来。
flannel
安装flannel
1 | FLANNEL_VERSION="v0.8.0" |
启动flannel
1 | cd /data/bin && touch flanneld.sh |
supervisor
1 | vim /etc/supervisor/conf.d/flanneld.conf |
docker配置
1 | source /run/flannel/subnet.env |
安装k8s
1 | KUB_VERSION="v1.7.2" |
启动k8s集群
Master
1 | mkdir /data/logs/k8s/{apiserver,controller-manager,scheduler} -p |
master-supervisor
1 | cd /etc/supervisor/conf.d/ && touch kube-api.conf kube-con.conf kube-sche.conf |
node
1 | mkdir /data/logs/k8s/{kubelet,proxy} -p |
node-supervisor
1 | cd /etc/supervisor/conf.d/ && touch kubelet.conf kube-proxy.conf |
配置skydns
1 | etcdctl mk /skydns/config '{"dns-addr":"172.100.81.2:53","ttl":3600,"domain":"sky."}' |
附录
1 | docker容器所依赖的六种namespace级别的资源隔离技术: |