安装kubernetes 集群

淺唱寂寞╮ 提交于 2019-11-30 04:19:31

使用 kubeasz 安装 kubernetes 集群

kubeasz github https://github.com/easzlab/kubeasz

配置:4核心 8GB内存(仅master角色2G内存也行)
系统:CentOS-7.6 1810 Minimal
注意:
  1.开始安装前确保系统时间正常
  2.所有命令只需要在部署节点(192.168.2.71)执行
  3.只需要更改 配置变量中的 SERVER_NAM SERVER_IP 变量 与 /etc/ansible/hosts 配置文件 其他参数均以变量方式自动识别

角色信息:
  etcd: 192.168.2.71 192.168.2.72 192.168.2.73
  kube-master: 192.168.2.71 192.168.2.72
  kube-node: 192.168.2.72 192.168.2.73 192.168.2.74
  chrony: 192.168.2.71
  • 配置变量
# 替换变量值为实际IP地址 注意主机名与IP个数对应 以空格分隔
SERVER_NAME=(node01 node02 node03 node04)
SERVER_IP=(192.168.2.71 192.168.2.72 192.168.2.73 192.168.2.74)
  • 设置本地Host解析
# 清理 hosts(只保留2行 新增 k8s 集群主机hosts解析)
sed -i '3,$d' /etc/hosts
echo -e "\n# k8s cluster" >> /etc/hosts
let SER_LEN=${#SERVER_IP[@]}-1
for ((i=0;i<=$SER_LEN;i++)); do
    echo "${SERVER_IP[i]}  ${SERVER_NAME[i]}" >> /etc/hosts
done
  • 配置ssh秘钥登录
# 替换 SSH_RROT_PASSWD 值为 root SSH 密码
SSH_RROT_PASSWD=redhat
curl -sSL -o ssh-key-copy.sh https://dwz.cn/S0NQWllm
chmod +x ssh-key-copy.sh && ./ssh-key-copy.sh "$(echo ${SERVER_IP[@]})" root $SSH_RROT_PASSWD

# 同步hosts文件
for node in ${SERVER_IP[@]}; do
    scp /etc/hosts $node:/etc/hosts
done
  • 设置主机名
for node in ${SERVER_IP[@]}; do
    ssh -T $node <<'EOF'
    HOST_IF=$(ip route|grep default|cut -d ' ' -f5)
    HOST_IP=$(ip a|grep "$HOST_IF$"|awk '{print $2}'|cut -d'/' -f1)
    hostnamectl set-hostname $(grep $HOST_IP /etc/hosts | awk '{print $2}')
EOF
done
  • 优化参数
for node in ${SERVER_IP[@]}; do
    ssh -T $node <<'EOF'
    # 优化ssh连接速度
    sed -i "s/#UseDNS yes/UseDNS no/" /etc/ssh/sshd_config
    sed -i "s/GSSAPIAuthentication .*/GSSAPIAuthentication no/" /etc/ssh/sshd_config
    systemctl restart sshd

    # 配置yum源
    rm -f /etc/yum.repos.d/*.repo
    curl -so /etc/yum.repos.d/epel-7.repo http://mirrors.aliyun.com/repo/epel-7.repo
    curl -so /etc/yum.repos.d/Centos-7.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    sed -i '/aliyuncs.com/d' /etc/yum.repos.d/Centos-7.repo /etc/yum.repos.d/epel-7.repo
EOF
done
  • 关闭部署机防火墙

当前部署节点与k8s集群共用一节点 安装k8s集群会删除防火墙导致 部署容器网络故障 部署失败

systemctl stop firewalld
systemctl disable firewalld
  • 下载安装资源

下载easzup

export release=2.0.3
curl -C- -fLO --retry 3 https://github.com/easzlab/kubeasz/releases/download/${release}/easzup
chmod +x ./easzup

替换镜像加速站点

cp easzup .easzup
sed -i 's#"https://dockerhub.azk8s.cn",#"http://3272dd08.m.daocloud.io"#' easzup
sed -ni 'p;/3272dd08/n' easzup
sed -ni 'p;/3272dd08/n' easzup

下载资源

./easzup -D
  • 开始安装

启动&进入 ansible-docker

# 同步容器时区
sed -i '280a\      --volume /etc/localtime:/etc/localtime \\' easzup

# 启动&进入
./easzup -S
docker exec -it kubeasz /bin/bash

创建ansibel配置文件

# 复制模板
cp /etc/ansible/example/hosts.multi-node /etc/ansible/hosts

# 手动修改修改配置文件 /etc/ansible/host 以下参数根据实际情况修改
vi /etc/ansible/hosts
[etcd]
192.168.2.71 NODE_NAME=etcd1
192.168.2.72 NODE_NAME=etcd2
192.168.2.73 NODE_NAME=etcd3

[kube-master]    # 此处填写 master IP 除k8s网络容器外不运行其他pod
192.168.2.71
192.168.2.72

[kube-node]      # 此处填写 work 节点IP
192.168.2.72
192.168.2.73
192.168.2.74

[chrony]
192.168.2.71

配置私有仓库, docker加速

在安装前配置(因为修改这些配置需要重启docker服务)

# 修改docker 加速地址
sed -i "s#REG_MIRRORS:.*#REG_MIRRORS: '[\"http://3272dd08.m.daocloud.io\"]'#" /etc/ansible/roles/docker/defaults/main.yml

# 修改信任docker 仓库 (修改HARBOR 变量为本地仓库地址)
HARBOR=192.168.2.75
sed -i "s#127.0.0.1/8#$HARBOR#" /etc/ansible/roles/docker/defaults/main.yml

安装

cd /etc/ansible
ansible all -m ping                    # 验证配置文件中的主机通信
ansible-playbook 90.setup.yml          # 安装
ansible-playbook 99.clean.yml          # 清理(安装失败还原环境)
  • 安装后续处理

查看登录令牌

# admin 登录令牌
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')

# 只读 登录令牌
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep read-user | awk '{print $1}')

# 写入配置文件
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}') | grep token: | sed 's#^token:    #    token:#' >> ~/.kube/config

# 安装 lrzsz 后使用 sz ~/.kube/config 到win主机 使用此文件可以直接登录k8s web控制台

# 定时备份 etcd
echo '0 */1 * * * /usr/bin/ansible-playbook /etc/ansible/23.backup.yml >> /tmp/etcd_backup.log' > /etc/crontab
crontab /etc/crontab

# 部署完成 删除部署容器
exit
docker rm -f kubeasz

管理

退出重新登录终端(原因:重读环境变量)

# 查看 dashboard 端口
kubectl -n kube-system get svc | grep kubernetes-dashboard

# 节点状态
kubectl get node
kubectl top node
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!