容器基础(十): 使用kubernetes部署应用
概述
使用之前的脚本(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部署应用的更多相关文章
- Kubernetes——基于容器技术的分布式架构领先方案,它的目标是管理跨多个主机的容器,提供基本的部署,维护以及运用伸缩
1.Kubernetes介绍 1.1 简介 Kubernetes是什么?首先,它是一个全新的基于容器技术的分布式架构领先方案.其次,它是一个开放的开发平台.最后,它是一个完备的分布式系统支撑平台.Ku ...
- Kubernetes容器化工具Kind实践部署Kubernetes v1.18.x 版本, 发布WordPress和MySQL
Kind 介绍 Kind是Kubernetes In Docker的缩写,顾名思义是使用Docker容器作为Node并将Kubernetes部署至其中的一个工具.官方文档中也把Kind作为一种本地集群 ...
- Docker集群管理工具 - Kubernetes 部署记录 (运维小结)
一. Kubernetes 介绍 Kubernetes是一个全新的基于容器技术的分布式架构领先方案, 它是Google在2014年6月开源的一个容器集群管理系统,使用Go语言开发,Kubernete ...
- [转帖]两大容器管理平台,Kubernetes与OpenShift有什么区别?
两大容器管理平台,Kubernetes与OpenShift有什么区别? https://www.sohu.com/a/327413642_100159565 原来openshift 就是 k8s的一个 ...
- 01 . 容器编排简介及Kubernetes核心概念
Kubernetes简介 Kubernetes是谷歌严格保密十几年的秘密武器-Borg的一个开源版本,是Docker分布式系统解决方案.2014年由Google公司启动. Kubernetes提供了面 ...
- Kubernetes 部署 1.9.7 高可用版
转载于https://codegreen.cn/2018/08/30/kubernetes-cluster-1.9.7/ 前言 在部署之前,首先感谢 手动搭建高可用的kubernetes 集群 博文的 ...
- Kubernetes 部署失败的 10 个最普遍原因
[原文].后面我们可能还会看到一个 OOMKilled 错误. 我们的应用正在挂掉?为什么? 首先我们查看应用日志.假定你发送应用日志到 stdout(事实上你也应该这么做),你可以使用 kubect ...
- kubernetes部署spring cloud注册中心 Eureka
系统环境 java JDK 1.8 Docker 18.09.6 kubernetes 1.16 创建Eureka Server 1.Maven引入相应的jar 引入 SpringBoot 做基础框架 ...
- Kubernetes部署通用手册 (支持版本1.19,1.18,1.17,1.16)
Kubernetes平台环境规划 操作环境 rbac 划分(HA高可用双master部署实例) 本文穿插了ha 高可用部署的实例,当前章节设计的是ha部署双master 部署 内网ip 角色 安装软件 ...
随机推荐
- 写到 HTML 文档
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...
- webpack4——打包html报错解决
①先引入html-webpack-plugin插件,然后在终端下载 npm install --save-dev html-webpack-plugin ②我的文件结构 ③修改webpack.dev. ...
- BFC、IFC、GFC、FFC
原文地址:https://www.xingkongbj.com/blog/css/fc.html FC FC的全称是:Formatting Contexts,是W3C CSS2.1规范中的一个概念.它 ...
- 史上最简单的SpringCloud教程 | 第四篇:断路器(Hystrix)(Finchley版本)
转载请标明出处: 原文首发于:https://www.fangzhipeng.com/springcloud/2018/08/30/sc-f4-hystrix/ 本文出自方志朋的博客 在微服务架构中, ...
- code ELIFECYCLE (代码周期)
问题:build 不成功 解决:新建一个dist 文件,没有自动新建dist 文件 问题 :npm run dev 时候 解决:
- 微信小程序navigator无法跳转情况
情况有三种 跳转的页面没有在app.json中注册 跳转的路径不正确 以上两种在命令行(console)中都会提示 跳转的页面在TabBar中,需要将open-type属性是设置为switchTab
- Vue 2.0 组件库总结
UI组件 element - 饿了么出品的Vue2的web UI工具套件 Vux - 基于Vue和WeUI的组件库 mint-ui - Vue 2的移动UI元素 iview - 基于 Vuejs 的开 ...
- Python 一些好玩的函数
一.匿名函数 什么匿名是函数: 不需要使用def函数名的函数或者子程序 函数语法: lambda 参数:表达式 函数特点: 1.lambda只是一个表达式,省去定义函数过程,让代码更精简 2.lamb ...
- 吐血分享:QQ群霸屏技术(初级篇)
QQ群,仿似一个冷宫;But,你真摒弃不起. 某人,坐拥2000多个2000人群,月收入10w+,此类人数少,皆因多年的沉淀,以形成完全的壁垒,难以企及的层次. 流量的分散,QQ群相对比较优质的地带, ...
- List集合中的对象比较,取出不同对象
今天在做金碟系统与我们系统的对接的时候需要做一个客户同步 在同步时,需要比较对象,对查询出的数据库的数据进行比较 for(int i=0;i<list2.size();i++){ if(! li ...