基于 ubuntu 16.04 的 kubernetes (k8s) 的安装、应用实践
Warning: 老版本的安装方法,使用ubuntu 14 的upstart 创建自启动进程,不推荐 ubuntu 14.04 + k8s 1.6.3 安装说明
该项目提供了一种快速上手k8s的安装、应用实践教程
以下操作需要在所有节点执行
- 设置/etc/hosts 解析
- 集群节点ssh免密码连接
- 集群时间同步
- 关闭、禁用所有节点的防火墙
- 安装docker-ce
- 禁用交换内存(k8s version 1.8+ )
- 设置允许路由转发,不对bridge的数据进行处理
- 安装自动化部署程序:ansible
- 设置/etc/hosts解析
下文均按此示例操作:
ip地址 | 主机名 | 备注 |
---|---|---|
192.168.1.3 | cloud03 | workerNode |
192.168.1.5 | cloud05 | masterNode workerNode |
192.168.1.6 | cloud06 | workerNode |
ssh [email protected]
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 [email protected].$ip:/etc/;done
- ssh 免密码链接
ssh [email protected]
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 [email protected].$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 [email protected].$ip:/root/.ssh/;done
-
关闭、禁用所有节点的防火墙
ssh [email protected]
service ufw stop
#检查一下
service ufw status
# 确认是否是inactive
# 去其他节点重复操作
- 安装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
- 禁用交换内存(k8s version 1.8+ )
swapoff -a
sed -i 's/.*swap.*/#&/' /etc/fstab
- 设置允许路由转发,不对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
- 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
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
- 启动k8s
# 默认是开机自启动的,可以根据需要自行修改
sh start_all.sh
- 关闭k8s
sh shutdown_all.sh
ansible-playbook -t upgrade_k8s 22.upgrade.yml
分布式存储方案(支持动态PV)
dashboard v1.6.0
dashboard v1.7.1安装步骤
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 [email protected].$ip:/etc/keepalived/; done
注意,如果node的80端口被占用的话,会导致启动traefik失败
此处有个坑,要求每个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
- docker 方式安装
git clone https://github.com/xiongraorao/Athena.git
sh jenkins-docker-setup.sh
打开 jenkins 页面: http://localhost:8080
- 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分钟
cd yaml/nginx/
kubectl create -f .
kubectl create -f yaml/poseidon/mysql/
kubectl create -f yaml/poseidon/zookeeper/
kubectl create -f yaml/poseidon/kafka/
kubectl create -f yaml/poseidon/seaweedfs/
k8s1.5之后的版本支持动态分配PV和PVC,使用storage class对象来完成动态PV和PVC的分配,对于有状态的应用是十分友好的,便于扩展。参考链接:glusterfs 作为provisioner 部署zookeeper