一、集群状态测试

目标:接下来在kubernetes集群中部署一个nginx程序,测试下集群是否在正常工作。

# 部署nginx
[root@master ~]# kubectl create deployment nginx --image=nginx
​
# 暴露端口(可以让集群之外的浏览器来访问它)
[root@master ~]# kubectl expose deployment nginx --port=80 --type=NodePort
​
# 查看服务状态(pod是k8s的最小单元)
[root@master ~]# kubectl get pod
[root@master ~]# kubectl get service
​
#最后在电脑上    访问部署的nginx服务
http://192.168.28.134:30049

二、mysql测试

目标:接下来在kubernetes集群中部署一个mysql程序,测试下集群是否在正常工作。

在一个linux的目录中,创建mysql-rc.yaml文件

cd /home
touch mysql-rc.yaml
vi mysql-rc.yaml

mysql-rc.yaml文件内容

apiVersion: v1
kind: ReplicationController
metadata:
  name: mysql
spec:
  replicas: 1
  selector:
    app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
      - name: mysql
        image: mysql
        ports:
        - containerPort: 3306
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: "123456"

将mysql-rc.yaml描述的服务加入k8s集群

kubectl apply -f mysql-rc.yaml
# 查看刚刚创建的rc
kubectl get rc

创建一个Kubernetes Service ——MySQL的定义文件(名为mysql-svc.yaml)

apiVersion: v1
kind: Service
metadata:
  name: mysql
spec:
  type: NodePort
  ports:
    - port: 3306
      nodePort: 30060
  selector:
    app: mysql

运行kubectl命令,创建Service

kubectl create -f mysql-svc.yaml
# 运行kubectl命令查看刚刚创建的Service:
kubectl get svc

如果碰到public key retrieval is not allowed的错误,修改mysql驱动参数

allowPublicKeyRetrieval = true

三、tomcat测试

创建一个tomcat的程序

cd /root/user

vi tomcat-deploy.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: tomcat-deploy
spec:
  replicas: 1
  selector:
    matchLabels:
      app: tomcat9
  template:
    metadata:
      labels:
        app: tomcat9
    spec:
      containers:
      - name: mytomcat
        image: tomcat:9.0
        ports:
        - containerPort: 8080
kubectl apply -f tomcat-deploy.yaml
#查看刚刚创建的deployment
kubectl get deployment
暴露端口给外部

cd /root/user

vi tomcat-svc.yaml

apiVersion: v1
kind: Service
metadata:
  name: tomcatservice
spec:
  type: NodePort
  ports:
  - port: 8080
    targetPort: 8080
    nodePort: 30010
  selector:
    app: tomcat9
kubectl apply -f tomcat-svc.yaml
#查看刚刚创建的service
kubectl get service

通过主机浏览器访问http://masterip:30010端口,发现能访问到tomcat但是404

#查看所有的pod列表,定位到真正的tomcat的pod
kubectl get pod -o wide

#用bash进入tomcat的pod
kubectl exec  tomcat-deploy-b9dd9bbdb-8sdxp -it -- /bin/bash

#进入bash后,进入/usr/local/tomcat目录
cd /usr/local/tomcat

#复制所有.dist内容到webapps下
cp -R webapps.dist/. webapps/ 

四、redis测试

创建redis.conf配置文件

复制以下的md笔记,建议把带有#的内容全部去除,再copy内容(否则比较容易报错)

#bind 0.0.0.0                   #redis可供外部进行访问
protected-mode no               #redis可供外部进行访问
port 6379                       #redis端口,一般来说6379端口
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize no
pidfile /var/run/redis_6379.pid
loglevel notice
logfile "/tmp/redis.log"        #redis运行后的日志文件名字、所在文件夹
databases 16
always-show-logo no
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb             #redis的持久化相关的参数
dir /data                       #redis的持久化相关的参数
appendonly yes                  #redis的持久化相关的参数
appendfilename "appendonly.aof" #redis的持久化相关的参数
创建一个deployment
  • deploy-redis.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: redis-single
  name: redis-single
  namespace: test
spec:
  replicas: 1
  selector:
    matchLabels:
      app: redis-single
  template:
    metadata:
      labels:
        app: redis-single
    spec:
      containers:
      - command:
        - sh
        - -c
        - redis-server "/mnt/redis.conf"
        env:
        - name: TZ
          value: Asia/Shanghai
        - name: LANG
          value: C.UTF-8
        image: redis:5.0.4-alpine
        name: redis-single
        ports:
        - containerPort: 6379
          name: web
          protocol: TCP
        volumeMounts:
        - mountPath: /mnt
          name: redis-conf
          readOnly: true
      volumes:
      - configMap:
          defaultMode: 420
          name: redis-conf
        name: redis-conf

执行这个deploy-redis.yaml

# 创建一条test名称空间下的,配置文件
kubectl create cm redis-conf --from-file=redis.conf -n test

# 以该yaml文件来创建一个deployment资源
kubectl apply -f deploy-redis.yaml

# 罗列test名称空间下的pod列表
kubectl get pod -n test

# 进入容器内部,准备执行redis-cli命令(需要替换掉pod名称
kubectl exec redis-single-7bfc5dfc75-5vkwr -n test -it -c redis-single /bin/sh
暴露redis端口给k8s集群外部

以下命令在master节点上执行

# 暴露一个service,的类别是NodePort,暴露出一个自定义的端口,可以通过k8s集群外部来访问
kubectl expose deploy redis-single --port 6379  --type=NodePort -n test

# 查看test名称空间下暴露的service列表
kubectl get svc -n test 

以下命令在win机器上,提起下载好的redis-cli.exe所在的目录执行

cmd命令行窗格中,执行
​
# 在k8s集群外部,用redis-cli执行
redis-cli -h 192.168.28.134 -p 32712

更多推荐