Code Monkey home page Code Monkey logo

install_k8s's Introduction

先展示一下结果

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

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

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

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

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

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',
]
},
}

install_k8s's People

Contributors

bishenghua avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.