Kubernetes

全自动容器部署工具 - 持续部署
谷歌的开源工具,在谷歌内部已经运行几年,管理上千万容器

缺点:过于复杂

Kubernetes集群搭建

kubernetes的安装过程极其复杂,对Linux运维不熟悉的情况下安装kubernetes极为困难,再加上国内无法访问google服务器,我们安装k8s就更加困难
集群搭建的简化项目:

K8s 集群方案

方案1. 单机 - 16G以上(主机内存)

一个主控,两个工作节点

方案2. 单机 - 8G以上

一个主控+工作基点,一个工作节点

方案3. 多台主机 - 4G

一台主机启动一个虚拟机,用桥接网络

配置集群环境

1.准备台cento7虚拟机 取名k1
2.设置 cpu 和 内存:
cpu - 2
内存 - 2G
3.上传文件
链接:https://pan.baidu.com/s/1bEQhSYygUYnJRFfAQcoq8g
提取码:470f
将链接中文件下载解压

  • easzup、images.gz 两个文件上传到 /root/
  • ansible 文件夹上传到 /etc/
    在这里插入图片描述
    4.执行以下命令:
cd ~/

# 下载 kubeasz 的自动化安装脚本文件: easzup,如果已经上传过此文件,则不必执行这一步
export release=2.2.0
curl -C- -fLO --retry 3 https://github.com/easzlab/kubeasz/releases/download/${release}/easzup

# 对easzup文件设置执行权限
chmod +x ./easzup

# 下载离线安装文件,并安装配置docker,
# 如果离线文件已经存在则不会重复下载,
# 离线安装文件存放路径: /etc/ansible
./easzup -D

# 启动kubeasz工具使用的临时容器
./easzup -S

# 进入该容器
docker exec -it kubeasz sh

# 下面命令在容器内执行
# 配置离线安装
cd /etc/ansible
sed -i 's/^INSTALL_SOURCE.*$/INSTALL_SOURCE: "offline"/g' roles/chrony/defaults/main.yml
sed -i 's/^INSTALL_SOURCE.*$/INSTALL_SOURCE: "offline"/g' roles/ex-lb/defaults/main.yml
sed -i 's/^INSTALL_SOURCE.*$/INSTALL_SOURCE: "offline"/g' roles/kube-node/defaults/main.yml
sed -i 's/^INSTALL_SOURCE.*$/INSTALL_SOURCE: "offline"/g' roles/prepare/defaults/main.yml
exit

5.导入镜像

docker load -i images.gz

6.当前服务器拍摄快照
7.克隆当前服务器,命名为k2
8.设置k2ip,我的
k1ip为:
192.168.64.191
k2ip为:
192.168.64.192

9.以k1为master主机,另一台作为工作节点

在master上继续配置安装环境

# 安装pip,已安装则忽略这一步
wget -O /etc/yum.repos.d/epel-7.repo https://mirrors.aliyun.com/repo/epel-7.repo
yum install git python-pip -y

# pip安装ansible(国内如果安装太慢可以直接用pip阿里云加速),已安装则忽略这一步
pip install pip --upgrade -i https://mirrors.aliyun.com/pypi/simple/
pip install ansible==2.6.12 netaddr==0.7.19 -i https://mirrors.aliyun.com/pypi/simple/

# 在ansible控制端配置免密码登陆其他节点服务器
ssh-keygen -t ed25519 -N '' -f ~/.ssh/id_ed25519

# 公钥复制到所有节点,包括master自己
# 按提示输入yes和root管理员的密码
ssh-copy-id 192.168.64.191

ssh-copy-id 192.168.64.192

ssh-copy-id 192.168.64.193

配置集群服务器的ip

cd /etc/ansible && cp example/hosts.multi-node hosts && vim hosts

如果内存有限, 可以只部署两台服务器进行测试
主服务器既作为控制节点, 又作为工作节点
减少etcd服务数量
在这里插入图片描述

# 检查集群主机状态
ansible all -m ping

在这里插入图片描述

一键安装k8s集群

安装步骤非常多,时间较长,耐心等待安装完成
等检查集群主机状态成功后,执行以下命令:

cd /etc/ansible
ansible-playbook 90.setup.yml

安装成功结果:
在这里插入图片描述

设置kubectl命令别名

# 设置 kubectl 命令别名 k
echo "alias k='kubectl'" >> ~/.bashrc

# 使设置生效
source ~/.bashrc

配置自动补全

yum install -y bash-completion

source <(kubectl completion bash)

echo "source <(kubectl completion bash)" >> ~/.bashrc

source ~/.bashrc

验证安装

k get cs
---------------------------------------------------------
NAME                 STATUS    MESSAGE             ERROR
etcd-1               Healthy   {"health":"true"}   
scheduler            Healthy   ok                  
controller-manager   Healthy   ok                  
etcd-2               Healthy   {"health":"true"}   
etcd-0               Healthy   {"health":"true"}   

k get node
---------------------------------------------------------------------
NAME             STATUS                     ROLES    AGE     VERSION
192.168.64.191   Ready,SchedulingDisabled   master   5d23h   v1.15.2
192.168.64.192   Ready                      node     5d23h   v1.15.2
192.168.64.193   Ready                      node     5d23h   v1.15.2

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