以下是学习k8s 的教程的一个实例

k8s学习:WordPress + MySQL + PVC 构建一个博客网站

前端 WordPress 网站是一个 pod
后端 MySQL 是另一个 pod
WordPress 网站是怎样连接到 mysql的?程序代码如何修改?

deploy 配置信息

  1. 前端 WordPress 网站 metadata

     metadata:name: wordpresslabels:app: wordpress
    
  2. 前端 WordPress 网站 selector:

     matchLabels:app: wordpresstier: frontend
    
  3. 后端 MySQL 的 metadata

     metadata:name: wordpress-mysqllabels:app: wordpress
    
  4. 后端 MySQL 的 selector:

     matchLabels:app: wordpresstier: mysql
    

    从字面看,他们都属于同一个 app: wordpress ,一个在 tier: frontend 层,一个在 tier: mysql ,k8s 如何将他们连在了一起呢?

    按照过去非 Docker 方式部署的思路,假设他们分别部署在 2 个服务器上,
    在前端 php 程序中,往往需要有个 config 文件,来配置数据库信息: host、port、username、password

    下面我们就分别进入 2 个容器,一探究竟

进入 wordpress

  1. 直接 describe pod 也能看到一部分环境信息,但是看不到程序代码中的设置

    [root@centos7-188 ~]# kubectl describe pod wordpress-557cbf5c94-lqbd8

     ...IP:           10.244.2.66IPs:IP:           10.244.2.66...Environment:WORDPRESS_DB_HOST:      wordpress-mysqlWORDPRESS_DB_PASSWORD:  <set to the key 'password' in secret 'mysql-pass-82d992t59h'>  Optional: false
    
  2. [root@centos7-188 ~]# kubectl exec -it wordpress-557cbf5c94-lqbd8 – /bin/sh

    以下在容器中操作

         # pwd/var/www/html# lsindex.php    readme.html      wp-admin          wp-comments-post.php  wp-config.php  wp-cron.php  wp-links-opml.php  wp-login.php  wp-settings.php  wp-trackback.phplicense.txt  wp-activate.php  wp-blog-header.php  wp-config-sample.php    wp-content     wp-includes  wp-load.php        wp-mail.php   wp-signup.php    xmlrpc.php# # cat wp-config.php...// ** MySQL settings - You can get this info from your web host ** ///** The name of the database for WordPress */define('DB_NAME', 'wordpress');/** MySQL database username */define('DB_USER', 'root');/** MySQL database password */define('DB_PASSWORD', 'MTIzNDU2Cg==');/** MySQL hostname */define('DB_HOST', 'wordpress-mysql');...
    

    这里不是我们通常的 define(‘DB_HOST’, ‘IP 地址l’);写法,而是街上了一个变量 wordpress-mysql
    那么这个 wordpress-mysql 到底是什么呢?

     # env |grep wordpressHOSTNAME=wordpress-557cbf5c94-lqbd8WORDPRESS_DB_HOST=wordpress-mysql# echo $WORDPRESS_DB_HOSTwordpress-mysql# echo $WORDPRESS_DB_PASSWORDMTIzNDU2Cg==
    

    这就是在 wordpress-deployment.yaml 中的 containers 配置的 env 环境变量

     env:- name: WORDPRESS_DB_HOSTvalue: wordpress-mysql- name: WORDPRESS_DB_PASSWORDvalueFrom:secretKeyRef:name: mysql-passkey: password
    

    mysql 的 ip 地址是不是 10.244.1.66 ?

     # ping wordpress-mysqlPING wordpress-mysql.default.svc.cluster.local (10.244.1.66): 56 data bytes64 bytes from 10.244.1.66: icmp_seq=0 ttl=62 time=1.074 ms64 bytes from 10.244.1.66: icmp_seq=1 ttl=62 time=1.138 ms
    

    那么,wordpress 自己的 ip 是多少?

     # ip a1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft forever3: eth0@if11: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UP group default link/ether d2:58:c3:23:02:99 brd ff:ff:ff:ff:ff:ffinet 10.244.2.66/24 brd 10.244.2.255 scope global eth0valid_lft forever preferred_lft forever
    

    他是怎么和名称对应上的呢?DNS 服务怎么找到他?

     # cat /etc/hosts# Kubernetes-managed hosts file.127.0.0.1  localhost::1    localhost ip6-localhost ip6-loopbackfe00::0 ip6-localnetfe00::0 ip6-mcastprefixfe00::1  ip6-allnodesfe00::2 ip6-allrouters10.244.2.66   wordpress-557cbf5c94-lqbd8
    

进入 mysql

  1. 系统很精简,ip 地址命令没有,curl 也没有

     [root@centos7-188 ~]# kubectl exec -it wordpress-mysql-74978f46c9-cp29d -- /bin/bashroot@wordpress-mysql-74978f46c9-cp29d:/# root@wordpress-mysql-74978f46c9-cp29d:/# pwd/root@wordpress-mysql-74978f46c9-cp29d:/etc# cat issueDebian GNU/Linux 9 \n \lroot@wordpress-mysql-74978f46c9-cp29d:/# cat /etc/hosts# Kubernetes-managed hosts file.127.0.0.1 localhost::1    localhost ip6-localhost ip6-loopbackfe00::0 ip6-localnetfe00::0 ip6-mcastprefixfe00::1  ip6-allnodesfe00::2 ip6-allrouters10.244.1.66   wordpress-mysql-74978f46c9-cp29d
    

    也是通过/etc/hosts 文件,wordpress-mysql 对应到 10.244.1.66,这样 DNS 服务就可以找到他!

    所以, wordpress 网站中配置的 define(‘DB_HOST’, ‘wordpress-mysql’);也可以找到他!

