一、预先准备环境

1. 准备服务器

这里准备了三台centos虚拟机,每台一核cpu和2G内存,配置好root账户,并安装好了docker,后续的所有操作都是使用root账户。虚拟机具体信息如下表:

系统类型 IP地址 节点角色 CPU Memory Hostname
centos7.2 10.0.94.182 worker 1 2G server01
centos7.2 10.0.94.112 master 1 2G server02
centos7.2 10.0.94.246 worker 1 2G server03

使用ubuntu的同学也可以参考此文档,需要注意替换系统命令即可

2. 安装docker(所有节点)

一般情况使用下面的方法安装即可

2.1 卸载旧版本(如果有的话)

yum remove docker docker-common docker-selinux docker-engine

2.2 更新yum源

yum install -y yum-utils device-mapper-persistent-data lvm2 //安装更新源工具
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo //添加docker安装源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo //国内镜像
yum-config-manager --disable docker-ce-edge //禁止edge版本
yum update -y 更新源

2.3 安装docker-ce

  • 安装最新的稳定版
sudo yum makecache fast
sudo yum install docker-ce
sudo systemctl enable docker //开机自启动
sudo systemctl start docker
  • 安装指定版本
#获取版本列表

yum list docker-ce.x86_64  --showduplicates |sort -r

#指定版本安装(比如版本是17.03.1~ce-0~centos)

sudo yum install docker-ce-17.03.1.ce-1.el7.centos
  • 接受所有ip的数据包转发
$ vi /lib/systemd/system/docker.service

#找到ExecStart=xxx,在这行上面加入一行,内容如下:(k8s的网络需要)

ExecStartPost=/sbin/iptables -I FORWARD -s 0.0.0.0/0 -j ACCEPT
  • 配置Cgroup Driver(暂时不用配置)
#创建文件/etc/docker/daemon.json,添加如下内容:
{
"exec-opts": ["native.cgroupdriver=systemd"]
}
  • 启动服务
systemctl daemon-reload && systemctl restart docker && systemctl status docker

遇到问题可以参考:官方教程

3. 系统设置(所有节点)

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

systemctl stop firewalld
systemctl disable firewalld #查看状态 systemctl status firewalld

3.2 禁用SELinux

setenforce 0

编辑文件/etc/selinux/config,将SELINUX修改为disabled,如下:

SELINUX=disabled

3.3 关闭系统Swap

Kubernetes 1.8开始要求关闭系统的Swap,如果不关闭,默认配置下kubelet将无法启动。方法一,通过kubelet的启动参数–fail-swap-on=false更改这个限制。方法二,关闭系统的Swap。

swapoff -a

修改/etc/fstab文件,注释掉SWAP的自动挂载,使用free -m确认swap已经关闭。

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

#写入配置文件

cat <<EOF >  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF #生效配置文件 $ sysctl -p /etc/sysctl.d/k8s.conf

3.3 配置host文件

#
配置host,使每个Node都可以通过名字解析到ip地址 $ vi /etc/hosts #
加入如下片段(ip地址和servername替换成自己的) 10.0.94.182 server01
10.0.94.112 server02
10.0.94.246 server03

4. 准备二进制文件(所有节点)

kubernetes的安装有几种方式,不管是kube-admin还是社区贡献的部署方案都离不开这几种方式:

  • 使用现成的二进制文件

直接从官方或其他第三方下载,就是kubernetes各个组件的可执行文件。拿来就可以直接运行了。不管是centos,ubuntu还是其他的linux发行版本,只要gcc编译环境没有太大的区别就可以直接运行的。使用较新的系统一般不会有什么跨平台的问题。

  • 使用源码编译安装

编译结果也是各个组件的二进制文件,所以如果能直接下载到需要的二进制文件基本没有什么编译的必要性了。

  • 使用镜像的方式运行

同样一个功能使用二进制文件提供的服务,也可以选择使用镜像的方式。就像nginx,像mysql,我们可以使用安装版,搞一个可执行文件运行起来,也可以使用它们的镜像运行起来,提供同样的服务。kubernetes也是一样的道理,二进制文件提供的服务镜像也一样可以提供。

从上面的三种方式中其实使用镜像是比较优雅的方案,容器的好处自然不用多说。但从初学者的角度来说容器的方案会显得有些复杂,不那么纯粹,会有很多容器的配置文件以及关于类似二进制文件提供的服务如何在容器中提供的问题,容易跑偏。 所以我们这里使用二进制的方式来部署。二进制文件已经这里备好,大家可以打包下载,把下载好的文件放到每个节点上,放在哪个目录随你喜欢,放好后最好设置一下环境变量$PATH,方便后面可以直接使用命令。(科学上网的同学也可以自己去官网找找)
####下载地址(kubernetes 1.9.0版本)

