『高级篇』docker之kubernetes环境调试与预先环境准备(32)
原创文章,欢迎转载。转载请注明:转载自IT人故事会,谢谢!
原文链接地址:『高级篇』docker之kubernetes环境调试与预先环境准备(32)
上次讲了k8s的理论部分,从这次开始实践部分。从环境调试的实际操作中,深入理解k8s的组件和它的架构设计。对于新手来说,搭建一个完整的k8s的环境真心困难啊,至少我在中级搭建的时候感觉很麻烦,假如你科学上网的话,可以通过kubernetes-admin的方式,但是相信大部分的老铁,还是绿色的上网环境,特别k8s的服务器,根本不具有科学上网能力的,对于这个问题,社区也推出来了很多自研的部署方案,经过迭代也踊跃了很多种的方案。都不太适合新手来,尽管好处理,但是安装节点对你来说还是个黑盒,这些方案的学习成本都非常的高,有的不够灵活,想特殊配置的。源码: limingios/msA-docker swarm分支 vagrant/k8s 和
limingios/kubernetes-starter
参考高手总结的k8s的安装
limingios/kubernetes-starter
- 绿色网络情况下愉快的安装网络集群
- 安装的过程加深对k8s的深入了解
尽量让部署变的简单,第一次安装,剥离了认证和受权部分,非必需安装的放在最后,从整体上把握k8s的运行机制。最后加上认证受权。k8s的难点就是认证和受权,加入进去后会让人感觉整个过程,让人感觉非常非常的复杂,所以在这里第一次安装的时候做了剥离。

- 脚本gen-config.sh
脚本非常的简单,就是帮助各位老铁生成少量配置文件,由于k8s涉及到的脚本也非常多,不可能手动一点一滴的去敲,配置写成了模板,通过脚本生成适应自己环境的配置文件。比方你的机器的hostname,ip,文件的存放路径各有不同。
预先环境准备
- 虚拟机详情和安装
3台虚拟机还是通过vagrant来生成对应的虚拟机。vagrant已经安装了 对应的docker。
| 系统类型 | IP地址 | 节点角色 | CPU | Memory | Hostname |
|---|---|---|---|---|---|
| Centos7 | 192.168.66.101 | master | 1 | 2G | server01 |
| Centos7 | 192.168.66.102 | worker | 1 | 1G | server02 |
| Centos7 | 192.168.66.103 | worker | 1 | 1G | server03 |



- 三台机器接受所有ip的数据包转发
$ vi /lib/systemd/system/docker.service #找到ExecStart=xxx,在这行上面加入一行,内容如下:(k8s的网络需要)ExecStartPost=/sbin/iptables -I FORWARD -s 0.0.0.0/0 -j ACCEPT


- 三台机器启动服务
$ systemctl daemon-reload$ service docker start
image.png

系统设置(所有节点)
关闭、禁用防火墙(让所有机器之间都可以通过任意端口建立连接)
systemctl stop firewalldsystemctl disable firewalld#查看状态systemctl status firewalld


设置系统参数 – 允许路由转发,不对bridge的数据进行解决
#写入配置文件$ cat <<EOF > /etc/sysctl.d/k8s.confnet.ipv4.ip_forward = 1net.bridge.bridge-nf-call-ip6tables = 1net.bridge.bridge-nf-call-iptables = 1EOF #生效配置文件$ sysctl -p /etc/sysctl.d/k8s.conf


配置host文件
#配置host,使每个Node都可以通过名字解析到ip地址$ vi /etc/hosts#加入如下片段(ip地址和servername替换成自己的)192.168.66.101 server01192.168.66.102 server02192.168.66.103 server03


