项目-基于Docker-K8s的Web集群

本文详细介绍了如何使用Ansible批量部署,通过Kubeadm创建K8s集群,安装网络插件,配置NFS服务,实现PV、PVC与NFS的融合,并配置Loadbalancer进行服务暴露,同时利用Prometheus进行监控。整个过程覆盖了从集群初始化到应用部署的关键步骤。
摘要由CSDN通过智能技术生成


网络拓扑图

网络拓扑图


项目描述

项目名称:基于Docker-K8s的Web集群
项目环境:Docker 20.10.5,CentOS 7.6 (7台 2核2G),Nginx 1.19.8,Ansible 2.9.18,NFS,Prometheus 2.0.0,Grafana 4.2.0
项目描述:
        实现一个高可用的负载均衡器的Web服务器集群,使用Kubeadm搭建K8s集群,底层采用K8s管理的Docker集群来提供Web服务,大量使用容器来完成Web服务的扩展性、高可用性。
项目步骤:
        1.规划设计整个集群的架构,前端使用Nginx做负载均衡器,后端使用K8s来实现Web容器负载均衡和高可用;
        2.部署好Ansible服务器,在所有的机器之间配置SSH免密通道;编写好部署Nginx,NFS,K8s的脚本,编写Ansible的Playbook实现批量部署;
        3.后端采用K8s来管理整个Docker集群,基于Kubeadm3个节点的K8s集群,总共启动10个容器来提供Web服务;
        4.使用NFS服务为所有的Docker节点提供相同Web数据,实现数据一致性。所有的Docker Nginx容器使用PV,PVC与 数据卷、NFS融合,实现容器Web文件共享;再创建服务,类型为NodePort,达到暴露端口的目的;
        5.使用Prometheus进行K8s集群的监控,使用Grafana成图工具进行数据展示。
项目心得:
        这次实验是对曾经做过的Docker Swarm项目的推倒与重组;通过这次实验,使我在考虑问题和实践操作时更加细心周全,同时对K8s集群项目有了更加直观的了解。

详细步骤

Ansible批量部署

免密通道

ssh-keygen -t ecdsa
ssh-copy-id -i ~/.ssh/id_ecdsa.pub 192.168.2.72		# master
ssh-copy-id -i ~/.ssh/id_ecdsa.pub 192.168.2.73		# node1
ssh-copy-id -i ~/.ssh/id_ecdsa.pub 192.168.2.94		# node2
ssh-copy-id -i ~/.ssh/id_ecdsa.pub 192.168.2.81		# nfs-server
ssh-copy-id -i ~/.ssh/id_ecdsa.pub 192.168.2.79		# load-balancer
ssh-copy-id -i ~/.ssh/id_ecdsa.pub 192.168.2.75		# prometheus

ansible-playbook

yum install epel-release -y
yum install ansible -y
vim /etc/ansible/hosts

[docker-kubeadm]
192.168.2.72
192.168.2.73
192.168.2.94

[nfs]
192.168.2.81
192.168.2.72
192.168.2.73
192.168.2.94

[loadbalancer]
192.168.2.79
vim ansible_playbook.yaml 

- hosts: docker-kubeadm
  remote_user: root
  tasks:
  - name: deploy kubeadm
    script: ~/install_kubeadm.sh

- hosts: loadbalancer
  remote_user: root
  tasks:
  - name: deploy nginx
    script: ~/onekey_install_nginx.sh

- hosts: nfs
  remote_user: root
  tasks:
  - name: install nfs-utils
    script: ~/install_nfs.sh
ansible-playbook ansible_playbook.yaml

脚本 - 使用Kubeadm部署K8s集群

vim install_kubeadm.sh

#!/bin/bash

# 卸载旧版本
yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

yum install -y yum-utils

yum-config-manager \
            --add-repo \
                http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

yum install -y docker-ce docker-ce-cli containerd.io

systemctl start docker
systemctl enable docker

#配置 Docker 使用 systemd 作为默认 Cgroup 驱动
cat <<EOF > /etc/docker/daemon.json
{
   "exec-opts": ["native.cgroupdriver=systemd"],
   "registry-mirrors" : [
    "https://registry.docker-cn.com",
    "https://docker.mirrors.ustc.edu.cn",
    "http://hub-mirror.c.163.com",
    "https://cr.console.aliyun.com/"]
}
EOF

#重启docker
systemctl restart docker

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值