参考链接:
1 | https://cloud.tencent.com/developer/article/1115558 配置基础环境 |
一、服务器信息
- Centos7.4 系统 和 Docker version 18.06.1-ce
主机名 | IP | 备注 |
---|---|---|
k8s-master1 | 192.168.1.126 | 主集群1,etcd1,node1 |
k8s-master2 | 192.168.1.127 | 主集群2,etcd2,node2 |
k8s-master3 | 192.168.1.128 | 主集群3,etcd3,node3 |
slb | 192.168.1.129/39.105.81.231 | slb内网和外网ip地址,设置TCP监听,监听6443端口 |
Service 和 Pods ip段划分
名称 | IP段 | 备注 |
---|---|---|
service-cluster-ip | 10.10.0.0/16 | 可用地址 4094 |
pods-ip | 10.20.0.0/16 | 可用地址 4094 |
集群dns | 10.10.0.2 | 用于集群service域名解析 |
二、环境初始化
1.1 分别在3台主机设置主机名称
1 | hostnamectl set-hostname k8s-master1 |
1.2 配置主机映射 /etc/hosts/
1 | 192.168.1.126 k8s-master1 etcd1 |
1.3 master1上执行ssh免密码登陆配置
1 | ssh-keygen #一路回车即可 |
1.4 三台主机配置(基础环境)
1 | # 停防火墙 |
三、K8S部署
1 | 1、安装Docker |
1.1 安装Docker
在k8s-master1、k8s-master2、k8s-master3操作
1 | mkdir /data/docker |
1.2 自签TLS证书
组件 | 使用的证书 |
---|---|
etcd | ca.pem, server.pem, server-key.pem |
calico | ca.pem, server.pem, server-key.pem |
kube-apiserver | ca.pem, server.pem, server-key.pem |
kube-controller-manager | ca.pem, ca-key.pem |
kubelet | ca.pem, ca-key.pem |
kube-proxy | ca.pem, kube-proxy.pem, kube-proxy-key.pem |
kubectl | ca.pem, admin.pem, admin-key.pem |
k8s-master1 安装证书生成工具cfssl:
1 | mkdir /data/ssl -p |
创建certificate.sh
1 | # vim certificate.sh |
上个脚本,根据实际情况修改如下,然后执行
1 | 50 "192.168.1.126", |
1.3 部署Etcd集群
k8s-master1机器上操作,在把执行文件copy到k8s-master2 k8s-master3
1 | 二进制包下载地址: https://github.com/etcd-io/etcd/releases/tag/v3.3.9 |
1 | cd /data/etcd |
1 | chmod +x etcd.sh |
1.4 创建Node节点kubeconfig文件
k8s-master1节点操作
- 创建TLS Bootstrapping Token
- 创建kubelet kubeconfig
- 创建kube-proxy kubeconfig
1 | cd /data/ssl/ |
1 | ## kubectl 软件在kubernetes-server-linux-amd64.tar.gz 里面,可从官网下载,下面的部署也需要这个软件包 |
1 | scp *kubeconfig root@k8s-master2:/opt/kubernetes/cfg |
1.5 获取K8S二进制包
1 | https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.12.md # v1.12.0 |
master 需要用到
- kubectl
- kube-scheduler
- kube-apiserver
- kube-controller-manager
node 需要用到
- kubelet
- kube-proxy
1 | mkdir /data/k8s-master |
1 | vim controller-manager.sh |
1 | vim scheduler.sh |
1.6 运行Master组件
在k8s-master1 操作
1 | cd /data/k8s/kubernetes/server/bin |
- 登陆七牛云或者阿里云slb控制台设置slb,前后监控都为6443端口,TCP方式(本文使用七牛云ECS搭建,他们slb有内网和外网地址,阿里云只显示外网地址)
- k8s-master1 上创建node授权用户
1 | kubectl create clusterrolebinding kubelet-bootstrap --clusterrole=system:node-bootstrapper --user=kubelet-bootstrap |
- 检查集群
1 | [root@k8s-master1 k8s-master]# kubectl get cs |
1.7 运行Node组件
在k8s-master1 操作
1 | mkdir /data/k8s-node |
1 | vim proxy.sh |
1 | cd /data/k8s/kubernetes/server/bin |
1.8 查看集群状态
1 | kubectl get componentstatus |
1.9 安装calico网络,使用IPIP模式
- calico介绍
1 | Calico组件: |
- 为各Node部署calico的步骤如下:
1、下载部署的yaml文件(在k8s-master1操作):
1 | # 参照官方文档:https://docs.projectcalico.org/v2.6/getting-started/kubernetes/installation/hosted/hosted |
2、对于RBAC文件,不用做修改,直接创建即可:
1 | # kubectl create -f calico-rbac.yaml |
3、配置calico
1 | # vim calico.yaml |
1 | 关于ConfigMap部分主要参数如下: |
4、创建:
1 | # kubectl create -f calico.yaml |
1 | DaemonSet: |
5、修改kubelet配置:
1 | 设置各node上Kubelet服务的启动参数: --network-plugin=cni, 可能还要加上这两个参数: |
1 | # 本文修改后的 kubelet 配置 |
6,验证各Node间网络联通性:
1 | kubelet启动后主机上就生成了一个tunl0接口。 |
1 | # 如果设置CALICO_IPV4POOL_IPIP="off" ,即不使用IPIP模式,则Calico将不会创建tunl0网络接口,路由规则直接使用物理机网卡作为路由器转发。 |
1.10 集群CoreDNS部署
1、下载coredns部署包(k8s-master机器上操作)
1 | # 参考链接:https://my.oschina.net/u/2306127/blog/1788566 |
2、部署CoreDNS
1 | # 默认情况下CLUSTER_DNS_IP是自动获取kube-dns的集群ip的,但是由于没有部署kube-dns所以只能手动指定一个集群ip了 |
3、测试dns解析
1 | dig kube-dns.kube-system.svc.cluster.local @10.10.0.2 #能解析出ip就说明dns部署成功 |
1.11 集群dashboard、监控部署
1 | 参考链接: |
1、拷贝*.yp14.cn证书
1 | # 通过Let's Encrypt 免费获取通配符证书实现Https |
2、创建认证secret
1 | kubectl create secret generic kubernetes-dashboard-certs --from-file=$HOME/certs -n kube-system |
3、创建相关yaml配置文件
1 | # mkdir -p /root/yaml/kubernetes-dashboard |
1 | kubectl apply -f kubernetes-dashboard.yaml |
1 | # vim heapster-rbac.yaml |
1 | kubectl apply -f heapster-rbac.yaml -f heapster.yaml |
1 | # vim influxdb.yaml |
1 | kubectl apply -f influxdb.yaml |
1 | # vim grafana.yaml |
1 | kubectl apply -f grafana.yaml |
1 | # 查看部署是否成功 |
1.12 调整集群参数,为node预留资源
1 | # 设置node保留资源配置(机器配置2核4G,参数只是参考,并不是唯一) 参考 https://blog.8mi.net/Kubernetes/75.html |
1 | systemctl restart kubelet |
---本文结束感谢您的阅读。微信扫描二维码,关注我的公众号---

本文作者:
Peng Yang
本文链接: https://www.yp14.cn/2018/09/30/Kubernetes-v1-12-0-HA搭建/
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!
本文链接: https://www.yp14.cn/2018/09/30/Kubernetes-v1-12-0-HA搭建/
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!
