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. CAS 原子操作

    理会CAS和CAS: 有时候面试官面试问你的时候,会问,谈谈你对CAS的理解,这时应该有很多人,就会比较懵,当然,我也会比较懵,当然我和很多人的懵不同,很多人可能,并不知道CAS是一个什么东西,而在我 ...

  2. 在Python中使用OpenCV(CV2)对图像进行边缘检测

    转载:https://blog.csdn.net/cumtb2002/article/details/107798767 Modules used: 使用的模块: For this, we will ...

  3. 【题解】一本通例题 S-Nim

    \(\color{purple}{Link}\) \(\text{Solution:}\) 这个题就是给\(Nim\)游戏做了一个限制. 考虑一下\(\text{SG}\)函数:给定的局面下对应的\( ...

  4. ubuntu20 使用命令安装 mysql

    命令安装 mysql sudo apt-get update sudo apt-get install -y mysql-server mysql-client 查看 mysql 安装情况 servi ...

  5. 算法进阶 (LIS变形) 固定长度截取求最长不下降子序列【动态规划】【树状数组】

    先学习下LIS最长上升子序列 ​ 看了大佬的文章OTZ:最长上升子序列 (LIS) 详解+例题模板 (全),其中包含普通O(n)算法*和以LIS长度及末尾元素成立数组的普通O(nlogn)算法,当然还 ...

  6. ThreadLocal什么时候会出现OOM的情况?为什么?

    ThreadLocal里面使用了一个存在弱引用的map,当释放掉threadlocal的强引用以后,map里面的value却没有被回收.而这块value永远不会被访问到了. 所以存在着内存泄露. 最好 ...

  7. 正式班D8

    2020.10.15星期四 正式班D8 一.上节课复习 OSI七层协议 socket socket是对传输层以下的封装 IP+port标识唯一一个基于网络通讯的软件 TCP与UDP TCP:因为在通信 ...

  8. 超简单的CDH6部署和体验(单机版)

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  9. go 接口实现

    package main import ( "fmt" ) // 定义接口 type Beahavior interface { Run() string Eat(thing st ...

  10. VIM 批量注释的两种方法 (转)

    方法一 ctrl+v 进入列编辑模式,向下或向上移动光标,把需要注释的行的开头标记起来,然后按大写的I(shift+i),再插入注释符,比如"//",再按Esc,就会全部注释了 批 ...