K8s之实践Pod深入理解

时间:2022-09-09 02:38:25
 

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
K8s之实践Pod深入理解K8s之实践Pod深入理解
 
修改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]#
K8s之实践Pod深入理解K8s之实践Pod深入理解
 
 

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
 
K8s之实践Pod深入理解K8s之实践Pod深入理解
 
测试:
修改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 ~]#
K8s之实践Pod深入理解K8s之实践Pod深入理解
 

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
K8s之实践Pod深入理解K8s之实践Pod深入理解
 
# 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
 
K8s之实践Pod深入理解K8s之实践Pod深入理解
 
测试:
修改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深入理解K8s之实践Pod深入理解
 
 

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

  1. k8s学习 - 概念 - Pod

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

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

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

  3. K8S调度之pod亲和性

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

  4. 从零开始入门 K8s&vert; 详解 Pod 及容器设计模式

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

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

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

  6. k8s如何管理Pod&lpar;rc、rs、deployment&rpar;

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

  7. &period;NET Core on K8S学习实践系列文章索引(Draft版)

    一.关于这个系列 自从去年(2018年)底离开工作了3年的M公司加入X公司之后,开始了ASP.NET Core的实践,包括微服务架构与容器化等等.我们的实践是渐进的,当我们的微服务数量到了一定值时,发 ...

  8. 从实践角度重新理解BIO和NIO

    前言 这段时间自己在看一些Java中BIO和NIO之类的东西,看了很多博客,发现各种关于NIO的概念说的天花乱坠头头是道,可以说是非常的完整,但是整个看下来之后,自己对NIO还是一知半解的状态,所以这 ...

  9. k8s几种pod的控制器

    replicationcontroller 选择器 模版 副本数   如果更改选择器,则会创建新的pod 如果更改pod的标签,那么也会创建新的pod进行替换,但是老的pod不会被删除 如果更改模版, ...

随机推荐

  1. Linux 格式化扩展分区&lpar;Extended&rpar;

    如果你在Linux系统中格式化磁盘时遇到如下错误,那么表示你正在格式化一个扩展分区. [root@GETTestLNX06 ~]# mkfs.ext4 /dev/sdb1   mke2fs 1.41. ...

  2. xamarin SQLite路径

    xamarin使用SQLite时对应的访问路径各个平台不一样,需要单独引用.在使用前添加SQLite引用包,在解决方案上右击选择解决方案的Nuget管理选项,在浏览中输入sqlite-net-pcl, ...

  3. 基于讯为4412开发板的Android开发流程

    讯为4412开发板  使用三星2410芯片,基于arm9架构,由于自己电脑硬件的局限,只能跑Android4.0.3系统. 1.Uboot这个直接使用官方镜像烧写就可以了,一般情况不用去重复烧写. 略 ...

  4. iOS 实现进度条(progress)

    #import <UIKit/UIKit.h> @interface ZSDProgressView : UIView { UIView *progressView;//进度view } ...

  5. 一个cocoapods问题的解决,希望能帮助到遇到相似情况的人

    之前10.7的系统上执行过cocoapods没有问题.如今系统版本号升级到了10.9,尝试使用cocoapods遇到问题,报告了类似以下的错误: Psych::SyntaxError - (/User ...

  6. linux fork&lpar;&rpar;函数

    C语言编程创建函数fork() 执行解析 | 浏览:1842 | 更新:2013-04-22 15:12 | 标签:c语言 概述 最近在看进程间的通信,看到了fork()函数,虽然以前用过,这次经过思 ...

  7. oracle去掉字符串中所有指定字符

    Select Replace(字段名,'指定字符','替换字符') From 表名 --例: select replace('de.5d','.','') from dual --显示结果:de5d ...

  8. ASP&period;NET Web Forms - 网站导航&lpar;Sitemap 文件&rpar;

    [参考]ASP.NET Web Forms - 导航 ASP.NET 带有内建的导航控件. 网站导航 维护大型网站的菜单是困难而且费时的. 在 ASP.NET 中,菜单可存储在文件中,这样易于维护.文 ...

  9. Action的模型绑定

    - 你真的会用Action的模型绑定吗?   在QQ群或者一些程序的交流平台,经常会有人问:我怎么传一个数组在Action中接收.我传的数组为什么Action的model中接收不到.或者我在ajax的 ...

  10. Redis的启动过程

    本文主要介绍Redis启动加载过程,总体上可以分为如下几步: 1. 初始化全局服务器配置 2. 加载配置文件(如果指定了配置文件,否则使用默认配置) 3. 初始化服务器 4. 加载数据库 5. 网络监 ...