K8s之实践Pod深入理解

1、同一pod下的nginx+php+mysql

nginx+php+mysql.yaml文件
---
apiVersion: v1
kind: Secret
metadata:
name: mysql-pass
namespace: default
type: Qpaque
data:
#echo -n "Passwd123" |base64
password: UGFzc3dkMTIz
#echo -n "tmp" |base64
database: dG1w
#echo -n "123" |base64
passwd: MTIz ---
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-php-mysql
spec:
selector:
matchLabels:
app: nginx-php-mysql
replicas: 1
template:
metadata:
labels:
app: nginx-php-mysql
spec:
containers:
- name: php
image: registry.cn-shenzhen.aliyuncs.com/user-sum/php
imagePullPolicy: IfNotPresent
ports:
- containerPort: 9000
volumeMounts:
- name: nginx-data
mountPath: /var/www/html/ - name: nginx
image: registry.cn-shenzhen.aliyuncs.com/user-sum/alpine:nginx1.18.0
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
volumeMounts:
- name: nginx-data
mountPath: /usr/share/nginx/html
- name: nginx-conf
mountPath: /etc/nginx/conf.d/ - image: mysql:5.7
imagePullPolicy: IfNotPresent
name: mysql
env:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
#kubectl create secret generic mysql-pass --from-literal=password=Passwd123
name: mysql-pass
key: password
- name: MYSQL_DATABASE
valueFrom:
secretKeyRef:
#kubectl create secret generic mysql-pass --from-literal=database=tmp
name: mysql-pass
key: database
- name: MYSQL_USER
value: sun
- name: MYSQL_PASSWORD
valueFrom:
secretKeyRef:
#kubectl create secret generic mysql-pass --from-literal=passwd=123
name: mysql-pass
key: passwd
ports:
- containerPort: 3306
name: mysql
volumeMounts:
- name: mysql-persistent-storage
mountPath: /var/lib/mysql volumes:
- name: nginx-data
nfs:
server: 192.168.10.10 #nfs server服务器IP
path: "/www"
#kubectl create cm ngin-conf --from-file=/conf/default.conf
- name: nginx-conf
configMap:
name: ngin-conf
items:
- key: default.conf
path: add.conf
- name: mysql-persistent-storage
emptyDir: {} ---
apiVersion: v1
kind: Service
metadata:
name: nginx-php-mysql
spec:
type: NodePort
ports:
- name: nginx
port: 80
protocol: TCP
targetPort: 80
nodePort: 30010
selector:
app: nginx-php-mysql
 
master安装nfs(注意work节点也要安装nfs并启动)
# yum -y install nfs-utils
# systemctl start nfs
# echo "/www 192.168.10.0/24(rw,sync,no_root_squash)" >> /etc/exports
# systemctl restart nfs
# echo "test" > /www/index.html
# cat /www/index.php
<?php
phpinfo();
?>
 
配置文件default.conf
# cat /conf/default.conf

server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html/$fastcgi_script_name;
include fastcgi_params;
}
}
# kubectl create cm ngin-conf --from-file=/conf/default.conf
注意:采用configMap的挂载方式,如果修改了文件,需要删除configMap并重新创建
创建:kubectl create cm ngin-conf --from-file=/conf/default.conf
查看:kubectl describe cm
删除:kubectl delete configmaps ngin-conf
cm=configmaps(简称)
 
# kubectl apply -f nginx+php+mysql.yaml
 
测试:
[root@master-test www]# curl 192.168.10.10:30010
test
[root@master-test www]# curl 192.168.10.10:30010/index.php -I
HTTP/1.1 200 OK
Server: nginx/1.18.0
Date: Wed, 04 Nov 2020 02:50:30 GMT
Content-Type: text/html
Connection: keep-alive
X-Powered-By: PHP/5.4.16
 
修改vim /www/index.php
<h1>Test php-mysql </h1>
<?php
mysqli_connect('127.0.0.1','sun','123') or die('failed');
echo 'success';
?>
再次访问,success成功啦
[root@master-test www]# curl 192.168.10.10:30010/index.php -i
HTTP/1.1 200 OK
Server: nginx/1.18.0
Date: Wed, 04 Nov 2020 02:54:15 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
X-Powered-By: PHP/5.4.16 <h1>Test php-mysql </h1>
success[root@master-test www]#
 
 

