概述

使用之前的脚本(env/server.py 得到 env/server:v0.1 镜像, env/worker.py 得到 env/worker:v0.1)得到的镜像,在部署好kubernetes的机器上进行测试。kubernetes-v1.12.2当前只部署在master上,且master的Taint已经被删除!基本的做法是:

. 配置一个server-rc.yml, 用于创建server端,全局只配置一个replicas;
. 配置一个server-svc.yml, 与server-rc.yml进行关联, 为server端分配VIP;
. 配置一个worker-rc.yml, 用于创建客户端, 可配置多个replicas, 用于和server进行通信;

YAML脚本

 ➜  k8s  cat server-rc.yml
apiVersion: v1
kind: ReplicationController
metadata:
name: server
spec:
replicas: 1
selector:
app: server
template:
metadata:
labels:
app: server
spec:
containers:
- name: server
image: env/server:v0.1
ports:
- containerPort: 3000
env:
- name: APP_PORT
value: "3000"
➜ k8s
 ➜  k8s  cat server-svc.yml
apiVersion: v1
kind: Service
metadata:
name: server
spec:
ports:
- port: 3000
selector:
app: server
➜ k8s
 ➜  k8s  cat worker-rc.yml
apiVersion: v1
kind: ReplicationController
metadata:
name: worker
spec:
replicas: 2
selector:
app: worker
template:
metadata:
labels:
app: worker
spec:
containers:
- name: worker
image: env/worker:v0.1
ports:
- containerPort: 3000
env:
- name: APP_DOMAIN
value: "server" # 传入service名字,后续脚本通过该名字从k8s获取到VIP
- name: APP_PORT
value: "3000"
➜ k8s

部署验证

根据yaml文件创建rc/svc

 # create server-rc
➜ k8s kubectl create -f server-rc.yml
replicationcontroller/server created
➜ k8s kubectl get rc
NAME DESIRED CURRENT READY AGE
server 1 1 1 15s # create service
➜ k8s kubectl create -f server-svc.yml
service/server created
➜ k8s
➜ ~ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 24h
server ClusterIP 10.103.92.121 <none> 3000/TCP 38s
➜ ~ # create worker-rc
➜ k8s kubectl create -f worker-rc.yml
replicationcontroller/worker created
➜ k8s kubectl get rc
NAME DESIRED CURRENT READY AGE
server 1 1 1 14m
worker 2 2 2 10s
➜ k8s kubectl get pods
NAME READY STATUS RESTARTS AGE
server-x67sw 1/1 Running 0 14m
worker-45qjt 1/1 Running 0 15s
worker-gvwlt 1/1 Running 0 15s
➜ k8s

通过exec进入server/worker容器查看日志, 可以看到连接已经成功:

 ➜  k8s docker ps | grep python | awk '{print $1, $3 $4}'
7b96a767637c "pythonworker.py"
fb45f45be871 "pythonworker.py"
e217df0ca52d "pythonserver.py"
➜ k8s docker exec -it e217df0ca52d /bin/bash
root@server-x67sw:/env/server# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 15:39 ? 00:00:00 python server.py
root 7 0 0 15:40 pts/0 00:00:00 /bin/bash
root 12 7 0 15:40 pts/0 00:00:00 ps -ef
root@server-x67sw:/env/server# ls
Dockerfile log server.py
root@server-x67sw:/env/server# tail -f log/server.log
2018-12-06 15:39:56 [INFO] Waiting for connection...
2018-12-06 15:54:06 [INFO] ('10.32.0.9', 51266) connected
2018-12-06 15:54:06 [INFO] ('10.32.0.10', 47969) connected
^C
root@server-x67sw:/env/server# exit
exit
➜ k8s docker exec -it 7b96a767637c /bin/bash
root@worker-gvwlt:/env/worker# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 15:54 ? 00:00:00 python worker.py
root 6 0 0 15:57 pts/0 00:00:00 /bin/bash
root 11 6 0 15:57 pts/0 00:00:00 ps -ef
root@worker-gvwlt:/env/worker# tail -f log/worker.log
2018-12-06 15:56:31 [INFO] [recv] hello, docker!
^C
root@worker-gvwlt:/env/worker# exit
exit
➜ k8s

在宿主机直接使用VIP访问server成功(使用original/worker进行测试, ip地址通过配置文件读入):

 ➜  worker  cat ini/config.ini | grep ip
ip = 10.103.92.121
➜ worker python worker.py
[+][recv] hello, docker!
[+][recv] hello, docker!
^C
[-] signal(2) received, exit!
➜ worker

