来自官网教程

Kubernetes Documentation
Tutorials
Stateless Applications
Example: Deploying PHP Guestbook application with Redis

Example: Deploying PHP Guestbook application with Redis

  1. 按照教程依次创建yaml文件并复制代码

    [root@centos7-188 guestbook]# ls

     frontend-deployment.yaml  frontend-service.yaml  redis-follower-deployment.yaml  redis-follower-service.yaml  redis-leader-deployment.yaml  redis-leader-service.yaml
    
  2. 早先因为 image 总是被墙,所以,结果总是不对!
    前天终于找到了方法:使用阿里云容器镜像的 github关联仓库,海外机器构建 Docker 镜像

    自行创建了 2 个镜像如下,目前是 open 的
    registry.cn-beijing.aliyuncs.com/docker-dhbm/gb-frontend
    registry.cn-beijing.aliyuncs.com/docker-dhbm/gb-redis-follower

  3. 修改用到这 2 个 image 的文件
    不会使用 sed 命令替换 image,只好 vim 手工替换
    哪位知道的话,告知一下,谢过!

    [root@centos7-188 guestbook]# vim redis-follower-deployment.yaml

     # SOURCE: https://cloud.google.com/kubernetes-engine/docs/tutorials/guestbook
     apiVersion: apps/v1
     kind: Deployment
     metadata:
       name: redis-follower
       labels:
         app: redis
         role: follower
         tier: backend
     spec:
       replicas: 2
       selector:
         matchLabels:
           app: redis
       template:
         metadata:
           labels:
             app: redis
             role: follower
             tier: backend
         spec:
           containers:
           - name: follower
             image: registry.cn-beijing.aliyuncs.com/docker-dhbm/gb-redis-follower # gcr.io/google_samples/gb-redis-follower:v2
             resources:
               requests:
                 cpu: 100m
                 memory: 100Mi
             ports:
             - containerPort: 6379
             - 
    

    [root@centos7-188 guestbook]# vim frontend-deployment.yaml

     apiVersion: apps/v1
     kind: Deployment
     metadata:
       name: frontend
     spec:
       replicas: 3
       selector:
         matchLabels:
             app: guestbook
             tier: frontend
       template:
         metadata:
           labels:
             app: guestbook
             tier: frontend
         spec:
           containers:
           - name: php-redis
             image: registry.cn-beijing.aliyuncs.com/docker-dhbm/gb-frontend # gcr.io/google_samples/gb-frontend:v5
             env:
             - name: GET_HOSTS_FROM
               value: "dns"
             resources:
               requests:
                 cpu: 100m
                 memory: 100Mi
             ports:
             - containerPort: 80
             - 
    
  4. 另外,为了后续测试验证,将其中 2 个 service 改用 LoadBalancer 方式

    如果不支持 LoadBalancer ,自行改成 NodePort,或者使用 port-forward

    [root@centos7-188 guestbook]# vim redis-leader-service.yaml

     # SOURCE: https://cloud.google.com/kubernetes-engine/docs/tutorials/guestbook
     apiVersion: v1
     kind: Service
     metadata:
       name: redis-leader
       labels:
         app: redis
         role: leader
         tier: backend
     spec:
       type: LoadBalancer
       ports:
       - port: 6379
         targetPort: 6379
       selector:
         app: redis
         role: leader
         tier: backend
    

    [root@centos7-188 guestbook]# vim frontend-service.yaml

     # SOURCE: https://cloud.google.com/kubernetes-engine/docs/tutorials/guestbook
     apiVersion: v1
     kind: Service
     metadata:
       name: frontend
       labels:
         app: guestbook
         tier: frontend
     spec:
       # if your cluster supports it, uncomment the following to automatically create
       # an external load-balanced IP for the frontend service.
       # type: LoadBalancer
       type: LoadBalancer
       ports:
         # the port that this service should serve on
       - port: 80
       selector:
         app: guestbook
         tier: frontend
    
  5. 依次启动

    kubectl apply -f redis-leader-deployment.yaml
    kubectl apply -f redis-leader-service.yaml
    kubectl apply -f redis-follower-deployment.yaml
    kubectl apply -f redis-follower-service.yaml

    kubectl apply -f frontend-deployment.yaml
    kubectl apply -f frontend-service.yaml

  6. 确认 pods 和 svc 状态

    [root@centos7-188 guestbook]# kubectl get pods -l app=guestbook -l tier=frontend

     NAME                        READY   STATUS    RESTARTS   AGE
     frontend-6cb8c45cd5-2r5xv   1/1     Running   0          57m
     frontend-6cb8c45cd5-bshtl   1/1     Running   0          57m
     frontend-6cb8c45cd5-kh767   1/1     Running   0          57m
    

    [root@centos7-188 guestbook]# kubectl get svc

     NAME             TYPE           CLUSTER-IP       EXTERNAL-IP     PORT(S)          AGE
     demo             ClusterIP      10.109.183.133   <none>          80/TCP           15d
     demo1            LoadBalancer   10.103.29.98     192.168.1.240   80:32057/TCP     29h
     frontend         LoadBalancer   10.96.43.138     192.168.1.243   80:30521/TCP     48m
     kubernetes       ClusterIP      10.96.0.1        <none>          443/TCP          15d
     redis-follower   ClusterIP      10.102.140.9     <none>          6379/TCP         57m
     redis-leader     LoadBalancer   10.104.163.223   192.168.1.244   6379:32365/TCP   29m
    
  7. 验证 guestbook 前端

    [root@centos7-188 guestbook]# curl 192.168.1.243

    浏览器查看
    在这里插入图片描述

  8. 验证 redis 数据

    $ redis-cli -h 192.168.1.244

     192.168.1.244:6379> keys *
     1) "guestbook"
     
     192.168.1.244:6379> get guestbook
     ",aaa,2222,sss,dddd,ZZZZZ"
    

9,清理现场
kubectl delete deployment -l app=redis
kubectl delete service -l app=redis
kubectl delete deployment frontend
kubectl delete service frontend

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