从集群外部访问pod或service

pod

在Kubernetes中,创建、调度和管理的最小单位是pod而不是容器。pod代表着一个运行着的工作单元。一般情况下,每个pod中只有一个容器(原因是为了避免容器之间发生端口冲突)。如果几个容器是紧耦合的,也可以放在同一个pod中,但一定要避免同一个pod下容器之间发生端口冲突。Kubernetes承担了pod与外界环境的通信工作。

Pod和Service是Kubernetes集群范围内的虚拟概念。集群外的客户端系统无法通过Pod的IP地址或者Service的虚拟IP地址和虚拟端口号访问到它们,但是可以将容器应用的端口号映射到物理机上

方法一:设置容器的hostport,将容器应用的端口号映射到物理机上

apiVersion: v1
kind: Pod              #kind表示创建什么(pod?service?deployment?)
metadata:
name: webapp
labels:
app: webapp
spec:
 replicas: 2       #创建多少个副本,如果指定了映射到宿主机的端口,需要在两台node上创建副本
containers:
- name: webapp
image: docker.io/nginx:latest    #默认会先从本地查找镜像,找不到从服务器上pull
ports:
- containerPort: 80      #容器端口
hostPort: 8081        #宿主机端口,指定端口后,同一台宿主机无法启动第二个副本(端口会冲突)

通过 命令可查看pod在哪台node上创建了容器

kubectl get pods -o wide

方法二,设置pod hostNetwork=true

apiVersion: v1
kind: ReplicationController
metadata:
name: testnetwork
labels:
app: testnetwork
spec:
replicas: 5              #,同样,不能在一台机器上创建两个副本
selector:
app: testnetwork
template:
metadata:
labels:
app: testnetwork
spec:
hostNetwork: true      #表示使用宿主机网络
    containers:
    - name: testnetwork
     image: docker.io/nginx:latest
     ports:
     - containerPort: 80    #这里没有指定hostport,默认会使pod中的所有容器的端口号直接映射到物理机上

service

Kubernetes通过Service能够提供pod间的相互通信。service可以和Kubernetes环境中其它部分(包括其它pod和replication controller)进行通信,告诉它们你的应用提供什么服务。Pod可以四处移动(会改变IP地址),但是service的IP地址和端口号是不变的。而且其它应用可以通过Kubernetes的服务发现找到对应的service。Service是真实应用服务的抽象。将代理的Pod对外表现为一个单一的访问接口,外部不需要了解后端Pod如何运行,提供了一套简化的服务代理和发现机制。

网络方式:

port: 80:service映射的端口
nodePort: 30001物理机端口
targetPort: 80容器端口

方设置nodeport映射到物理机,同时设置service类型为nodeport

#cat service.yml
apiVersion: v1
kind: Service
metadata:
name: testnetwork      #pod名称
labels:
app: testnetwork
spec:
type: NodePort
ports:
- port: 8080
targetPort: 8080
nodePort: 8000
selector:
app: testnetwork      #这里的app名称应该与pod name设定的app名称相同,包括上面的metadata信息

创建kubernetes网络

要实现Kubernetes的网络模型,需要在Kubernetes的集群中创建一个覆盖网络,连通各个节点。这里选用Flannel。

Flannel使用Etcd进行配置,用来保证多个Flannel实例间的配置一致性。

对Master的配置,其实就是对Master上Etcd的配置。指令如下:

etcdctl mk /coreos.com/network/config '{"Network":"10.0.0.0/16"}'    #此处 /coreos.com/network/config在 /etc/sysconfig/flanneld里配置

etcd集群和node节点配置看k8s集群安装文章