2、nginx+php同一个Pod、mysql另一个Pod

 
nginx+php.yaml文件
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-php
spec:
selector:
matchLabels:
app: nginx-php
replicas: 1
template:
metadata:
labels:
app: nginx-php
spec:
containers:
- name: php
image: registry.cn-shenzhen.aliyuncs.com/user-sum/php
imagePullPolicy: IfNotPresent
ports:
- containerPort: 9000
volumeMounts:
- name: nginx-data
mountPath: /var/www/html/ - name: nginx
image: registry.cn-shenzhen.aliyuncs.com/user-sum/alpine:nginx1.18.0
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
volumeMounts:
- name: nginx-data
mountPath: /usr/share/nginx/html
- name: nginx-conf
mountPath: /etc/nginx/conf.d/ volumes:
- name: nginx-data
nfs:
server: 192.168.10.10 #nfs server服务器IP
path: "/www"
- name: nginx-conf
configMap:
name: ngin-conf
items:
- key: default.conf
path: add.conf ---
apiVersion: v1
kind: Service
metadata:
name: nginx-php
spec:
type: NodePort
ports:
- name: nginx
port: 80
protocol: TCP
targetPort: 80
nodePort: 30010
selector:
app: nginx-php
 
配置文件default.conf(和1一样,不用修改)
# cat /conf/default.conf

server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html/$fastcgi_script_name;
include fastcgi_params;
}
}
master安装nfs(注意work节点也要安装nfs并启动)
# yum -y install nfs-utils
# systemctl start nfs
# echo "/www 192.168.10.0/24(rw,sync,no_root_squash)" >> /etc/exports
# systemctl restart nfs
# echo "test" > /www/index.html
# cat /www/index.php
<?php
phpinfo();
?>
 
# kubectl apply -f nginx+php.yaml
 
mysql.yaml
---
apiVersion: v1
kind: Secret
metadata:
name: mysql-pass
namespace: default
type: Qpaque
data:
#echo -n "Passwd123" |base64
password: UGFzc3dkMTIz
#echo -n "tmp" |base64
database: dG1w
#echo -n "123" |base64
passwd: MTIz ---
apiVersion: apps/v1
kind: Deployment
metadata:
name: mysql
spec:
selector:
matchLabels:
app: mysql
replicas: 1
template:
metadata:
labels:
app: mysql
spec:
containers:
- image: mysql:5.7
imagePullPolicy: IfNotPresent
name: mysql
env:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
#kubectl create secret generic mysql-pass --from-literal=password=Passwd123
name: mysql-pass
key: password
- name: MYSQL_DATABASE
valueFrom:
secretKeyRef:
#kubectl create secret generic mysql-pass --from-literal=database=tmp
name: mysql-pass
key: database
- name: MYSQL_USER
value: sun
- name: MYSQL_PASSWORD
valueFrom:
secretKeyRef:
#kubectl create secret generic mysql-pass --from-literal=passwd=123
name: mysql-pass
key: passwd
ports:
- containerPort: 3306
name: mysql
volumeMounts:
- name: mysql-persistent-storage
mountPath: /var/lib/mysql
volumes:
- name: mysql-persistent-storage
emptyDir: {}
---
apiVersion: v1
kind: Service
metadata:
name: mysql
labels:
app: mysql
spec:
ports:
- name: mysql
port: 3306
targetPort: 3306
selector:
app: mysql
# kubectl apply -f mysql.yaml
 
 
测试:
修改vim /www/index.php
<h1>Test php-mysql </h1>
<?php
mysqli_connect('10.106.159.184','sun','123') or die('failed');
echo 'success';
?>
再次访问,success成功啦
[root@master-test ~]# curl 192.168.10.10:30010/index.php -i
HTTP/1.1 200 OK
Server: nginx/1.18.0
Date: Wed, 04 Nov 2020 03:40:58 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
X-Powered-By: PHP/5.4.16 <h1>Test php-mysql </h1>
success[root@master-test ~]#
 

