环境介绍及安装前准备

三台机器,用于部署k8s的运行环境:

节点 ip
Master 192.168.243.138
Node1 192.168.243.139
Node2 192.168.243.140

集群配置:

部署节点(1个):运行ansible脚本的节点
etcd节点(3个):注意etcd集群必须是1,3,5,7...奇数个节点
master节点(1个):根据实际集群规模可以增加节点数,但是此时需要额外规划一个master VIP(虚地址)
node节点(2个):真正应用负载的节点,可根据需要增加机器配置和节点数
lb节点(2个) : 负载均衡节点两个,安装 haproxy+keepalived

k8s集群会识别主机名字,确保每个主机名设为不同值,使用命令即可(修改完成之后,需要重启机器才能生效)

hostnamectl --static set-hostname  master
hostnamectl --static set-hostname node1
hostnamectl --static set-hostname node2

编辑/etc/hosts文件,写入下面信息:

192.168.243.138 master
192.168.243.139 node1
192.168.243.140 node2

关闭三台机器上面的防火墙,为了安全,在这里选择临时关闭防火墙,不建议永久关闭

systemctl stop firewalld

在安装部署集群之前,先将三台服务器的时间进行同步,否则,在后面的运行中可能会提示错误,以前写过一篇关于时间同步设置的博客,在这里我就不重复了,直接贴出来:【Linux】时间同步设置+防火墙设置+SELinux设置

部署etcd

因为内容较多,另外写了一篇博客:[Kubernetes]CentOS7下Etcd集群搭建

lb节点安装haproxy+keepalived

在ip为192.168.243.139和192.168.243.140上安装部署haproxy+keepalived

yum install haproxy keepalived -y

安装完毕之后,修改配置文件,具体如图:



keepalived相关配置文件也要做修改,在这里我就直接贴出来以前写的一篇博客了,就不多做介绍了:Keepalived+LVS-DR+Nginx高可用故障切换模式

集群部署

1,安装Docker,一条命令即可(如果服务器上面安装过,这一步可跳过):

yum -y install docker

2,安装epel源并更新:

yum install epel-release -y
yum update

3,安装及准备ansible(一个节点执行即可,在这里我是在master节点上执行的):

yum install git python-pip -y
(如果直接运行上面命令出错时,可以先运行 yum -y install epel-release
之后再运行yum -y install python-pip
出现错误原因一般是因为CentOS官方的源有些时候滞后导致的)
#pip安装ansible:
pip install pip --upgrade
pip install ansible

接下来将/usr/bin/pip做以下修改:

原代码:
from pip._internal import main if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(main()) 修改为:
from pip._internal import _main_ if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(_main_.main())

免密码登陆其他节点

ssh-keygen -t rsa -b 2048    然后一路回车即可
ssh-copy-id root@master (在/etc/hosts文件中的名称,在环境介绍及安装前准备有介绍)
按照提示输入yes和root密码即可
需要注意:ssh-copy-id节点地址和自身都要执行此命令

4,编排k8s安装(一个节点执行即可,在这里我是在master节点上执行的):

