【云原生】玩转Kubernetes实战(一):Pod、ConfigMap的使用
创始人
2024-01-31 20:08:43

本文主要是利用Kubernetes 集群搭建出一个 WordPress 网站,用了三个镜像:WordPress、MariaDB、Nginx。

下面是其简单的架构图,用于直观的展示这个系统的内部逻辑关系:
在这里插入图片描述

简单来说,就是要通过本地地址http://127.0.0.1 直接访问到WordPress网站。

WordPress 网站搭建步骤

实验环境

  • 适用于 Linux 的 Windows 子系统 (WSL)
  • docker
  • K8s

第一步:编排MariaDB对象

编写maria-pod.yaml文件,主要会生成一个ConfigMap对象和一个pod对象。

maria-cm主要有四个环境变量,比如数据库名、用户名、密码等。在pod对象中,将maria-cm中的配置信息注入pod,让MariaDB运行时从环境变量中读取这些信息。

apiVersion: v1
kind: ConfigMap
metadata:name: maria-cmdata:DATABASE: 'db'USER: 'wp'PASSWORD: '123'ROOT_PASSWORD: '123'---
apiVersion: v1
kind: Pod
metadata:name: maria-podlabels:app: wordpressrole: databasespec:containers:- image: mariadb:10name: mariaimagePullPolicy: IfNotPresentports:- containerPort: 3306envFrom:- prefix: 'MARIADB_'configMapRef:name: maria-cm

第二步:编排 WordPress 对象

编写wp-pod.yaml文件。和第一步中的一样,还是先用 ConfigMap 定义它的环境变量,在这个 ConfigMap 里要注意的是“HOST”字段,它必须是 MariaDB Pod 的 IP 地址,如果不写正确 WordPress 会无法正常连接数据库。然后在pod对象中使用envFrom注入变量:

apiVersion: v1
kind: ConfigMap
metadata:name: wp-cmdata:HOST: '172.17.0.3'USER: 'wp'PASSWORD: '123'NAME: 'db'---
apiVersion: v1
kind: Pod
metadata:name: wp-podlabels:app: wordpressrole: websitespec:containers:- image: wordpress:5name: wp-podimagePullPolicy: IfNotPresentports:- containerPort: 80envFrom:- prefix: 'WORDPRESS_DB_'configMapRef:name: wp-cm

第三步:运行两个pod以及端口转发

kubectl apply -f maria-pod.yml
kubectl apply -f wp-pod.yml
kubectl get pod -o wide
NAME        READY   STATUS    RESTARTS   AGE   IP           NODE       NOMINATED NODE   READINESS GATES
maria-pod   1/1     Running   0          79m   172.17.0.3   minikube              
wp-pod      1/1     Running   0          78m   172.17.0.4   minikube              

为了让WordPress Pod对象能够在集群外可见,需要进行端口号映射。

因为 Pod 都是运行在 Kubernetes 内部的私有网段里的,外界无法直接访问,想要对外暴露服务,需要使用一个专门的 kubectl port-forward 命令,它专门负责把本机的端口映射到在目标对象的端口号,有点类似 Docker 的参数 -p,经常用于 Kubernetes 的临时调试和测试。

下面的命令就可以将本地的“8080”映射到WordPress的“80”,kubectl 会把这个端口的所有数据都转发给集群内部的 Pod:

kubectl port-forward wp-pod 8080:80 &

第四步:创建反向代理的 Nginx

这是因为 WordPress 网站使用了 URL 重定向,直接使用“8080”会导致跳转故障,所以为了让网站正常工作,我们还应该在 Kubernetes 之外启动 Nginx 反向代理,保证外界看到的仍然是“80”端口号。

为Nginx准备proxy.conf:

server {listen 80;default_type text/html;location / {proxy_http_version 1.1;proxy_set_header Host $host;proxy_pass http://host.docker.internal:8080;}
}

值得注意的是,nginx代理的是主机IP上的8080端口,而Nginx自身是在docker里,所以这里是从容器中访问host中的地址,所以proxy如上面所示(不能是127.0.0.1)

docker启动nginx容器进行反向代理:

docker run -d --rm -p 80:80 -v `pwd`/proxy.conf:/etc/nginx/conf.d/default.conf nginx

呈现结果

这时候,我们就可以在主机浏览器地址栏输入http://127.0.0.1,访问到WordPress页面了。

在这里插入图片描述

相关内容

热门资讯

猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
crush是什么意思 女生说她... 之前,在国外网站BuzzFeed的编辑在推特上向英语文字爱好者征集"颜值最高"的英文单词。这10个单...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
地球属于哪个星系 整个银河系只... 地球是人类在宇宙中的家园。以前人们认为地球是宇宙的中心。现在我们知道,地球并不是宇宙的中心。地球只是...