`
奔跑的羚羊
  • 浏览: 570637 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Kubernetes示例Guestbook

 
阅读更多
Guestbook的文档,根据kubernetes的不同版本而不同,具体的版本信息:releases.k8s.io.
kubernetes发现Service有2种方式:环境变量,DNS
环境变量
服务可用被之前的容器发现。
DNS
使用cluster's DNS service, 所有的pod基于Service name自动解析到service。这种方式,需要安装cluster DNS

本例使用环境变量env的方式,无需安装cluster DNS。因此在创建之前,需要修改examples/guestbook/redis-slave-deployment.yaml 和 examples/guestbook/frontend-deployment.yaml中变量GET_HOSTS_FROM 的值,由dns变更为env

1 准备工作
需要准备一套kubernetes的运行环境,因此我们通过kubectl来检查集群的情况,如果没安装,请参考之前的帖子
# kubectl cluster-info


2 创建redis master
本例中的redis master并不是高可用的
2.1 定义Deployment
定义文件redis-master-deployment.yaml:

2.2 定义Service
定义文件redis-master-service.yaml:

2.3 创建Service
# kubectl create -f redis-master-service.yaml

2.4 查看Service
# kubectl get service

2.5 创建Deployment
#kubectl create -f redis-master-deployment.yaml

2.6 查看Deployment
# kubectl get deployments

# kubectl get pods


3 创建redis slave
定义两个slave pod
3.1 定义Deployment

由于没安装cluster DNS,先修改GET_HOSTS_FROM为env

3.2 定义Service
定义文件redis-slave-service.yaml:

3.3 创建Service
# kubectl create -f redis-slave-service.yaml

3.4 创建Deployment
# kubectl create -f redis-slave-deployment.yaml

3.5 构建image
# docker build -t gcr.io/google_samples/gb-redisslave:v1 .

3.6 验证
# kubectl get services
# kubectl get deployments
# kubectl get pods

4 创建frontend
4.1 定义Deployment
定义文件frontend-deployment.yaml

4.2 定义Service
定义文件frontend-service.yaml

4.3 创建Service
# kubectl create -f frontend-service.yaml

4.4 创建Deployment
# kubectl create -f frontend-deployment.yaml

4.5 构建image

# docker build -t gcr.io/google-samples/gb-frontend:v4 .

4.6 验证
# kubectl get services
# kubectl get deployments
# kubectl get pods -L tier
查找label为tier的所有pod

php的代码:

5 外部访问guestbook
kubernetes支持2种方式暴露一个服务到外部:NodePort和LoadBalancer
NodePort:
修改front-service.yaml, 设置type为NodePort,这样kubernetes会为其随机分配一个端口(默认:30000-32767)
如果希望指定nodePort的端口号,而不是系统自动分配。设置spec.ports
  • .nodePort的值为自定义的数字,当然这样需要自己保障不要和其他端口冲突

  • 重启frontend的service

    重新创建Service成功以后,我们再次查看所有的Service,发现frontend的EXTERNAL-IP更新为nodes

    在外部用浏览器访问的效果

    6 清理
    使用label标签,快速查找相关的资源,并且删除
    # kubectl delete deployments,services -l "app in (redis, guestbook)"


    参考:
    https://github.com/kubernetes/kubernetes/tree/master/examples/guestbook#guestbook-example




    • 大小: 4.2 KB
    • 大小: 28.1 KB
    • 大小: 12 KB
    • 大小: 3.7 KB
    • 大小: 7.3 KB
    • 大小: 4.1 KB
    • 大小: 5.3 KB
    • 大小: 5.8 KB
    • 大小: 39.1 KB
    • 大小: 9.3 KB
    • 大小: 10.8 KB
    • 大小: 3.5 KB
    • 大小: 3.8 KB
    • 大小: 31.2 KB
    • 大小: 25.5 KB
    • 大小: 35.2 KB
    • 大小: 15.6 KB
    • 大小: 3.8 KB
    • 大小: 3.8 KB
    • 大小: 42.9 KB
    • 大小: 31.9 KB
    • 大小: 36.3 KB
    • 大小: 21.9 KB
    • 大小: 21.6 KB
    • 大小: 12.9 KB
    • 大小: 19.8 KB
    • 大小: 12.7 KB
    分享到:
    评论

    相关推荐

    Global site tag (gtag.js) - Google Analytics