k8s应用综合实例
更新于:2024年3月10日
k8s应用综合实例
目录
[toc]
原文链接
https://onedayxyy.cn/docs/k8s-wordpress-example
推荐文章
我的开源项目:
https://onedayxyy.cn/docs/MyOpenSourceProject
实验环境
k8s集群环境:
k8s v1.28.7(sealos部署的1master,2work节点)
containerd v1.7.13
cilium v1.14.7 (cni)
节点内核版本:5.4.270-1.el7.elrepo.x86_64
应用环境:
wordpress:6.4.3-apache
mysql:5.7
实验软件
链接:https://pan.baidu.com/s/1I4xASUsrrnsgEHXDH22NgQ?pwd=mlpe
提取码:mlpe
2024.3.9-k8s应用综合实例
本节实战
实战名称 |
---|
配置Pod反向亲和性、PDB、健康检查、QoS、preStop` 生命周期钩子、hpa、secret、持久化(nfs、pvc)、ingress。 |
预期
本节我们将用一个 Wordpress 示例来尽可能将 Kubernetes 的基础知识串联起来,我们需要达到的目的是让 Wordpress 应用具有高可用、滚动更新的过程中不能中断服务、数据要持久化不能丢失、当应用负载太高的时候能够自动进行扩容、当然还有 HTTPS 访问等等,这些是我们的应用部署到线上环境基本上要具备的一些能力,接下来我们就来一步一步完成这些需求。
原理
首先要部署 Wordpress 应用,我们肯定需要知道 Wordpress 是如何运行起来的,Wordpress 是一个基于 PHP 和 MySQL 的流行的开源内容管理系统,拥有丰富的插件和模板系统。到这里我们应该就清楚应该如何去运行 Wordpress 了,一个能够解析 PHP 的程序,和 MySQL 数据库就可以了。
我们要想在 Kubernetes 系统中来运行,肯定需要使用到 Docker 镜像了,对于 Wordpress 应用程序本身官方提供了镜像 https://hub.docker.com/_/wordpress,也给出了说明如何运行,可以通过一系列环境变量去指定 MySQL 数据库的配置,只需要将这些参数配置上直接运行即可。
我们知道 Wordpress 应用本身会频繁的和 MySQL 数据库进行交互,这种情况下如果将二者用容器部署在同一个 Pod 下面是不是要高效很多,因为一个 Pod 下面的所有容器是共享同一个 network namespace 的。
==尝试:将php和mysql服务放在一1个pod里==
下面我们就来部署我们的应用,将我们的应用都部署到 kube-example 这个命名空间下面。
- 所以首先创建一个命名空间:(namespace.yaml)
apiVersion: v1
kind: Namespace
metadata:
name: kube-example
本次使用命令行:
[root@master ~]#kubectl create ns kube-example
namespace/kube-example created
[root@master ~]#kubectl get ns kube-example
NAME STATUS AGE
kube-example Active 31s
[root@master ~]#