$ cd
$ wget https://d11.baidupcs.com/file/8978e11910fb914bf1ab64b07976387f?bkt=p3-00002e17df651425d9ebba9738a94260652d&xcode=1483c091614709ca1f8aebee62ed1736ae9fc2e7aef036b5347c2dfae32981f3d0b67a61d4982d47&fid=4043815353-250528-907147618066443&time=1523770067&sign=FDTAXGERLQBHSKa-DCb740ccc5511e5e8fedcff06b081203-5yQA%2FzOEVOgp6%2FV21cqTCe%2FY8HQ%3D&to=d11&size=196361624&sta_dx=196361624&sta_cs=174&sta_ft=gz&sta_ct=5&sta_mt=5&fm2=MH%2CYangquan%2CAnywhere%2C%2Cshanghai%2Cct&vuk=4247423043&iv=0&newver=1&newfm=1&secfm=1&flow_ver=3&pkey=00002e17df651425d9ebba9738a94260652d&sl=81068110&expires=8h&rt=sh&r=431850130&mlogid=2425063882106374965&vbdid=463040528&fin=kubernetes-bins.tar.gz&fn=kubernetes-bins.tar.gz&rtype=1&dp-logid=2425063882106374965&dp-callid=0.1.1&hps=1&tsl=10&csl=10&csign=zHM%2B%2FfQNfqc7suh8mmRWRLs6e4g%3D&so=0&ut=8&uter=4&serv=0&uc=185380727&ic=3389584746&ti=5e666840c78f1973ef8ab19e5a112b76ee0066a78adba1f7305a5e1275657320&by=themis
$ tar -xvf kubernetes-bins.tar.gz
$ rm kubernetes-bins.tar.gz
$ mv kubernetes-bins/ bin

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

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

5.1 下载配置文件

#到home目录下载项目
$ cd
$ git clone https://github.com/jimbunny/kubernetes-starter.git
# 看看git内容
$ cd ~/kubernetes-starter && ls

5.2 文件说明

  • gen-config.sh

shell脚本,用来根据每个同学自己的集群环境(ip,hostname等),根据下面的模板,生成适合大家各自环境的配置文件。生成的文件会放到target文件夹下。

  • kubernetes-simple

简易版kubernetes配置模板(剥离了认证授权)。 适合刚接触kubernetes的同学,首先会让大家在和kubernetes初次见面不会印象太差(太复杂啦~~),再有就是让大家更容易抓住kubernetes的核心部分,把注意力集中到核心组件及组件的联系,从整体上把握kubernetes的运行机制。

  • kubernetes-with-ca

在simple基础上增加认证授权部分。大家可以自行对比生成的配置文件,看看跟simple版的差异,更容易理解认证授权的(认证授权也是kubernetes学习曲线较高的重要原因)

  • service-config

这个先不用关注,它是我们曾经开发的那些微服务配置。 等我们熟悉了kubernetes后,实践用的,通过这些配置,把我们的微服务都运行到kubernetes集群中。

5.3 生成配置

这里会根据大家各自的环境生成kubernetes部署过程需要的配置文件。 在每个节点上都生成一遍,把所有配置都生成好,后面会根据节点类型去使用相关的配置。

#cd到之前下载的git代码目录

$ cd ~/kubernetes-starter

#编辑属性配置(根据文件注释中的说明填写好每个key-value)

$ vi config.properties

#生成配置文件,确保执行过程没有异常信息

$ ./gen-config.sh simple

#查看生成的配置文件,确保脚本执行成功

$ find target/ -type f
target/all-node/kube-calico.service
target/master-node/kube-controller-manager.service
target/master-node/kube-apiserver.service
target/master-node/etcd.service
target/master-node/kube-scheduler.service
target/worker-node/kube-proxy.kubeconfig
target/worker-node/kubelet.service
target/worker-node/10-calico.conf
target/worker-node/kubelet.kubeconfig
target/worker-node/kube-proxy.service
target/services/kube-dns.yaml

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

  1. gen-config.sh: 3: gen-config.sh: Syntax error: "(" unexpected

  2. bash版本过低,运行:bash -version查看版本,如果小于4需要升级

  3. 不要使用 sh gen-config.sh的方式运行(sh和bash可能不一样哦)

    +
  4. config.properties文件填写错误,需要重新生成 再执行一次./gen-config.sh simple即可,不需要手动删除target

