ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

k8s部署Wordpress(定义不同的资源对象文件)

2022-08-21 15:32:09  阅读:180  来源: 互联网

标签:定义 namespace yaml Wordpress master wordpress k8s root


1)新建namespace(名称空间)
新建 wordpress-blog namespace,将应用都部署到wordpress-blog这个命名空间下面。
[23:17:36 root@k8s-master ~]#ll namespace.yaml pod.yml service.yaml
-rw-r--r-- 1 root root   64 8月  20 23:17 namespace.yaml
-rw-r--r-- 1 root root 1200 8月  20 23:15 pod.yml
-rw-r--r-- 1 root root  226 8月  20 23:16 service.yaml

#编写YAML文件:

 

知识扩展【点击打开】
 #编写YAML文件
#先编写YAML文件namespace.yaml。

#知识扩展:
#查看k8s的apiversion版本命令(k8s版本不一样,各个Pod和Deployment的apiversion也不一样):
kubectl api-versions
kubectl explain deployment.apiVersion

[15:34:01 root@k8s-master ~]#kubectl explain deployment.apiVersion
KIND:     Deployment
VERSION:  apps/v1      

FIELD:    apiVersion <string>

DESCRIPTION:
     APIVersion defines the versioned schema of this representation of an
     object. Servers should convert recognized schemas to the latest internal
     value, and may reject unrecognized values. More info:
     https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
[15:35:37 root@k8s-master ~]#kubectl explain pod
KIND:     Pod
VERSION:  v1

DESCRIPTION:
     Pod is a collection of containers that can run on a host. This resource is
     created by clients and scheduled onto hosts.

[15:55:42 root@k8s-master ~]#kubectl explain service
KIND:     Service
VERSION:  v1

#名称空间:(namespace.yaml):

#名称空间:(namespace.yaml)

[22:15:18 root@k8s-master ~]#cat namespace.yaml
apiVersion: v1
kind: Namespace
metadata:
  name: kube-wordpress

#应用清单:(pod.yaml):

#应用清单:(pod.yaml)
[23:38:33 root@k8s-master ~]#cat pod.yaml
# 创建pod
apiVersion: v1
kind: Pod
metadata:
  name: wordpress
  namespace: kube-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

######################################特别注意##################################################
@#需要特别注意:这里针对MySQL这个容器做了一个数据卷的挂载,这是为了能够将MySQL的数据能够持久化到节点上,这样下次MySQL容器重启过后数据不至于丢失。

#MySQL 和 Wordpress 在同一个 Pod 下面,所以在 Wordpress 中我们指定数据库地址的时候是用的 localhost:3306,因为这两个容器已经共享同一个 network namespace(网络名称空间) 了,然后如果我们要想把这个服务暴露给外部用户,需要创建一个 Service 或者 Ingress 对象!

#NodePort 类型的 Service:(service.yaml):

#NodePort 类型的 Service:(service.yaml)

[23:40:07 root@k8s-master ~]#cat service.yaml
apiVersion: v1
kind: Service
metadata:
  labels:
    app: wordpress
  name: wp-svc
  namespace: kube-wordpress
spec:
  ports:
  - port: 8080
    protocol: TCP
    targetPort: 80
  selector:
    app: wordpress
  type: NodePort
#因为只需要暴露 Wordpress 这个应用,所以只匹配了一个名为 wdport 的端口,现在我们来创建上面的几个资源对象:
[23:17:36 root@k8s-master ~]#ll namespace.yaml pod.yml service.yaml
-rw-r--r-- 1 root root   64 8月  20 23:17 namespace.yaml
-rw-r--r-- 1 root root 1200 8月  20 23:15 pod.yml
-rw-r--r-- 1 root root  226 8月  20 23:16 service.yaml
[23:19:50 root@k8s-master ~]#kubectl apply -f namespace.yaml
namespace/kube-wordpress created
[23:20:27 root@k8s-master ~]#kubectl apply -f pod.yaml
pod/wordpress created
[23:20:48 root@k8s-master ~]#kubectl apply -f service.yaml
service/wp-svc created


#接下来就是等待拉取镜像,启动 Pod:


[14:45:48 root@k8s-master ~]#kubectl get pods -n kube-wordpress
NAME        READY   STATUS    RESTARTS   AGE
wordpress   2/2     Running   0          2m28s
[14:46:58 root@k8s-master ~]#kubectl get svc -n kube-wordpress
NAME     TYPE       CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
wp-svc   NodePort   10.100.158.109   <none>        8080:31706/TCP   2m47s
#查看Service的详细情况:

(本次实验)
[14:47:06 root@k8s-master ~]#kubectl describe svc -n kube-wordpress
Name:                     wp-svc
Namespace:                kube-wordpress
Labels:                   app=wordpress
Annotations:              <none>
Selector:                 app=wordpress
Type:                     NodePort
IP:                       10.100.158.109
Port:                     <unset>  8080/TCP
TargetPort:               80/TCP
NodePort:                 <unset>  31706/TCP
Endpoints:                10.244.1.2:80
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>

[14:55:58 root@k8s-master ~]#ss -ntl | grep 31706
LISTEN     0      128          *:31706                    *:*

[14:55:34 root@k8s-worker-node1 ~]#ss -ntl | grep 31706
LISTEN     0      128          *:31706                    *:*

[14:56:28 root@k8s-worker-node2 ~]#ss -ntl | grep 31706
LISTEN     0      128          *:31706                    *:*

#效果展示:

#特别注意:要添加属性type: NodePort,然后创建wordpress.yaml文件。

#访问服务
#查看svc
[14:45:48 root@k8s-master ~]#kubectl get pods -n kube-wordpress
NAME        READY   STATUS    RESTARTS   AGE
wordpress   2/2     Running   0          2m28s
[14:46:58 root@k8s-master ~]#kubectl get svc -n kube-wordpress
NAME     TYPE       CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
wp-svc   NodePort   10.100.158.109   <none>        8080:31706/TCP   2m47s

#访问:任意节点ip+31706端口

 

标签:定义,namespace,yaml,Wordpress,master,wordpress,k8s,root
来源: https://www.cnblogs.com/zeng666/p/16610064.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有