/install_k8s

一键安装kubernets(k8s)系统,采用RBAC模式运行(证书安全认证模式),既可以单台安装、也可以集群安装,并且完全是生产环境的安装标准。有疑问大家可以加我微信沟通:bsh888

Primary LanguageGo

安装最新稳定版:

kubernetes-v1.20.4、istio-v1.9.1 安装说明
安装包下载地址提取码: bntu
注意:新安装工具采用golang编写,可以运行在linux、mac、windows系统,添加机器操作界面化,安装逻辑和python脚本基本一致,做了一些优化,特别支持了istio安装。

先展示一下结果

安装后最终输出下图样子即为成功:
image
获取pods命令正常输出:
image
访问dashboard:
image
访问grafana(节点):
image
访问grafana(容器):
image
访问prometheus:
image
访问微服务例子:
image

下面是安装方法(安装过程有疑问可以加我微信:bsh888)

第一步,克隆安装程序,并进入目录:
git clone https://github.com/yonyoucloud/install_k8s
cd install_k8s

第二步,下载大文件二进制包(里面是x86_64下编译好的k8s二进制文件):
注意:下面的包可选,但要对应到相应的安装源码版本。

v1.16.3.1版本下载地址(ls-files-v1.16.3.1.gz,建议用此版本,对k8s和runc做了禁止kmem特性,否则可能容器中进程被内核频繁oomkill):
链接: https://pan.baidu.com/s/18Tq8RqxCKa8EBpXznOwBGg 提取码: p8f6

v1.13.3.1版本下载地址(ls-files-v1.13.3.1.gz,建议用此版本,对k8s和runc做了禁止kmem特性,否则可能容器中进程被内核频繁oomkill):
链接: https://pan.baidu.com/s/1mU3ykUaV5x5VNoh6tWuhCw 提取码: 4p7h

v1.13.3版本下载地址(ls-files-v1.13.3.gz):
链接: https://pan.baidu.com/s/1nNrfjA8fFqlkFa442jW47w 提取码: y69k

v1.11.3版本下载地址(ls-files-v1.11.3.gz):
链接: https://pan.baidu.com/s/1gCBY6YgG1McnDUen6egfMg 提取码: r7rs

mv ls-files-v1.13.3.gz install_k8s
cd install_k8s
tar zxvf ls-files-v1.13.3.gz

第三步,修改fabfile.py文件中主机登录密码及安装目的主机地址,并执行安装脚本:
建议:开始先测试一下单机部署,只需要替换一下fabfile.py中的ip地址及登录密码即可。
执行安装脚本:
cd install_k8s
./install.sh


下面是更详细的一些说明:

本安装包,运行在centos7上,包含的服务有:
etcd集群
kubernets master集群
kubernets node集群
calico 网络
docker 私有镜像仓库
ipvsadm(lvs) 负载均衡
bind 私有dns服务,方便内网域名拦截解析

镜像服务包括:
kube-dns
kubernetes-dashboard k8s UI
heapster 监控

测试例子微服务(golang写的一个小的输出服务):
web_test

安装脚本目录说明:
└── install_k8s 安装包
├── fabfile.py 基于fabric实现自动化安装k8s集群脚本
├── install.sh 安装shell脚本,里面会调用fabfile.py中函数
├── README 说明文件
├── source 源文件目录,也包括配置
└── ssh 直连容器需要的秘钥
└── uninstall.sh 卸载脚本
└── add_node.sh 修改fabric.py中newnode配置,执行此脚本可以添加node节点,支持一次添加多个,执行完把newnode合并到node配置中,便于集中控制
└── add_etcd.sh 修改fabric.py中newetcd配置,执行此脚本可以添加etcd节点,支持一次添加多个,执行完把newetcd合并到etcd配置中,便于集中控制
└── add_master.sh 修改fabric.py中newmaster配置,执行此脚本可以添加master节点,支持一次添加多个,执行完把newmaster合并到master配置中,便于集中控制

fabfile.py说明:
注意:
1、整个集群支持安装到一台主机上面, 需要注意vip要在同一网段, 且etcd和master的vip必须不同
2、如果采用LVS方式,机器重启时需要执行相应的虚ip挂载(这个不一定是必须执行)
fab service_lvs_start #全部启动
fab service_lvs_etcd #启动etcd
fab service_lvs_master #启动master

特别注意三项:
1、修改脚本中的主机密码信息
2、修改脚本中的主机地址信息
3、确保系统是centos7,并且网卡名字是eth0
4、如果遇到calico-node无法启动,可能是因为hostname不满足要求,不能存在大写字母及_(regex: a-z0-9?(.a-z0-9?)*))

编辑脚本配置信息, vim fabfile.py:
env.user = 'root'
env.password = '123456' # 注意这里需要修改服务器密码,集群密码要统一,也可以用下面秘钥文件的方式
#env.key_filename = "~/.ssh/id_rsa"
env.port = 22
env.abort_on_prompts = True
env.colors = True

如果在阿里云、华为云部署等云IaaS部署,请设置为False,env.roledefs['lvs']['hosts']置为空,

并且配置env.roledefs['etcd']['vip']及env.roledefs['master']['vip']分别为etcd、master

负载均衡地址,并且事先将端口及虚机设置好

env.use_lvs = True

env.roledefs = {
# 发布机,后面通过在此机器上执行kubectl命令控制k8s集群及部署应用
'publish': {
'hosts': [
'10.211.55.53:22',
],
},
# etcd节点安装主机(支持集群)
'etcd': {
'hosts': [
'10.211.55.54:22',
'10.211.55.55:22',
],
# 负载均衡etcd入口ip(虚ip)
'vip': '10.211.55.201'
},
# master节点安装主机(支持集群)
'master': {
'hosts': [
'10.211.55.54:22',
'10.211.55.55:22',
],
# 负载均衡master入口ip(虚ip)
'vip': '10.211.55.202'
},
# node节点安装主机(支持集群)
'node': {
'hosts': [
'10.211.55.54:22',
'10.211.55.55:22',
]
},
# lvs负载均衡安装主机(暂不支持集群)
# 特别要注意,如果etcd及master是多机部署,lvs上不要放etcd及master服务,且不要和发布机在一起,否则网络会有问题,如果是阿里云、华为云一定要换成对应的slb(需要提前配置好节点及端口),其实最好lvs单独部署,因为在其上面是无法访问其负载均衡的节点的,为了节省资源,上面可以放私有镜像仓库、私有dns服务
'lvs': {
'hosts': [
'10.211.55.56:22',
]
},
# 私有docker镜像仓库安装主机(暂不支持集群)
'pridocker': {
'hosts': [
'10.211.55.56:22',
]
},
# 私有dns服务器安装主机(暂不支持集群)
'pridns': {
'hosts': [
'10.211.55.53:22',
]
},
# 新加Node节点(支持集群)
'newnode': {
'hosts': [
#'10.211.55.57:22',
]
},
# 新加etcd节点(支持集群)
'newetcd': {
'hosts': [
#'10.211.55.58:22',
]
},
# 新加master节点(支持集群)
'newmaster': {
'hosts': [
#'10.211.55.59:22',
]
},
}