准备二进制文件(所有节点)
kubernetes的安装有几种方式,不论是kube-admin还是社区贡献的部署方案都离不开这几种方式:
- 使用现成的二进制文件
直接从官方或者其余第三方下载,就是kubernetes各个组件的可执行文件。拿来即可以直接运行了。不论是centos,ubuntu还是其余的linux发行版本,只需gcc编译环境没有太大的区别即可以直接运行的。使用较新的系统一般不会有什么跨平台的问题。
- 使用源码编译安装
编译结果也是各个组件的二进制文件,所以假如能直接下载到需要的二进制文件基本没有什么编译的必要性了。
- 使用镜像的方式运行
同样一个功能使用二进制文件提供的服务,也可以选择使用镜像的方式。就像nginx,像mysql,我们可以使用安装版,搞一个可执行文件运行起来,也可以使用它们的镜像运行起来,提供同样的服务。kubernetes也是一样的道理,二进制文件提供的服务镜像也一样可以提供。
从上面的三种方式中其实使用镜像是比较优雅的方案,容器的好处自然不用多说。但从初学者的角度来说容器的方案会显得有些复杂,不那么纯粹,会有很多容器的配置文件以及关于相似二进制文件提供的服务如何在容器中提供的问题,容易跑偏。
所以我们这里使用二进制的方式来部署。二进制文件已经这里备好,大家可以打包下载,把下载好的文件放到每个节点上,放在哪个目录随你喜欢,放好后最好设置一下环境变量$PATH,方便后面可以直接使用命令。(科学上网的老铁也可以自己去官网找找)
[下载地址(kubernetes 1.9.0版本)] (https://pan.baidu.com/s/1bMnqWY)
- 三台机器mac开通远程登录root客户下
#设置 PasswordAuthentication yesvi /etc/ssh/sshd_configsudo systemctl restart sshd


- 将下载的k8s上传到linux服务器上
密码都是vagrant
scp kubernetes-bins.tar.gz root@192.168.66.101:~scp kubernetes-bins.tar.gz root@192.168.66.102:~scp kubernetes-bins.tar.gz root@192.168.66.103:~



- 解压k8s,改名
解压后,改名成bin就是为了不在配置环境变量
tar -xvf kubernetes-bins.tar.gz mv kubernetes-bins/ bin


准备配置文件(所有节点)
上一步我们下载了kubernetes各个组件的二进制文件,这些可执行文件的运行也是需要增加很多参数的,包括有的还会依赖少量配置文件。现在我们就把运行它们需要的参数和配置文件都准备好。
下载配置文件
#安装gityum -y install git#到home目录下载项目git clone limingios/kubernetes-starter.git#看看git内容cd ~/kubernetes-starter && ll


文件说明
- gen-config.sh
shell脚本,用来根据每个老铁自己的集群环境(ip,hostname等),根据下面的模板,生成适合大家各自环境的配置文件。生成的文件会放到target文件夹下。
- kubernetes-simple
简易版kubernetes配置模板(剥离了认证受权)。
适合刚接触kubernetes的老铁,首先会让大家在和kubernetes首次见面不会印象太差(太复杂啦~~),再有就是让大家更容易抓住kubernetes的核心部分,把注意力集中到核心组件及组件的联络,从整体上把握kubernetes的运行机制。
- kubernetes-with-ca
在simple基础上添加认证受权部分。大家可以自行比照生成的配置文件,看看跟simple版的差异,更容易了解认证受权的(认证受权也是kubernetes学习曲线较高的重要起因)
- service-config
这个先不用关注,它是我们曾经开发的那些微服务配置。
等我们熟习了kubernetes后,实践用的,通过这些配置,把我们的微服务都运行到kubernetes集群中。
3台机器生成配置
这里会根据大家各自的环境生成kubernetes部署过程需要的配置文件。
在每个节点上都生成一遍,把所有配置都生成好,后面会根据节点类型去使用相关的配置。
#cd到之前下载的git代码目录cd ~/kubernetes-starter#编辑属性配置(根据文件注释中的说明填写好每个key-value)vi config.properties#生成配置文件,确保执行过程没有异常信息



#生成简易版本 ./gen-config.sh simple#查看生成的配置文件,确保脚本执行成功 find target/ -type f


执行gen-config.sh常见问题:
- gen-config.sh: 3: gen-config.sh: Syntax error: “(” unexpected
- bash版本过低,运行:bash -version查看版本,假如小于4需要更新
- 不要使用 sh gen-config.sh的方式运行(sh和bash可能不一样哦)
- config.properties文件填写错误,需要重新生成
再执行一次./gen-config.sh simple就可,不需要手动删除target
PS:下一步将一步一步的使用这些文件,到那个时间说说每个文件的功能。里面有写错的,192.168.1.101.2379 改成192.168.1.101:2379

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 『高级篇』docker之kubernetes环境调试与预先环境准备(32)