总结:

deploy 中设置好统一的 labels 和 matchLabels , k8s 的 DNS 服务就会自动对应到服务所在的容器

代码中设置 host 的地方需要改成相应的名字,不能还写成 ip 地址!

实际上,也没法预先知道 mysql 的 ip 地址!

k8s学习 : 前端是如何连接到后端数据库的?相关推荐

  1. python怎么和前端连接_如何将前端HTML/JQuery连接到后端Python

    我有一个用HTML编写的web页面,操作是使用JQuery完成的.下面的html代码没有使用任何JQuery,但是我想我应该提到这一点,因为我可能需要在其中添加一些AJAX.在 这是"前端& ...

  2. 如何学习前端知识?优秀的前端开发工程师应该具备什么条件?

    Web前端开发技术主要包括三个要素:html.css和JavaScript! 如何学习前端知识? 我们生活在一个充满规则的宇宙里面.社会秩序按照规则运行,计算机语言几乎全部是规则的集合.计算机前辈们定 ...

  3. 一名优秀的Web前端开发工程师的成长之路:如何学习前端开发知识以及书籍推荐

    我所遇到的前端程序员分两种: 第一种一直在问:如何学习前端? 第二种总说:前端很简单,就那么一点东西. 我从没有听到有人问:如何做一名优秀.甚至卓越的WEB前端工程师. 何为:前端工程师? 前端工程师 ...

  4. vue学习笔记-01-前端的发展历史(从后端到前端,再到前后端分离,再到全栈)

    vue学习笔记-01-前端的发展历史(从后端到前端,再到前后端分离,再到全栈)   这篇文章是博主在看vue-前端发展简史的时候做的笔记,以供后续学习复习 文章目录 vue学习笔记-01-前端的发展历 ...

  5. 开始编程职业生涯我应该先学习前端还是后端开发?

    我如何开始我的编程生涯,我应该先学习前端还是后端开发?是否可以尝试从前端切换到后端? 我们在尝试做出决定时经常会遇到类似的反应:"当然,从前端开始,它很容易学习.后端比较复杂.首先--你需要 ...

  6. 计算机专业,应该学习前端还是后端?具体有什么不一样?

    首先说说前端与后端的区别吧 前端主要数页面展示,就比如你现在打开浏览器进入一个网站,网站上面的图片布局都是依靠前端来完成的,如果你说你特别喜欢这种,但是还是不够,自己的审美也非常重要,每一个页面的UI ...

  7. 2021了,前端,移动开发,后端,我该选哪个?

    2000年左右编程的时候可不是这样,从来没有前后端分离这回事.如果你自己不能扛起一个项目,不仅是会被淘汰,而且会被嘲笑.我最开始用 Perl 写 CGI 程序,后来陆续学了 JavaScritp.Ja ...

  8. 如何学习前端技术,你需要的

    是不是梦想了好久,成为叱诧风云,挥手成页面的前端大神?那你来对地方了,这篇文章整理了成为前端大神的必备技能.先从初级前端工程师所需的技能开始,然后一路升级到高级工程师该掌握的技能,层层相扣,让大家在工 ...

  9. 解答关于学习前端的一些问题

    关于 微信公众号:前端呼啦圈(Love-FED) 我的博客:劳卜的博客 知乎专栏:前端呼啦圈 github:链接 前言 最近在公众号和文章中经常会收到一些读者的留言和评论,本文是我挑选的一些在关于学习 ...

  10. ASP.NET Core on K8s学习之旅(13)Ocelot API网关接入

    [云原生]| 作者/Edison Zhou 这是恰童鞋骚年的第232篇原创文章 上一篇介绍了Ingress的基本概念和Nginx Ingress的基本配置和使用,考虑到很多团队都在使用Ocelot作为 ...

最新文章

  1. 金三银四,写个漂亮的技术简历
  2. 十进制与二进制间的相互转换
  3. wpf 如何设置弹出窗口必须关闭才能打开其他软件_5招教你如何清除C盘除系统外的所有垃圾!都学会了吗?...
  4. 如何从JavaScript数组中获取多个随机唯一元素?
  5. 团队作业3——需求改进系统设计
  6. Windows Phone 7(accelerometer)重力感应编程
  7. Python框架篇之Django(Template基础:模板语法、过滤器filter)
  8. 08-05-09pe_xscan 增加IE版本检测
  9. android 计步器acc,基于加速度的门限检测计步算法设计
  10. 数据分析常见的几种方法
  11. android 正三角,倒三角的实现代码
  12. HDU-4622 Reincarnation (后缀自动机)
  13. matlab出现问题:TRANSPOSE 不支持 N 维数组。请使用 PAGETRANSPOSE/PAGECTRANSPOSE 转置页,或使用 PERMUTE 重新排列 N 维数组的维度。
  14. 读书笔记——OpenGL超级宝典
  15. 使用curl批量下载图片
  16. linux小米随身wifi密码,Ubuntu用小米随身WiFi
  17. CSS设置 background-image透明度小技巧
  18. 神经网络方法研究及应用,神经网络算法实例说明
  19. SQLServer中uniqueidentifier数据类型理解
  20. 2022电工(初级)考试试题及答案

热门文章

  1. 简明Python docstrings
  2. 最短路 Codeforces Round #103 (Div. 2) D. Missile Silos
  3. Android 文件系统路径
  4. js圆角矩形旋转(div拼凑)
  5. BZOJ 10628 Luogu 2633
  6. SQL Fundamentals || DCL(Data Control Language) || 用户管理Profile概要文件
  7. 理解OpenCL数据类型
  8. Linux系统Load average负载详细解释
  9. KVM/QEMU桥接网络设置[zz]
  10. 数据结构之二叉树--转载