k8s1.9.0安装--环境准备的更多相关文章

  1. k8s1.9.0安装--完整集群部署

    三.完整集群部署 - kubernetes-with-ca 1. 理解认证授权 1.1 为什么要认证 想理解认证,我们得从认证解决什么问题.防止什么问题的发生入手.防止什么问题呢?是防止有人入侵你的集 ...

  2. k8s1.11.0安装、一个master、一个node、查看node名称是主机名、node是扩容进来的、带cadvisor监控服务

    一个master.一个node.查看node节点是主机名 # 安装顺序:先在test1 上安装完必要组件后,就开始在 test2 上单独安装node组件,实现node功能,再返回来配置test1加入集 ...

  3. k8s1.11.0安装、一个master、一个node、查看node名称是ip、node是扩容进来的、带cadvisor监控服务

    一个master.一个node.查看node节点是ip # 安装顺序:先在test1 上安装完必要组件后,就开始在 test2 上单独安装node组件,实现node功能,再返回来配置test1加入集群 ...

  4. k8s1.9.0安装--基础集群部署

    二.基础集群部署 - kubernetes-simple 1. 部署ETCD(主节点) 1.1 简介 kubernetes需要存储很多东西,像它本身的节点信息,组件信息,还有通过kubernetes运 ...

  5. [转]phoneGap3.0安装步骤(以windows下的android环境为例):

    phoneGap3.0安装步骤(以windows下的android环境为例): 环境: WIN系统,JDK,Android,Eclipse,Ant,Git,PhoneGap3.x (Cordova) ...

  6. Windows环境下Android Studio v1.0安装教程

    Windows环境下Android Studio v1.0安装教程 准备工具 JDK安装包. 要求:JDK 7以及以上版本. Android Studio安装文件. Windows: exe(包含SD ...

  7. inux环境PHP7.0安装

    inux环境PHP7.0安装   PHP7和HHVM比较PHP7的在真实场景的性能确实已经和HHVM相当, 在一些场景甚至超过了HHVM.HHVM的运维复杂, 是多线程模型, 这就代表着如果一个线程导 ...

  8. 【转】Windows环境下Android Studio v1.0安装教程

    原文网址:http://ask.android-studio.org/?/article/9 http://android-studio.org/index.php/docs/experience/1 ...

  9. WebStorm 8.0安装LESS编译环境的教程

    WebStorm是一个非常棒的Web前端开发编辑器,被程序猿们成为“最智能的JavaScript IDE”.对HTML5.Bootstrap框架.Node.js等都有完美支持.目前最新版本为WebSt ...

随机推荐

  1. 利用POi3.8导出excel产生大量xml临时文件怎么办?

    在实际项目中,经常会用到POI3.8来导出excel.而导出excel的时候,会因为残留大量以.xml结尾的文件而导致服务器存储空间急剧增长,最后导致系统挂了.为此,该怎么办呢? .xml后缀残留文件 ...

  2. oh my god,写20万数据到Excel只需9秒

    还是菜鸟时,在某个.Net项目中,用户需要从业务系统导出Report,而数据量通常都在上万条以上,最初采用的方式就是在服务器端用NPOI生成Excel,把Data一行一行一个Cell一个Cell地写到 ...

  3. 数据管理工具Flux、Redux、Vuex的区别

    目录 为什么要进行数据管理? 怎么有效地进行数据管理? 数据管理工具 1. Flux 2. Redux 3. Vuex 使用数据管理工具的场景 相关资料 主要讲解一下前端为什么需要进行数据管理,有效的 ...

  4. WebApp 安全风险与防护课堂(第二讲)开课了!

    本文由葡萄城技术团队于原创并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 在昨天的公开课中,由于参与的小伙伴们积极性和热情非常高,我们的讲师Carl ...

  5. HTTP Post之multipart/form-data和application/x-www-form-urlencoded

    关于HttpPost,有这样两种可Post的数据载体,分别是MultipartEntity和UrlEncodedFormEntity,对这两者的共性和异性做如下解释和备忘: 共性: 1.都属于HTTP ...

  6. linux Apache设置https访问以及加载mod_ssl.so模块以及问题解决

    开始之前的话: 1.配置好服务器防火墙的443端口规则: 2.购买好证书文件,我是沃通证书,准备好证书,这里不演示证书的购买和安装. 3.根据服务器类型下载文件,apache一共有4个文件 这里提供沃 ...

  7. java8 异步api、循环、日期

    java8 异步api.循环.日期 转载请注明出处:https://www.cnblogs.com/funnyzpc/p/10801470.html 异步api 对于多任务耗时的业务场景,一般我们会用 ...

  8. 【简单脚本】Linux查看配置信息

    命令比较多,统一整合了一下: 1.新建文件touch getComputerConf.sh 2.vim getComputerConf.sh 3.按i键插入,右键粘贴如下内容: #!/bin/sh e ...

  9. Mac iTerm2使用lrzsz上传和下载文件

    Mac iTerm2使用lrzsz对服务器上传和下载文件 安装工具 首先需要安装iTerm2和homebrew,在终端中执行(打开终端,使用搜索(command + space),输入terminal ...

  10. CSS3 - vue中纯css实现柱状图表效果

    背景 以前我们制作柱状图都用echarts或者其他同类型的图表插件 这次是个移动端的需求,而且这个图表需要动画 使用echarts就会显得过重,而且动画达不到我想要的效果(主要是我自己愚蠢想不到好的动 ...