初探Kubernetes+Docker 分布式应用部署(上)

30 篇文章 0 订阅
27 篇文章 0 订阅


疫情原因,本着不给国家添乱,不出门,在家跟着教程搭建K8s集群环境,在本地的虚拟机上实现,以下是搭建过程,记录下来,方便备查。

知识了解
Kubernetes 简称 K8s 是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能.

第一步、安装Docker

本虚拟机是 CentOS,所以这里选择运用 yum 命令安装软件。安装Docker 执行以下命令。

// 安装 docker
>> yum install docker
// 启动docke
>> systemctl start docker.service
// 查看docker 启动状态
>> systemctl ststus docker
// 开机启动 
>> systemctl enable docker.service
// 查看docker版本
>> docker version

查看Docker 启动状态
在这里插入图片描述

active 表示 docker 启动中

查看 Docker 版本
在这里插入图片描述

第二步、安装etcd

etcd 是高可用的键值key/value存储系统,用于分享配置和服务发现。k8s运行依赖etcd,需要先部署安装etcd。

// 安装
>> yum install etcd -y
// 启动
>> systemctl start etcd
// 关闭
>> systemctl enable etcd
// 查看健康状态
>> etcdctl -C http://localhost:2379 cluster-health

查看 etcd 状态
在这里插入图片描述

第三步、安装K8s

运用yum命令,安装 Kubernetes

// 安装 Kubernetes
>> yum install kubernetes -y

可能出现的安装问题:docker-ce conflicts with 2:
处理方案:之前安装过docker的插件,这里删除docker-ce,再次安装K8s即可。

// 删除 docker-ce
>> yum -y remove docker-ce

1、修改配置

安装成功后,在 etc 下有 kubernetes 安装文件夹。
修改配置文件:找到apiservice文件,vim命令打开,删除KUBE_ADMISSION_CONTROL 配置参数中的 ServiceAccount,即去掉改准入控制器,点击esc切换模式,:wq 保存退出即可。

KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota"

2、启动程序

(1) 启动Master主程序

// 启动 kube-apiserver
>> systemctl start kube-apiserver
// 开机启动 kube-apiserver
>> systemctl enable kube-apiserver
// 启动 kube-controller-manager
>> systemctl start kube-controller-manager
// 开机启动 kube-controller-manager
>> systemctl enable kube-controller-manager
// 启动 kube-scheduler
>> systemctl start kube-scheduler
// 开机启动 kube-scheduler
>> systemctl enable kube-scheduler

主程序组件介绍
1) kube-apiserver 提供了k8s各类资源对象(pod,RC,Service等)的增删改查及watch等HTTP Rest接口,是整个系统的数据总线和数据中心。
2) Controller Manager 集群内部的管理控制中心,负责集群内的Node、Pod副本、服务端点(Endpoint)、命名空间(Namespace)、服务账号(ServiceAccount)、资源定额(ResourceQuota)的管理,当某个Node意外宕机时,Controller Manager会及时发现并执行自动化修复流程,确保集群始终处于预期的工作状态。
3) kube-scheduler 是 Kubernetes 集群的默认调度器。对每一个新创建的 Pod 或者是未被调度的 Pod,kube-scheduler 会过滤所有的node,然后选择一个最优的 Node 去运行这个 Pod

(2) 启动Node 节点

// 启动 kubelet
>> systemctl start kubelet
// 开机启动 kubelet
>> systemctl enable kubelet
// 启动 kube-proxy
>> systemctl start kube-proxy
// 开机启动 kube-proxy
>> systemctl enable kube-proxy

节点上组件
1) kubelet 是运行在每个节点上的主要的“节点代理”,每个节点都会启动 kubelet进程,用来处理 Master 节点下发到本节点的任务,按照 PodSpec 描述来管理Pod 和其中的容器
2) kube-proxy 负责为Pod创建代理服务,从apiserver获取所有server信息,并根据server信息创建代理服务,实现server到Pod的请求路由和转发,从而实现K8s层级的虚拟转发网络。
顺利执行完以上的命令,K8s集群环境就搭建完成,执行以下命令查看状态。

3、查看集群状态

// 查看集群状态信息
>> kubectl get no

查看集群状态status,这里是就绪 ready,集群环境初步搭建成功。接下来还需要对集群网络进行统一管理,安装flannel。
在这里插入图片描述

第四步、安装flannel

flannel 是 CoreOS 团队针对 Kubernetes 设计的一个覆盖网络(Overlay Network)工具,其目的在于帮助每一个使用 Kuberentes 的 CoreOS 主机拥有一个完整的子网。让集群中的不同节点主机创建的Docker容器都具有全集群唯一的虚拟IP地址。

// 安装 flannel 
> yum install flannel -y

1、修改配置文件

安装成功后,在 etc/sysconfig 下有 flanneld 。
修改配置文件:找到 flanneld 文件,vim命令打开,添加以下代码

--logtostderr=false 
--log_dir=/var/log/k8s/flannel/ 
--etcd-prefix=/atomic.io/network  
--etcd-endpoints=http://localhost:2379 
--iface=ens33

