容器基础(十): 使用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 角色 安装软件 ...
随机推荐
- HDFS副本存放读取
HDFS作为Hadoop中 的一个分布式文件系统,而且是专门为它的MapReduce设计,所以HDFS除了必须满足自己作为分布式文件系统的高可靠性外,还必须为 MapReduce提供高效的读写性能,那 ...
- python 通过 socket 发送文件
目录结构: client: #!/usr/bin/env python # -*-coding:utf-8 -*- import socket, struct, json download_dir = ...
- js一键勾选所有的checkbox
//一键勾选全部的checkbox function checkAll(){ var obj = document.getElementById("all"); var arr = ...
- android 自定义滑动按钮
第一接触公司项目就让我画页面,而且还涉及到我最讨厌的自定义view 但是没办法,讨厌也必须要做啊,经过百度上资源的查找,终于写出了一个滑动控件.废话不多说,上代码. package com.eton ...
- CentOS 7.4使用yum源安装php7.2
1.如果之前已经安装我们先卸载一下 yum -y remove php* 2.由于linux的yum源不存在php7.x,所以我们要更改yum源 rpm -Uvh https://dl.fedorap ...
- Java : java基础(2) 集合&正则&异常&File类
Obj 方法: hashCode() 返回内存地址值, getClass() 返回的时运行时类, getName() 返回类名, toString() 把名字和hashCode() 合在一起返回,如果 ...
- x-pack本地安装方式
一.首先下载本地安装包,我使用的ELK是5.6.1版本: https://artifacts.elastic.co/downloads 二.进入到elasticsearch/bin(所有节点)和kib ...
- JavaSE库存管理系统项目实战
需求分析 企业库房用于存放成品.半成品.原材料.工具等物资,一般情况下,这些物资统称为物料.库存管理常见业务包括物资的入库.出库.盘点.退货.报废以及财务核算等,业务逻辑比较复杂,库房信息系统项目开发 ...
- node Cookie
代码: const express = require('express'); const cookieParser = require('cookie-parser'); const app = e ...
- 从0开始 java 网站开发(jsp)【1】
前提:安装java 并配置环境变量 java下载地址: http://www.java.com/zh_CN/ 环境变量配置 本地PC路径: 电脑--属性--高级--环境变量 在系统变量中: 新建 名: ...