2024-04-26 渥太华微生活
在 Kubernetes 集群上部署一个简单的 Laravel 网络应用。
一、下载 Laravel 源代码:
cd laravel-kubernetes-demo git clone https://github.com/laravel/laravel.git .
二、通过 Dockerfile 构建应用镜像:
1、在根目录中创建mysql.conf配置文件:
<VirtualHost *:80> DocumentRoot /var/www/html/public <Directory "/var/www/html/public"> AllowOverride all Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
2、在根目录中创建Dockerfile文件:
# install all the application's dependencies FROM composer:2.7.4 as build WORKDIR /var/www/html COPY . . COPY .env.example .env RUN composer install && php artisan migrate --force && php artisan key:generate # prepare the webserver with PHP-mod FROM php:8.2.18-apache EXPOSE 80 COPY --from=build /var/www/html /var/www/html COPY mysql.conf /etc/apache2/sites-available/000-default.conf RUN chown -R www-data:www-data /var/www/html && a2enmod rewrite
3、构建应用镜像:
docker build -t mydockerid/laravel-kubernetes-demo .
4、运行容器测试镜像:
docker run -it \ -p 8080:80 \ -e APP_KEY=base64:cUPmwHx4LXa4Z25HhzFiWCf7TlQmSqnt98pnuiHmzgY= \ mydockerid/laravel-kubernetes-demo
访问 http://localhost:8080 检查应用是否成功。
三、上传 docker 镜像到 docker hub 仓库
docker login docker push mydockerid/laravel-kubernetes-demo
四、创建部署
1) 编写一个部署 YAML 文件 deployment.yaml。
apiVersion: apps/v1 kind: Deployment metadata: name: myapp spec: selector: matchLabels: app: myapp template: metadata: labels: app: myapp spec: containers: - name: myapp image: mydockerid/laravel-kubernetes-demo resources: limits: memory: "128Mi" cpu: "500m" ports: - containerPort: 80
2) 使用以下命令创建部署。
kubectl apply -f deployment.yaml
3) 检查部署和pod是否创建成功。
kubectl get deployment kubectl get pods
五、创建服务
在集群中运行的 Pod 有一个动态的 IP。如果你使用该 IP 并直接把流量路由到那里,在每次重启 Pod 的时候,你可能每次都要更新路由表。事实上,在每次部署或者容器重启的时候,一个新的 IP 会关联到这个 Pod 中。
为了避免需要手动的管理 IP 地址,你需要使用服务。服务在 Pods 集合中充当负载均衡器的角色。所以,尽管一个 Pod 的 IP 地址改变了,但是服务总是指向该 Pod。同时,由于服务总是拥有一个固定的 IP,因此你不需要手动更新任何东西。
1) 编写一个服务 YAML 文件 service.yaml。
apiVersion: v1 kind: Service metadata: name: myservice spec: selector: app: myapp type: NodePort ports: - protocol: TCP port: 80 targetPort: 80 nodePort: 31234
2) 使用以下命令创建服务。
kubectl apply -f service.yaml
3) 检查服务是否创建成功。
kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE myservice ClusterIP 10.108.173.67 <none> 80:31234/TCP 10s
六、访问网页
现在您可以访问:
http://<节点IP地址>:31234
如果是本地服务器,可以访问:
localhost:31234
下面是访问页面。
编者注:新闻取自各大新闻媒体,新闻内容并不代表本网立场!文字和图片来自网络,版权归原作者所有。如有侵权,请速联系小编,立即删除。
全部评论 (0) |
---|