kubernetes 基础一的更多相关文章

  1. Kubernetes基础:查看状态、管理服务

    目标 了解Kubernetes Pod 了解Kubernetes Node 学习如何调试部署问题 了解如何通过Service暴露应用 Kubernetes Pods 在Kubernetes中创建一个D ...

  2. 1-2、kubernetes架构概述和kubernetes基础概念

    kubernetes https://draveness.me/understanding-kubernetes http://kubernetes.kansea.com/docs/ master/n ...

  3. linux运维、架构之路-Kubernetes基础(一)

    一.Kubernetes介绍 Kubernetes最初源于谷歌内部的Borg,提供了面向应用的容器集群部署和管理系统.Kubernetes的目标旨在消除编排物理/虚拟计算,网络和存储基础设施的负担,并 ...

  4. Kubernetes基础

    Kubernetes是什么 Kubernetes是当今最流行的开源容器管理平台,它就是大名鼎鼎的Google Borg的开源版本.Google在2014年推出了Kubernetes,本文发布时最新的版 ...

  5. kubernetes基础架构及原理

    kubernetes简称“k8s” 其中“8”代表的是“k”和“s”中间的8个字母. k8s是Google公司开发的Borg项目中独立出来的容器编排工具,然后将其捐献给CNCF这个组织,然后发扬光大. ...

  6. 003/kubernetes基础:开启云原生之门(Mooc)

    一.简介:(https://www.imooc.com/learn/978) 在2017年Kubernetes战胜了两个强大的竞争对手Swarm和Mesos,成为容器管理与调度编排领域的首选平台和事实 ...

  7. kubernetes基础——一文读懂k8s

    容器 容器与虚拟机对比图(左边为容器.右边为虚拟机)   容器技术是虚拟化技术的一种,以Docker为例,Docker利用Linux的LXC(LinuX Containers)技术.CGroup(Co ...

  8. kubernetes基础概念知多少

    kubernetes(简称k8s)是一种用于在一组主机上运行和协同容器化应用程序的管理平台,皆在提供高可用.高扩展性和可预测性的方式来管理容器应用的生命周期.通过k8s,用户可以定义程序运行方式.部署 ...

  9. Kubernetes 基础资料

    概述 这篇文章用来记录Kubernetes 的基础资料,整体以最新官方文档为准. 因为k8s整体比较偏运维,作为研发可先大致了解其概念及初级使用方式,后面重点学习点会放在service mesh is ...

  10. kubernetes 基础知识

    1. kubernetes 包含几个组件 Kubernetes是什么:针对容器编排的一种分布式架构,是自动化容器操作的开源平台. 服务发现.内建负载均衡.强大的故障发现和自我修复机制.服务滚动升级和在 ...

随机推荐

  1. luogu P1353 【[USACO08JAN]跑步Running】

    USACO!!! 唉!无一例外又是母牛(终于知道美国的牧场养什么了) 今天的主人公是一个叫贝茜的公主病母牛(好洋气) 可是她叫什么和我们理解题好像没有什么关系 通过读题我们可以发现她有三个傲娇的地方 ...

  2. Vue——服务器上部署vue.js

    服务器版本 [root@izuf63g0jydq42k49eo7zcz ~]# uname -a Linux izuf63g0jydq42k49eo7zcz -.el7.x86_64 # SMP Tu ...

  3. 本文之后都以Vol1来指代

    本文参考文档是<64-ia-32-architectures-software-developer-vol-1-manual>(本文之后都以Vol1来指代),介绍了x86架构的基础.这些基 ...

  4. 【BZOJ3252】攻略(长链剖分,贪心)

    [BZOJ3252]攻略(长链剖分,贪心) 题面 BZOJ 给定一棵树,每个点有点权,选定\(k\)个叶子,满足根到\(k\)个叶子的所有路径所覆盖的点权和最大. 题解 一个假装是对的贪心: 每次选择 ...

  5. 【BZOJ5197】Gambling Guide (最短路,期望)

    [BZOJ5197]Gambling Guide (最短路,期望) 题面 BZOJ权限题 洛谷 题解 假设我们求出了每个点的期望,那么对于一个点,只有向期望更小的点移动的时候才会更新答案. 即转移是: ...

  6. [luogu3157][bzoj3295][CQOI2011]动态逆序对【cdq分治+树状数组】

    题目描述 对于序列A,它的逆序对数定义为满足i<j,且Ai>Aj的数对(i,j)的个数.给1到n的一个排列,按照某种顺序依次删除m个元素,你的任务是在每次删除一个元素之前统计整个序列的逆序 ...

  7. STL之set和map

    by attack666      set与map   map 内部实现是一棵红黑树 定义 key和value分别对应着两种类型 map<key, value> mp; 内部函数 直观的理 ...

  8. TJOI2011书架(dp)

    当农夫约翰闲的没事干的时候,他喜欢坐下来看书.多年过去,他已经收集了 N 本书 (1 <= N <= 100,000), 他想造一个新的书架来装所有书. 每本书 i 都有宽度 W(i) 和 ...

  9. Composer 安装时要求输入授权用户名密码?

    D:\work\dreamland-yii>composer require "saviorlv/yii2-dysms:dev-master" Authentication ...

  10. 洛谷P1117 优秀的拆分

    题意:求一个字符串中有多少形如AABB的子串. 解:嗯...我首先极度SB的想了一个后缀自动机套线段树启发式合并的做法,想必会TLE. 然后跑去看题解,发现实在是妙不可言... 显然要对每个位置求出向 ...