git clone https://github.com/gjmzj/kubeasz.git
mkdir -p /etc/ansible
mv kubeasz/* /etc/ansible

5,下载二进制文件(一个节点执行即可,在这里我是在master节点上执行的):

国内请从分享的百度云链接下载 https://pan.baidu.com/s/1c4RFaA
下载完成之后,解压到/etc/ansible/bin目录下
如果有合适网络环境,也可以按照/down/download.sh自行从官网上下载

6,配置集群参数(一个节点执行即可,在这里我是在master节点上执行的):

cd /etc/ansible
cp example/hosts.m-masters.example hosts
vi hosts # 根据实际情况修改此hosts文件
# 验证ansible安装,正常能看到每个节点返回 SUCCESS
ansible all -m ping

如图,我们可以看到ansible已正确安装:



7,开始安装.如果对集群安装了流程不熟悉,可以分步安装,当然也可以一步安装(一个节点执行即可,在这里我是在master节点上执行的):

# 分步安装
ansible-playbook 01.prepare.yml
ansible-playbook 02.etcd.yml
ansible-playbook 03.docker.yml
ansible-playbook 04.kube-master.yml
ansible-playbook 05.kube-node.yml
ansible-playbook 06.network.yml
ansible-playbook 07.cluster-addon.yml
# 也可一步安装
ansible-playbook 90.setup.yml
验证安装

到上面为止,就已经做完了相关部署.接下来我们需要验证一下安装的正确与否.

kubectl version
kubectl get componentstatus # 可以看到scheduler/controller-manager/etcd等组件 Healthy
kubectl cluster-info # 可以看到kubernetes master(apiserver)组件 running
kubectl get node # 可以看到单 node Ready状态
kubectl get pod --all-namespaces # 可以查看所有集群pod状态,默认已安装网络插件、coredns、metrics-server等
kubectl get svc --all-namespaces # 可以查看所有集群服务状态

具体图片在这里我就不做展示了.

有可能提示:kubectl: command not found

这是因为没有将kubectl没有添加到系统的环境变量中,解决办法:

首先运行 find / -name kubectl 找到kubectl所在目录
可以看到,在/etc/ansible/bin/kubectl
编辑环境变量:vi /etc/profile
在文件中添加:export PATH=/etc/ansible/bin/:$PATH
环境变量生效:source /etc/profile

当运行kubectl version时,可能提示:The connection to the server localhost:8080 was refused - did you specify the right host or port?

解决办法:

需要开启api server 代理端口:
查看端口是否代理:curl localhost:8080/api 可以看到是被拒绝连接的
开启端口代理:kubectl proxy --port=8080 &
安装主要组件
# 安装kubedns,默认已集成安装
kubectl create -f /etc/ansible/manifests/kubedns
# 安装dashboard,默认已集成安装
kubectl create -f /etc/ansible/manifests/dashboard

此时,我们便可以登录dashboard查看和管理集群了.

[Kubernetes]CentOS7部署Kubernetes集群的更多相关文章

  1. 在 Kubernetes 中部署 Redis 集群

    在 Kubernetes 中部署 Redis 集群 在Kubernetes中部署Redis集群面临挑战,因为每个 Redis 实例都依赖于一个配置文件,该文件可以跟踪其他集群实例及其角色.为此,我们需 ...

  2. [Kubernetes]CentOS7下Etcd集群搭建

    Etcd简要介绍 Etcd是Kubernetes集群中的一个十分重要的组件,用于保存集群所有的网络配置和对象的状态信息 Etcd构建自身高可用集群主要有三种形式: ①静态发现: 预先已知 Etcd 集 ...

  3. Centos7部署Redis集群

    Redis简介 Redis(Remote Dictionary Server)是完全开源的.遵守BSD协议的.高性能的Key-Value数据库. Redis与其他Key-Value缓存产品有一下三个特 ...

  4. 在CentOS7部署zookeeper集群以及简单API使用

    一.部署zookeeper集群 zookeeper是一个针对大型分布式系统的协调系统,提供的功能有统一名称服务.分布式同步等. 1.上传zk安装包 2.解压     tar -xzvf zookeep ...

  5. 使用虚拟机CentOS7部署CEPH集群

    第1章   CEPH部署 1.1  简单介绍 Ceph的部署模式下主要包含以下几个类型的节点 Ø CephOSDs: A Ceph OSD 进程主要用来存储数据,处理数据的replication,恢复 ...

  6. (二)Kubernetes kubeadm部署k8s集群

    kubeadm介绍 kubeadm是Kubernetes项目自带的及集群构建工具,负责执行构建一个最小化的可用集群以及将其启动等的必要基本步骤,kubeadm是Kubernetes集群全生命周期的管理 ...

  7. kubernetes二进制部署k8s-master集群controller-manager服务unhealthy问题

    一.问题现象 我们使用二进制部署k8s的高可用集群时,在部署多master时,kube-controller-manager服务提示Unhealthy [root@ceph-01 system]# k ...

  8. Kubernetes(k8s)部署redis-cluster集群

    Redis Cluster 提供了一种运行 Redis 安装的方法,其中数据 在多个 Redis 节点之间自动分片. Redis Cluster 还在分区期间提供了一定程度的可用性,这实际上是在某些节 ...

  9. 017.Kubernetes二进制部署检查集群

    一 验证集群功能 1.1 检查节点状态 [root@k8smaster01 ~]# kubectl get nodes 1.2 创建测试文件 [root@k8smaster01 ~]# cd /opt ...

随机推荐

  1. Jqgrid pager 关于“local” dataType 动态加载数据分页的研究(没好用的研究结果)

    系列索引 Web jquery表格组件 JQGrid 的使用 - 从入门到精通 开篇及索引 Web jquery表格组件 JQGrid 的使用 - 4.JQGrid参数.ColModel API.事件 ...

  2. Mac 上有哪些鲜为人知且极大提高效率的工具?

    来源:知乎文章收录于:风云社区SCOEE,提供上千款各类mac软件下载 1. Focus  功能: 屏蔽影响你学习的网站.  同类软件:Self Control, Rescue Time  特点 ...

  3. 强大的 10款 Mac 思维导图和流程图软件推荐

    本文首发于[风云社区 SCOEE],想了解更多mac软件相关内容,可到[风云社区 SCOEE] 今天和大家分享思维导图和流程图工具,思维导图软件可以说应用非常的广,无论是设计工作.开发工作.管理工作都 ...

  4. mysql删除大表更快的drop table办法

    mysql删除大表更快的drop table办法 参考资料:https://blog.csdn.net/anzhen0429/article/details/76284320 利用硬链接和trunca ...

  5. Python中的格式化输出

    百分号格式化输出 百分号默认右对齐 %s 字符串 (采用str()的显示) %r 字符串 (采用repr()的显示) %c 单个字符 %b 二进制整数 %d 十进制整数 %i 十进制整数 %o 八进制 ...

  6. Ruby页面,循环赋值方法(类似java EL表达式赋值)

    ------------前台代码--------------- <% @form_hash.each_with_index do |f,index| %> <% item = f[: ...

  7. 转: Linux 系统调用sysconf 获取系统配置信息

    1.前言 linux提供了sysconf系统调用可以获取系统的cpu个数和可用的cpu个数. 2.sysconf  函数 man一下sysconf,解释这个函数用来获取系统执行的配置信息.例如页大小. ...

  8. Django之组件--cookie与session

    cookie组件 cookie:由服务器产生,存放在客户端浏览器上的键值对. 使用: -设置值: obj=HttpResponse('ok') obj.set_cookie('key','value' ...

  9. ACM-ICPC 2018 徐州赛区网络预赛 I Characters with Hash(模拟)

    https://nanti.jisuanke.com/t/31461 题意 一个hash规则,每个字母映射成一个两位数,求给的字符串最后的编码位数,要求去除最终结果的前导零 分析 按题意模拟就是了 # ...

  10. HDU 1015(字符运算 **)

    题意是在一段大写英文字符中找出 5 个字符通过代入公式运算得到目标值,如有多组字符满足题意,则输出字典序最大的一组,否则输出 no solution. 应该是用深搜做的,但是直接暴力也过了……(应该没 ...