k8s 作业

1 使用yaml文件创建一个运行MySQL的Pod

#方法1:
[root@master01 ~]# cat mysql-pod.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: app-mysql
spec:
  containers:
  - name: app-mysql
    image: mysql
    imagePullPolicy: IfNotPresent
    ports:
    - containerPort: 3306
      hostPort: 3306		#hostPort,这是一种直接定义Pod网络的方式。hostPort是直接将容器的端口与所调度的节点上的端口路由
    env:
    - name: MYSQL_ROOT_PASSWORD
      value: "centos"
[root@master01 ~]# kubectl apply -f mysql-pod.yaml 
pod/app-mysql created
[root@master01 ~]# kubectl get pods -o wide | grep app-mysql
app-mysql                  1/1     Running       0          31s     10.244.1.9   node01.kobe.com   <none>           <none>

#测试连接数据库
#使用node01节点的IP地址连接
[root@master01 ~]# kubectl exec -it app-mysql -- mysql -uroot -pcentos -h10.0.0.17 -e 'show databases'
mysql: [Warning] Using a password on the command line interface can be insecure.
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
#使用pod中的容器IP地址连接
[root@master01 ~]# kubectl exec -it app-mysql -- mysql -uroot -pcentos -h10.244.1.9 -e 'show databases'mysql: [Warning] Using a password on the command line interface can be insecure.
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
#也可以不使用地址直接访问MySQL
[root@master01 ~]# kubectl exec -it app-mysql -- mysql -uroot -pcentos -e 'show databases'
mysql: [Warning] Using a password on the command line interface can be insecure.
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+

#使用kubectl get pods 查看到app-mysql在node01上,在node01上使用docker ps 查看容器
[root@node01 ~]# docker ps | grep app-mysql
77102e31f46c        dd7265748b5d                                        "docker-entrypoint.s…"   7 minutes ago       Up 7 minutes                            k8s_app-mysql_app-mysql_default_46916b01-37fb-41f5-b7c9-0f9a77f95100_0
ce38b6982bb9        registry.aliyuncs.com/google_containers/pause:3.2   "/pause"                 7 minutes ago       Up 7 minutes                            k8s_POD_app-mysql_default_46916b01-37fb-41f5-b7c9-0f9a77f95100_0

1 使用yaml文件创建一个运行wordpress的Pod(使用hostPort或者hostNetwork)

Pod 部署 Wordpress

环境:

master01:10.0.0.7/24	CentOS 7.8		K8s:1.19.4
noder01: 10.0.0.17/24	CentOS 7.8		K8s:1.19.4
node02:  10.0.0.27/24	CentOS 7.8		K8s:1.19.4

新建Namespace

在master01上新建名为wordpress的名称空间,目的是将wordpress部署到此名称空间内,实现资源隔离

[root@master01 ~]# kubectl create namespace wordpress
namespace/wordpress created

部署MySQL

使用YAML文件创建一个MySQL Pod资源对象

[root@master01 ~]# cat mysql-pod.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: mysql
  namespace: wordpress
spec:
  containers:
  - name: mysql
    image: mysql
    imagePullPolicy: IfNotPresent
    ports:
    - containerPort: 3306
    env:
    - name: MYSQL_ROOT_PASSWORD
      value: centos
    - name: MYSQL_DATABASE
      value: wordpress
    - name: MYSQL_USER
      value: wordpress
    - name: MYSQL_PASSWORD
      value: centos
    volumeMounts: 
    - mountPath: /var/lib/mysql
      name: db
  volumes:
  - name: db
    hostPath: 
      path: /var/lib/mysql
  hostNetwork: True

部署MySQL应用

[root@master01 ~]# kubectl apply -f mysql-pod.yaml 
pod/mysql created

查看pod

#需要指定名称空间才能查看到mysql,否则只能看到default的pods
[root@master01 ~]# kubectl get pods -n wordpress -o wide
NAME    READY   STATUS    RESTARTS   AGE   IP          NODE              NOMINATED NODE   READINESS GATES
mysql   1/1     Running   0          21s   10.0.0.27   node02.kobe.com   <none>           <none>

查看端口

#因为是hostNetwork共享宿主主机端口,去node02上查看3306端口是否打开
[root@node02 ~]# ss -nutlp | grep 3306
tcp    LISTEN     0      70     [::]:33060              [::]:*                   users:(("mysqld",pid=18554,fd=31))
tcp    LISTEN     0      128    [::]:3306               [::]:*                   users:(("mysqld",pid=1

验证MySQL

[root@master01 ~]# kubectl exec -it -n wordpress mysql -- mysql -uroot -pcentos -h 10.0.0.27 -P 3306 -e 'show databases'
mysql: [Warning] Using a password on the command line interface can be insecure.
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| wordpress          |
+--------------------+
[root@master01 ~]# kubectl exec -it -n wordpress mysql -- mysql -uroot -pcentos -h 10.0.0.27 -P 3306 -e 'select user,host from mysql.user'
mysql: [Warning] Using a password on the command line interface can be insecure.
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| root             | %         |
| wordpress        | %         |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| root             | localhost |
+------------------+-----------+

部署Wordpress服务

使用YAML文件创建一个wordpress Pod资源对象

注意:需要指定WORDPRESS_DB_HOST的地址为10.0.0.27:3306

[root@master01 ~]# cat wordpress-pod.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: wordpress
  namespace: wordpress
spec:
  containers:
  - name: wordpress
    image: wordpress
    imagePullPolicy: IfNotPresent
    ports:
    - containerPort: 80
    env:
    - name: WORDPRESS_DB_HOST
      value: 10.0.0.27:3306
    - name: WORDPRESS_DB_USER
      value: wordpress
    - name: WORDPRESS_DB_PASSWORD
      value: centos
  hostNetwork: true      

部署wordpress应用

[root@master01 ~]# kubectl apply -f wordpress-pod.yaml 
pod/wordpress created

查看pod

[root@master01 ~]# kubectl get pods -n wordpress -o wide
NAME        READY   STATUS    RESTARTS   AGE    IP          NODE              NOMINATED NODE   READINESS GATES
mysql       1/1     Running   0          23m    10.0.0.27   node02.kobe.com   <none>           <none>
wordpress   1/1     Running   0          3m9s   10.0.0.27   node02.kobe.com   <none>           <none>

使用浏览器输入http://10.0.0.27来进行安装wordpress
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值