3、php一个Pod、nginx一个Pod、mysql一个Pod

 
php.yaml
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: php
spec:
selector:
matchLabels:
app: php
replicas: 1
template:
metadata:
labels:
app: php
spec:
containers:
- name: php
image: registry.cn-shenzhen.aliyuncs.com/user-sum/php
imagePullPolicy: IfNotPresent
ports:
- containerPort: 9000
volumeMounts:
- name: nginx-data
mountPath: /var/www/html/ volumes:
- name: nginx-data
nfs:
server: 192.168.10.10 #nfs server服务器IP
path: "/www" ---
apiVersion: v1
kind: Service
metadata:
name: php
spec:
ports:
- name: php
port: 9000
protocol: TCP
targetPort: 9000
selector:
app: php
# kubectl aapply -f php.yml nginx.yaml
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
spec:
selector:
matchLabels:
app: nginx
replicas: 1
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: registry.cn-shenzhen.aliyuncs.com/user-sum/alpine:nginx1.18.0
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
volumeMounts:
- name: nginx-data
mountPath: /usr/share/nginx/html
- name: nginx-conf
mountPath: /etc/nginx/conf.d/
volumes:
- name: nginx-data
nfs:
server: 192.168.10.10 #nfs server服务器IP
path: "/www"
- name: nginx-conf
configMap:
name: ngin-conf
items:
- key: default.conf
path: add.conf
---
apiVersion: v1
kind: Service
metadata:
name: nginx
spec:
type: NodePort
ports:
- name: nginx
port: 80
protocol: TCP
targetPort: 80
nodePort: 30010
selector:
app: nginx
 
配置文件nginx.conf
 
# cat /conf/default.conf
 
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.php index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
fastcgi_pass 10.108.129.142:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html/$fastcgi_script_name;
include fastcgi_params;
}
}
删除:kubectl delete configmaps ngin-conf
重新创建:kubectl create cm ngin-conf --from-file=/conf/default.conf
 
# kubectl apply -f nginx.yaml
 
mysql.yaml
 ---
apiVersion: v1
kind: Secret
metadata:
name: mysql-pass
namespace: default
type: Qpaque
data:
#echo -n "Passwd123" |base64
password: UGFzc3dkMTIz
#echo -n "tmp" |base64
database: dG1w
#echo -n "123" |base64
passwd: MTIz ---
apiVersion: apps/v1
kind: Deployment
metadata:
name: mysql
spec:
selector:
matchLabels:
app: mysql
replicas: 1
template:
metadata:
labels:
app: mysql
spec:
containers:
- image: mysql:5.7
imagePullPolicy: IfNotPresent
name: mysql
env:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
#kubectl create secret generic mysql-pass --from-literal=password=Passwd123
name: mysql-pass
key: password
- name: MYSQL_DATABASE
valueFrom:
secretKeyRef:
#kubectl create secret generic mysql-pass --from-literal=database=tmp
name: mysql-pass
key: database
- name: MYSQL_USER
value: sun
- name: MYSQL_PASSWORD
valueFrom:
secretKeyRef:
#kubectl create secret generic mysql-pass --from-literal=passwd=123
name: mysql-pass
key: passwd
ports:
- containerPort: 3306
name: mysql
volumeMounts:
- name: mysql-persistent-storage
mountPath: /var/lib/mysql
volumes:
- name: mysql-persistent-storage
emptyDir: {}
---
apiVersion: v1
kind: Service
metadata:
name: mysql
labels:
app: mysql
spec:
ports:
- name: mysql
port: 3306
targetPort: 3306
selector:
app: mysql
# kubectl apply -f mysql.yaml
 
 
测试:
修改vim /www/index.php
<h1>Test php-mysql </h1>
<?php
mysqli_connect('10.109.228.202','sun','123') or die('failed');
echo 'success';
# phpinfo();
?>
再次访问,success成功啦
[root@master-test ~]# curl 192.168.10.10:30010/index.php -i
HTTP/1.1 200 OK
Server: nginx/1.18.0
Date: Wed, 04 Nov 2020 05:24:57 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
X-Powered-By: PHP/5.4.16 <h1>Test php-mysql </h1>
success[root@master-test ~]#
 
 

