K8S部署wordpress-->wordpress和mysql运行在一个pod中(mysql+wordpress)
[21:34:03 root@k8s-master ~]# cat wordpress-blog.yaml
apiVersion: v1
kind: Namespace
metadata:
name: wordpress
---
# 创建pod
apiVersion: v1
kind: Pod
metadata:
name: wordpress
namespace: wordpress
labels:
app: wordpress # <==== 这里添加一个label标签,pod 向外暴露pod的service NodePort型端口需要用标签选择器。
spec:
containers:
- name: wordpress
image: wordpress
ports:
- containerPort: 80
name: wdport
env:
- name: WORDPRESS_DB_HOST
value: 127.0.0.1:3306 # <==== 这里不能是localhost数据库的localhost默认是去找socket文件,然而在不同的容器之间文件系统是隔离的,会导致报错;
- name: WORDPRESS_DB_USER
value: wordpress
- name: WORDPRESS_DB_PASSWORD
value: wordpress
imagePullPolicy: IfNotPresent
- name: mysql
image: mysql:5.7
imagePullPolicy: IfNotPresent
ports:
- containerPort: 3306
name: dbport
env:
- name: MYSQL_ROOT_PASSWORD
value: dayi123
- name: MYSQL_DATABASE
value: wordpress
- name: MYSQL_USER
value: wordpress
- name: MYSQL_PASSWORD
value: wordpress
volumeMounts:
- name: db
mountPath: /var/lib/mysql
volumes:
- name: db
hostPath:
path: /var/lib/mysql
---
apiVersion: v1
kind: Service
metadata:
labels:
app: wordpress
name: wp-svc
namespace: wordpress
spec:
ports:
- port: 8080
protocol: TCP
targetPort: 80
selector:
app: wordpress
type: NodePort
#查看node节点容器运行情况:
#查看node节点容器运行情况:
[21:22:37 root@k8s-worker-node1 sysctl.d]#docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0445bab21100 c20987f18b13 "docker-entrypoint.s…" 15 minutes ago Up 14 minutes k8s_mysql_wordpress_wordpress_312805c9-927d-44d0-b6b9-e989e63cee15_0
[21:22:34 root@k8s-worker-node1 sysctl.d]#docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
rancher/mirrored-flannelcni-flannel v0.19.1 252b2c3ee6c8 2 weeks ago 62.3MB
rancher/mirrored-flannelcni-flannel-cni-plugin v1.1.0 fcecffc7ad4a 3 months ago 8.09MB
wordpress latest c3c92cc3dcb1 8 months ago 616MB
mysql 5.7 c20987f18b13 8 months ago 448MB
registry.aliyuncs.com/google_containers/kube-proxy v1.18.0 43940c34f24f 2 years ago 117MB
registry.aliyuncs.com/google_containers/pause 3.2 80d28bedfe5d 2 years ago 683kB
#重新创建容器(也就是重启):
#在有 yaml 文件的情况下可以直接使用 kubectl replace --force -f xxx.yaml 来强制替换Pod 的 API 对象,从而达到重启的目的。
[18:43:11 root@k8s-master ~]#kubectl replace --force -f wordpress-blog.yaml
#问题排查:
#以下报错是数据库地址指向问题,以及没有定义标签选择器来暴露我们的pod的service:
-A KUBE-SERVICES -d 10.99.214.164/32 -p tcp -m comment --comment "wordpress/wordpress:web has no endpoints" -m tcp --dport 80 -j REJECT --reject-with icmp-port-unreachable
#查看数据卷挂载情况:
#查看数据卷挂载情况:
[21:24:50 root@k8s-worker-node1 sysctl.d]#cd /var/lib/mysql/
[21:24:58 root@k8s-worker-node1 mysql]#ls
auto.cnf client-cert.pem ibdata1 ibtmp1 private_key.pem server-key.pem
ca-key.pem client-key.pem ib_logfile0 mysql public_key.pem sys
ca.pem ib_buffer_pool ib_logfile1 performance_schema server-cert.pem wordpress
#附:拆除命令:
[21:32:17 root@k8s-master ~]#kubectl delete -f wordpress-blog.yaml
namespace "wordpress" deleted
pod "wordpress" deleted
service "wp-svc" deleted
#创建命令:
[21:34:03 root@k8s-master ~]#kubectl create -f wordpress-blog.yaml
或者:
[21:34:03 root@k8s-master ~]#kubectl apply -f wordpress-blog.yaml
本文来自博客园,作者:一念6,转载请注明原文链接:https://www.cnblogs.com/zeng666/p/16610078.html