注:–iface 对应的是网卡名,可通过 ifconfig 命令来查看。

2、修改key

// 修改命令
etcdctl mk /atomic.io/network/config '{ "Network": "10.0.0.0/16" }'  

/atomic.io/network/config 这个 key 与 上文 /etc/sysconfig/flannel 中的配置项 FLANNEL_ETCD_PREFIX 是相对应的,错误的话启动就会出错)
Network 是配置网段,不能和物理机 IP 冲突,可以随便定义,尽量避开物理机 IP 段。

3、依次重启服务

启动修改后的 flannel ,并依次重启 docker、k8s。

// 启动 flanneld
systemctl start flanneld
// 重启 docker 
service docker restart
// 重启 kube-apiserver
systemctl restart kube-apiserver
// 重启 kube-controller-manager
systemctl restart kube-controller-manager
// 重启 kube-scheduler
systemctl restart kube-scheduler
// 重启 kube-kubelet
systemctl restart kubelet
// 重启 kube-proxy 
systemctl restart kube-proxy 

第五步、部署程序

1)java 运行程序

部署简单的springboot应用,maven打包jar包,并将其复制到虚拟机。

// 复制命令
scp springbootdemo-0.0.1-SNAPSHOT.jar root@192.168.30.131:/etc/docker/dockerfile

2、编写dockerFile

// 下载java8的镜像
FROM java:8
// 将本地文件挂到到/tmp目录
VOLUME /tmp
// 复制文件到容器
ADD springbootdemo-0.0.1-SNAPSHOT.jar /springbootdemo.jar
// 暴露8080端口
EXPOSE 8080
// 配置启动容器后执行的命令
ENTRYPOINT ["java","-jar","/springbootdemo.jar"]

通过 docker build 命令创建镜像

docker build -t springbootdemo .

. 表示默认使用 “上下文目录(Context)下的名为Dockerfile 的文件作为 Dockerfile”

分五步执行,在本地执行改命令时,受网络影响,重试两次才执行成功。
在这里插入图片描述
查看创建的镜像,便可以看到上传成功的 springbootdemo。

// 查看镜像命令
docker images

在这里插入图片描述
执行完以上操作,初步搭建起分布式应用,下篇博客继续 探索部署SpringBoot 的应用。

博客参考

【1】https://blog.csdn.net/ysk_xh_521/article/details/81668631
【2】https://www.cnblogs.com/zuoyang/p/9639961.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是在阿里云上通过 Kubernetes + Docker 实现 Hyperf 容器化部署的文档,供您参考: 1. 准备工作 - 安装 Docker:您需要在本地或服务器上安装 Docker。 - 安装 kubectl:您需要在本地或服务器上安装 kubectl,用于管理 Kubernetes 集群。 2. 创建 Docker 镜像 首先,您需要创建一个 Docker 镜像,该镜像包含了 Hyperf 应用程序以及其依赖项。您可以使用 Dockerfile 来定义镜像的构建过程。示例 Dockerfile 如下: ``` FROM php:7.4-fpm # 安装依赖 RUN apt-get update && \ apt-get install -y git zip unzip && \ docker-php-ext-install pdo_mysql && \ pecl install redis && \ docker-php-ext-enable redis # 安装 Composer COPY --from=composer:latest /usr/bin/composer /usr/bin/composer # 复制 Hyperf 应用程序 COPY . /var/www # 安装依赖项 WORKDIR /var/www RUN composer install # 暴露端口 EXPOSE 9501 # 启动命令 CMD ["php", "bin/hyperf.php", "start"] ``` 其中,我们使用了 `php:7.4-fpm` 作为基础镜像,安装了 Hyperf 应用程序所需的依赖项,并将应用程序复制到了 `/var/www` 目录中。我们还使用了 Composer 安装了应用程序的依赖项,并暴露了端口 `9501`。在启动容器时,我们使用了 `php bin/hyperf.php start` 命令来启动 Hyperf 应用程序。您可以根据实际情况修改 Dockerfile。 然后,使用以下命令构建 Docker 镜像: ``` docker build -t your-image-name . ``` 其中,`your-image-name` 是您的镜像名称。 3. 创建 Kubernetes 集群 您需要在阿里云上创建一个 Kubernetes 集群,用于部署 Hyperf 应用程序。具体操作步骤请参考阿里云 Kubernetes 文档。 4. 部署应用程序 接下来,您需要在 Kubernetes 集群中部署 Hyperf 应用程序。您可以使用以下命令进行部署: ``` kubectl create deployment your-deployment-name --image=your-image-name kubectl expose deployment your-deployment-name --type=LoadBalancer --port=80 --target-port=9501 ``` 其中,`your-deployment-name` 是您的部署名称,`your-image-name` 是您的 Docker 镜像名称。 该命令将创建一个名为 `your-deployment-name` 的部署,并使用了名为 `your-image-name` 的 Docker 镜像。该命令还将暴露端口 `80`,并将其映射到端口 `9501`。 5. 访问应用程序 最后,您可以使用以下命令查看服务的 IP 地址和端口号: ``` kubectl get services ``` 然后,您可以使用浏览器或其他工具访问 Hyperf 应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值