K8s之实践Pod深入理解的更多相关文章

  1. k8s 中的 Pod 细节了解

    k8s中Pod的理解 基本概念 k8s 为什么使用 Pod 作为最小的管理单元 如何使用 Pod 1.自主式 Pod 2.控制器管理的 Pod 静态 Pod Pod的生命周期 Pod 如何直接暴露服务 ...

  2. k8s学习 - 概念 - Pod

    k8s学习 - 概念 - Pod 这篇继续看概念,主要是 Pod 这个概念,这个概念非常重要,是 k8s 集群的最小单位. 怎么才算是理解好 pod 了呢,基本上把 pod 的所有 describe ...

  3. OpenStack实践系列⑦深入理解neutron和虚拟机

    OpenStack实践系列⑦深入理解neutron和虚拟机 五.深入理解Neutron 5.1 虚拟机网卡和网桥 [root@node1 ~]# ifconfig brq65c11cc3-8e: fl ...

  4. 如何为k8s中的pod配置QoS等级?

    1.概述 本文介绍如何为pod分配特定的QoS等级. 我们知道,在k8s的环境中,通过使用QoS等级来做决定,在资源紧张的时候,将哪些的pod进行驱逐,或者说如何对pod进行调度. OK,话不多说,让 ...

  5. 案例分享 生产环境逐步迁移至k8s集群 - pod注册到consul

    #案例分享 生产环境逐步迁移至k8s集群 - pod注册到consul #项目背景 多套业务系统, 所有节点注册到consul集群,方便统一管理 使用consul的dns功能, 所有节点hostnam ...

  6. K8S调度之pod亲和性

    目录 Pod Affinity Pod亲和性调度 pod互斥性调度 Pod Affinity 通过<K8S调度之节点亲和性>,我们知道怎么在调度的时候让pod灵活的选择node,但有些时候 ...

  7. 从零开始入门 K8s| 详解 Pod 及容器设计模式

    作者|张磊 阿里云容器平台高级技术专家,CNCF 官方大使 一.为什么需要 Pod 容器的基本概念 我们知道 Pod 是 Kubernetes 项目里面一个非常重要的概念,也是非常重要的一个原子调度单 ...

  8. 实践中总结——理解haslayout和BFC

    1.HASLAYOUT 首先,haslayout翻译成中文就是:有布局. 所谓布局,指的是一个元素可以对本身和里边的元素进行尺寸计算和定位.这里只是谈IE6/7,据说微软之所以不是对所有元素默认有布局 ...

  9. k8s如何管理Pod(rc、rs、deployment)

    是豆荚,可以把容器想像成豆荚里的豆子,把一个或多个关系紧密的豆子包在一起就是豆荚(一个Pod).在k8s中我们不会直接操作容器,而是把容器包装成Pod再进行管理(关于Pod,大家可以参考第十期的分享“ ...

随机推荐

  1. Sass 教程

    什么是Sass 什么是css预处理语言 css预处理语言可以理解为: 开发一种特殊的编程语言, 把css文件作为编译否的结果, 我们在这个编程语言三增加了很多程序的特性, 使开发变得的更加简单 当前流 ...

  2. JDBC Java 连接 MySQL 数据库

    MySQL 版本:Server version: 5.7.17-log MySQL Community Server (GPL) 用于测试的 MySQL 数据库:game 查看数据库中的表 mysql ...

  3. 【学习笔记/题解】虚树/[SDOI2011]消耗战

    题目戳我 \(\text{Solution:}\) 题目很显然可以设\(dp[i]\)表示\(i\)的子树内的关键点都不和\(i\)联通的最小待机,有如下\(dp\)方程: \(v\in son_u, ...

  4. [HAOI 2017]八纵八横

    线段树分治+线形基. 线段树分治是个锤子?? 以时间轴构建线段树,把每个环以"对线段树产生影响的时间区间"的形式加入线段树即可. #include<bits/stdc++.h ...

  5. spring框架bean注入

    今天学习了spring框架,刚刚入门简单的了解了spring并学习了bean的注入IOC:IOC(Inversion of Control,控制反转)不是什么技术,而是一种设计思想.它的目的是指导我们 ...

  6. springboot1.5和jpa利用HikariCP实现多数据源的使用

    背景 现在已有一个完整的项目,需要引入一个新的数据源,其实也就是分一些请求到从库上去 技术栈 springboot1.5 (哎,升不动啊) 思路 两个数据源,其中一个设置为主数据源 两个事物管理器,其 ...

  7. python反序列化学习记录

    pickle与序列化和反序列化 官方文档 模块 pickle 实现了对一个 Python 对象结构的二进制序列化和反序列化. "pickling" 是将 Python 对象及其所拥 ...

  8. lua 1.0 源码分析 -- 2 内存回收

    说这个,先要说下 lua 的环境,正常说创建一个 lua 的虚拟环境,就是创建一组全局变量, lua1.0 里创建的主要是以下几个: extern Symbol *lua_table; /* 符号数组 ...

  9. day32 Pyhton hashlib模块 总结异常处理

    一.当用明文密码进行信息存储的时候,会导致密码的泄露,如何解决问题 通过导入hashlib模块,利用里面存在的算法对字符串进行加密计算得到一串密文的结果 1.这个过程不可逆 2.对于同一个字符串,同一 ...

  10. CentOS 8 安装 oniguruma 和 oniguruma-devel

    一,oniguruma是什么? oniguruma是一个处理正则表达式的库,我们之所以需要安装它, 是因为在安装php7.4的过程中,mbstring的正则表达式处理功能对这个包有依赖性, 所以我们要 ...