首页 > 其他分享 >k8s部署Wordpress(定义不同的资源对象文件)

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

时间:2022-08-21 15:24:24浏览次数:53  
标签:定义 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
From: https://www.cnblogs.com/zeng666/p/16610064.html

相关文章

  • JSON概念和语法定义
    JSON概念概念:JavaScriptObjectNotationJavaScript对象表示法Personp=newPerson();p.setName("张三“);p.setAge(23);p.setGender("男");varp={"name":"张三"......
  • JSON_概念和JSON_语法_定义
    JSON:概念:JavaScriptObjectNotationJavaScript对象表示法Personperson=newPerson();person.setName("张三");person.setAge(23);person.setGender("男");v......
  • 给 TypeScript 回调函数定义接口
    回调函数定义接口就目前我所知道的有两种方式,第一个就是直接声明一个interface,第二个就是直接在函数的回调函数参数写类型。(1)第一种:定义接口,回调函数直接使用接口interf......
  • k8s--HPA 控制器
    HorizontalPodAutoscaler(HPA)控制器介绍在前面的学习中,我们已经可以实现通过手工执行kubectlscale命令实现pod扩容或缩容,但是这显示不符合kubernetes的定位目......
  • Java自定义注解
    ​/**作者:呆萌老师*☑csdn认证讲师*☑51cto高级讲师*☑腾讯课堂认证讲师*☑网易云课堂认证讲师*☑华为开发者学堂认证讲师*☑爱奇艺千人名师计划成员*在这里给大......
  • k8s
    架构与组件Master——控制节点APIServer,由API组件构成,负责提供API服务Scheduler,负责集群调度ControllerManagerNode——计算节点,本质是通过各种协议对简单容......
  • JSON的概念和语法定义
    JSON的概念概念:JavaScriptObjectNotationJavaScript对象表示法json现在多用于存储和交换文本信息的语法进行数据的传输JSON比XML更小、更快,更易解析JSON是轻量......
  • 【Python基础教程】类的定义和使用
    哈喽兄弟们,今天咱们分享一下类的定义和使用。 在Python中,类表示具有相同属性和方法的对象的集合。在使用类时,需要先定义类,然后再创建类的实例,通过类的实例就可以访问......
  • JSON概念和JSON语法的定义与值的获取
    JSON概念概念: JavaScript Object NotationJavaScript对象标记法var p={"name":"张三","age":23,"gender":"男"}; json现在多用于存储和交换文本信息的语法......
  • Winform自定义dataGridView
     dataGridView中的自定义表格属性:{width:控件宽度HeaderText:头列名,显示在表的最顶行的文字。Name:列名,通过Name找到这个列的代号。}在这里默认定义成:DataGridVie......