前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >『高级篇』docker之kubernetes环境搭建与预先环境准备(32)

『高级篇』docker之kubernetes环境搭建与预先环境准备(32)

作者头像
IT架构圈
发布2018-12-12 11:36:22
6640
发布2018-12-12 11:36:22
举报
文章被收录于专栏:IT架构圈IT架构圈

上次讲了k8s的理论部分,从这次开始实践部分。从环境搭建的实际操作中,深入了解k8s的组件和它的架构设计。对于新手来说,搭建一个完整的k8s的环境真心困难啊,至少我在中级搭建的时候感觉很麻烦,如果你访问外国网站的话,可以通过kubernetes-admin的方式,但是相信大部分的老铁,还是绿色的上网环境,特别k8s的服务器,根本不具备访问外国网站能力的,对于这个问题,社区也推出来了很多自研的部署方案,经过迭代也踊跃了很多种的方案。都不太适合新手来,虽然好解决,但是安装节点对你来说还是个黑盒,这些方案的学习成本都非常的高,有的不够灵活,想特殊配置的。源码:https://github.com/limingios/msA-docker swarm分支 vagrant/k8s 和 https://github.com/limingios/kubernetes-starter

参考高手总结的k8s的安装

https://github.com/limingios/kubernetes-starter

  1. 绿色网络情况下愉快的安装网络集群
  2. 安装的过程加深对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的数据包转发
代码语言:javascript
复制
$ vi /lib/systemd/system/docker.service

#找到ExecStart=xxx,在这行上面加入一行,内容如下:(k8s的网络需要)
ExecStartPost=/sbin/iptables -I FORWARD -s 0.0.0.0/0 -j ACCEPT

  • 三台机器启动服务
代码语言:javascript
复制
$ systemctl daemon-reload
$ service docker start

系统设置(所有节点)

关闭、禁用防火墙(让所有机器之间都可以通过任意端口建立连接)

代码语言:javascript
复制
systemctl stop firewalld
systemctl disable firewalld
#查看状态
systemctl status firewalld

设置系统参数 - 允许路由转发,不对bridge的数据进行处理

代码语言:javascript
复制
#写入配置文件
$ cat <<EOF > /etc/sysctl.d/k8s.conf
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

#生效配置文件
$ sysctl -p /etc/sysctl.d/k8s.conf

配置host文件

代码语言:javascript
复制
#配置host,使每个Node都可以通过名字解析到ip地址
$ vi /etc/hosts
#加入如下片段(ip地址和servername替换成自己的)
192.168.66.101 server01
192.168.66.102 server02
192.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用户下
代码语言:javascript
复制
#设置 PasswordAuthentication yes
vi /etc/ssh/sshd_config
sudo systemctl restart sshd

  • 将下载的k8s上传到linux服务器上

密码都是vagrant

代码语言:javascript
复制
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就是为了不在配置环境变量

代码语言:javascript
复制
tar -xvf kubernetes-bins.tar.gz 
mv kubernetes-bins/ bin

准备配置文件(所有节点)

上一步我们下载了kubernetes各个组件的二进制文件,这些可执行文件的运行也是需要添加很多参数的,包括有的还会依赖一些配置文件。现在我们就把运行它们需要的参数和配置文件都准备好。

下载配置文件

代码语言:javascript
复制
#安装git
yum -y install git
#到home目录下载项目
git clone https://github.com/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部署过程需要的配置文件。 在每个节点上都生成一遍,把所有配置都生成好,后面会根据节点类型去使用相关的配置。

代码语言:javascript
复制
#cd到之前下载的git代码目录
cd ~/kubernetes-starter
#编辑属性配置(根据文件注释中的说明填写好每个key-value)
vi config.properties
#生成配置文件,确保执行过程没有异常信息

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

执行gen-config.sh常见问题:

  1. gen-config.sh: 3: gen-config.sh: Syntax error: "(" unexpected
  • bash版本过低,运行:bash -version查看版本,如果小于4需要升级
  • 不要使用 sh gen-config.sh的方式运行(sh和bash可能不一样哦)
  1. config.properties文件填写错误,需要重新生成 再执行一次./gen-config.sh simple即可,不需要手动删除target

PS:下一步将一步一步的使用这些文件,到那个时间说说每个文件的功能。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-11-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 编程坑太多 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 参考高手总结的k8s的安装
  • 预先环境准备
  • 系统设置(所有节点)
    • 关闭、禁用防火墙(让所有机器之间都可以通过任意端口建立连接)
      • 设置系统参数 - 允许路由转发,不对bridge的数据进行处理
        • 配置host文件
        • 准备二进制文件(所有节点)
          • [下载地址(kubernetes 1.9.0版本)] (https://pan.baidu.com/s/1bMnqWY)
          • 准备配置文件(所有节点)
            • 下载配置文件
              • 文件说明
                • 3台机器生成配置
                相关产品与服务
                容器服务
                腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档