xiongraorao / Athena

基于ubuntu14的k8s一键安装部署和应用实践

Home Page:https://github.com/xiongraorao/Athena

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Athena

基于 ubuntu 16.04 的 kubernetes (k8s) 的安装、应用实践


Warning: 老版本的安装方法,使用ubuntu 14 的upstart 创建自启动进程,不推荐 ubuntu 14.04 + k8s 1.6.3 安装说明

1 介绍

该项目提供了一种快速上手k8s的安装、应用实践教程

参考引用

2 安装运行

2.1 准备工作

以下操作需要在所有节点执行

  1. 设置/etc/hosts解析

下文均按此示例操作:

ip地址 主机名 备注
192.168.1.3 cloud03 workerNode
192.168.1.5 cloud05 masterNode workerNode
192.168.1.6 cloud06 workerNode
ssh root@192.168.1.5
cat >> /etc/hosts << EOF
192.168.1.3    cloud03
192.168.1.5    cloud05
192.168.1.6    cloud06
EOF
for ip in 3 6;do scp /etc/hosts root@192.168.1.$ip:/etc/;done
  1. ssh 免密码链接
ssh root@192.168.1.5
ssh-keygen -t rsa 
# 一路回车
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

# 在其他节点重复以上操作
# 复制集群其他节点的id_rsa.pub文件到~/.ssh/authorized_keys
for ip in 3 6;do scp root@192.168.1.$ip:/root/.ssh/id_rsa.pub ./$ip.pub;done
for ip in 3 6;do cat ./$ip.pub >> ~/.ssh/authorized_keys;done
# 分发公钥
for ip in 3 6;do scp ~/.ssh/authorized_keys root@192.168.1.$ip:/root/.ssh/;done
  1. 集群时间同步

  2. 关闭、禁用所有节点的防火墙

ssh root@192.168.1.5
service ufw stop
#检查一下
service ufw status
# 确认是否是inactive
# 去其他节点重复操作
  1. 安装docker-ce

官方ubuntu docker安装文档 清华镜像安装(推荐)

# 安装依赖
sudo apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common
# 添加GPG公钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# ubuntu amd64
sudo add-apt-repository \
   "deb [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
sudo apt-get update
# 不能安装太高的,否则可能导致kubelet无法启动
sudo apt-get install docker-ce=17.03.0~ce-0~ubuntu-trusty
  1. 禁用交换内存(k8s version 1.8+ )
swapoff -a
sed -i 's/.*swap.*/#&/' /etc/fstab
  1. 设置允许路由转发,不对bridge的数据进行处理
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
  1. ansible 自动化管理工具

ansible是一个自动化管理工具,可以一键在多机器上面执行命令,适合集群管理。安装ansible之前需要保证集群的SSH免密码链接

sudo apt-get install software-properties-common
sudo apt-add-repository ppa:ansible/ansible
sudo apt-get update
sudo apt-get install ansible

2.2 安装

su root
git clone https://github.com/xiongraorao/kubeasz.git
cp -r kubeasz/* /etc/ansible/ && cd /etc/ansible/
git pull origin dev
git checkout dev
# 一键安装
ansible-playbook 90.setup.yml
# 分步骤安装请看readme
  1. 启动k8s
# 默认是开机自启动的,可以根据需要自行修改
sh start_all.sh
  1. 关闭k8s
sh shutdown_all.sh

2.3.4 手动更新k8s

ansible-playbook -t upgrade_k8s 22.upgrade.yml

3 安装k8s插件

分布式存储方案(支持动态PV)

3.1 dashboard控制面板

dashboard v1.6.0
dashboard v1.7.1安装步骤

3.2 kubedns 插件

kube dns插件安装

3.3 heapster集群应用监控插件

heapster插件

3.4 traefik负载均衡插件

trafix ingress安装步骤

traefik高可用的配置:

apt-get install keepalived ipvsadm
vim /etc/keepalived/keepalived.conf

# 配置virtual_server 和real_server, 保证virtual_server 是局域网中一个可用的ip

for ip in seq 3 5 6; do scp conf/keepalived-master.conf root@192.168.1.$ip:/etc/keepalived/; done

注意,如果node的80端口被占用的话,会导致启动traefik失败

3.5 Helm服务编排插件

helm管理插件

此处有个坑,要求每个node必须安装好socat和nsenter github issue 解决如下:

# 1. install socat
sudo apt-get update && sudo apt-get install socat

# 2. install nsenter
cd /tmp; 
curl https://www.kernel.org/pub/linux/utils/util-linux/v2.25/util-linux-2.25.tar.gz | tar -zxf-; cd util-linux-2.25;
sudo apt-get install autopoint autoconf libtool automake
./configure --without-python --disable-all-programs --enable-nsenter --without-ncurses
make nsenter
cp nsenter /usr/local/bin

3.6 Jenkins(gitlab)持续集成插件

kubeasz-jenkins
jenkins持续集成

安装:

  1. docker 方式安装
git clone https://github.com/xiongraorao/Athena.git
sh jenkins-docker-setup.sh

打开 jenkins 页面: http://localhost:8080

  1. k8s 安装(推荐)
git clone https://github.com/xiongraorao/Athena.git

# 创建静态PV和PVC(这里要具体看jenkins数据持久化的类型,这里使用的是NFS静态PV)
kubectl create -f Athena/yaml/jenkins/jenkins-pv.yaml

# helm 安装
helm install Athena/yaml/jenkins --name jenkins 

# 第一次启动耗时较长,大约5-10分钟

jenkins 配置和使用说明

3.7 Drone(github)持续集成插件

drone持续集成

3.8 Master节点高可用安装

keepalived+haproxy方案

4 部署应用

4.1 nginx安装

cd yaml/nginx/
kubectl create -f .

4.2 Mysql高可用安装

kubectl create -f yaml/poseidon/mysql/

4.3 Zookeeper高可用安装

kubectl create -f yaml/poseidon/zookeeper/

4.4 Kafka高可用安装

kubectl create -f yaml/poseidon/kafka/

4.5 seaweedfs高可用安装

kubectl create -f yaml/poseidon/seaweedfs/

5 常见错误

  1. socat 和 nsenter not found, 执行 kuberctl port_forward 会发生该错误

6. 学习心得

k8s1.5之后的版本支持动态分配PV和PVC,使用storage class对象来完成动态PV和PVC的分配,对于有状态的应用是十分友好的,便于扩展。参考链接:glusterfs 作为provisioner 部署zookeeper

About

基于ubuntu14的k8s一键安装部署和应用实践

https://github.com/xiongraorao/Athena

License:MIT License


Languages

Language:Shell 97.7%Language:Smarty 2.3%