容器基础(十): 使用kubernetes部署应用的更多相关文章

  1. Kubernetes——基于容器技术的分布式架构领先方案,它的目标是管理跨多个主机的容器,提供基本的部署,维护以及运用伸缩

    1.Kubernetes介绍 1.1 简介 Kubernetes是什么?首先,它是一个全新的基于容器技术的分布式架构领先方案.其次,它是一个开放的开发平台.最后,它是一个完备的分布式系统支撑平台.Ku ...

  2. Kubernetes容器化工具Kind实践部署Kubernetes v1.18.x 版本, 发布WordPress和MySQL

    Kind 介绍 Kind是Kubernetes In Docker的缩写,顾名思义是使用Docker容器作为Node并将Kubernetes部署至其中的一个工具.官方文档中也把Kind作为一种本地集群 ...

  3. Docker集群管理工具 - Kubernetes 部署记录 (运维小结)

    一.  Kubernetes 介绍 Kubernetes是一个全新的基于容器技术的分布式架构领先方案, 它是Google在2014年6月开源的一个容器集群管理系统,使用Go语言开发,Kubernete ...

  4. [转帖]两大容器管理平台,Kubernetes与OpenShift有什么区别?

    两大容器管理平台,Kubernetes与OpenShift有什么区别? https://www.sohu.com/a/327413642_100159565 原来openshift 就是 k8s的一个 ...

  5. 01 . 容器编排简介及Kubernetes核心概念

    Kubernetes简介 Kubernetes是谷歌严格保密十几年的秘密武器-Borg的一个开源版本,是Docker分布式系统解决方案.2014年由Google公司启动. Kubernetes提供了面 ...

  6. Kubernetes 部署 1.9.7 高可用版

    转载于https://codegreen.cn/2018/08/30/kubernetes-cluster-1.9.7/ 前言 在部署之前,首先感谢 手动搭建高可用的kubernetes 集群 博文的 ...

  7. Kubernetes 部署失败的 10 个最普遍原因

    [原文].后面我们可能还会看到一个 OOMKilled 错误. 我们的应用正在挂掉?为什么? 首先我们查看应用日志.假定你发送应用日志到 stdout(事实上你也应该这么做),你可以使用 kubect ...

  8. kubernetes部署spring cloud注册中心 Eureka

    系统环境 java JDK 1.8 Docker 18.09.6 kubernetes 1.16 创建Eureka Server 1.Maven引入相应的jar 引入 SpringBoot 做基础框架 ...

  9. Kubernetes部署通用手册 (支持版本1.19,1.18,1.17,1.16)

    Kubernetes平台环境规划 操作环境 rbac 划分(HA高可用双master部署实例) 本文穿插了ha 高可用部署的实例,当前章节设计的是ha部署双master 部署 内网ip 角色 安装软件 ...

随机推荐

  1. HDFS副本存放读取

    HDFS作为Hadoop中 的一个分布式文件系统,而且是专门为它的MapReduce设计,所以HDFS除了必须满足自己作为分布式文件系统的高可靠性外,还必须为 MapReduce提供高效的读写性能,那 ...

  2. python 通过 socket 发送文件

    目录结构: client: #!/usr/bin/env python # -*-coding:utf-8 -*- import socket, struct, json download_dir = ...

  3. js一键勾选所有的checkbox

    //一键勾选全部的checkbox function checkAll(){ var obj = document.getElementById("all"); var arr = ...

  4. android 自定义滑动按钮

    第一接触公司项目就让我画页面,而且还涉及到我最讨厌的自定义view  但是没办法,讨厌也必须要做啊,经过百度上资源的查找,终于写出了一个滑动控件.废话不多说,上代码. package com.eton ...

  5. CentOS 7.4使用yum源安装php7.2

    1.如果之前已经安装我们先卸载一下 yum -y remove php* 2.由于linux的yum源不存在php7.x,所以我们要更改yum源 rpm -Uvh https://dl.fedorap ...

  6. Java : java基础(2) 集合&正则&异常&File类

    Obj 方法: hashCode() 返回内存地址值, getClass() 返回的时运行时类, getName() 返回类名, toString() 把名字和hashCode() 合在一起返回,如果 ...

  7. x-pack本地安装方式

    一.首先下载本地安装包,我使用的ELK是5.6.1版本: https://artifacts.elastic.co/downloads 二.进入到elasticsearch/bin(所有节点)和kib ...

  8. JavaSE库存管理系统项目实战

    需求分析 企业库房用于存放成品.半成品.原材料.工具等物资,一般情况下,这些物资统称为物料.库存管理常见业务包括物资的入库.出库.盘点.退货.报废以及财务核算等,业务逻辑比较复杂,库房信息系统项目开发 ...

  9. node Cookie

    代码: const express = require('express'); const cookieParser = require('cookie-parser'); const app = e ...

  10. 从0开始 java 网站开发(jsp)【1】

    前提:安装java 并配置环境变量 java下载地址: http://www.java.com/zh_CN/ 环境变量配置 本地PC路径: 电脑--属性--高级--环境变量 在系统变量中: 新建 名: ...