Kubernetes --(k8s) service
service
Kubernete Service 是一个定义了一组Pod的策略的抽象,我们也有时候叫做宏观服务。这些被服务标记的Pod都是(一般)通过label Selector决定的
对于Kubernete原生的应用,Kubernete提供了一个简单的Endpoints API,这个Endpoints api的作用就是当一个服务中的pod发生变化时,Endpoints API随之变化,对于哪些不是原生的程序,Kubernetes提供了一个基于虚拟IP的网桥的服务,这个服务会将请求转发到对应的后台pod
实验
第一步:编写部署nginx-svc的yml文件
╭─root@node1 ~
╰─➤ vim nginx-svc.yml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginx1
spec:
replicas: 2
template:
metadata:
labels:
name: web # 标签 service
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80 # 暴露在pod的ip上的端口
---
apiVersion: v1
kind: Service
metadata:
name: my-svc
spec:
selector:
name: web # 标签 labels
ports:
- port: 80 # service暴露的端口
targetPort: 80 # pods的端口
第二步:运行yml文件
╭─root@node1 ~
╰─➤ kubectl apply -f nginx-svc.yml
第三步:查看标签
╭─root@node1 ~
╰─➤ kubectl get po -o wide --show-labels
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES LABELS
nginx1-7f56c7b7f8-qxqbg 1/1 Running 0 2m33s 10.244.1.6 node2 <none> <none> name=web,pod-template-hash=7f56c7b7f8
nginx1-7f56c7b7f8-zjt9m 1/1 Running 0 2m33s 10.244.2.11 node3 <none> <none> name=web,pod-template-hash=7f56c7b7f8
指定namespace
查看namespace
╭─root@node1 ~
╰─➤ kubectl get namespace
NAME STATUS AGE
default Active 2d19h
kube-node-lease Active 2d19h
kube-public Active 2d19h
kube-system Active 2d19h
编辑yml文件
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginx1
namespace: kube-system # 指定namespace
spec:
replicas: 2
template:
metadata:
labels:
name: web
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: my-svc
namespace: kube-system # 指定namespace
spec:
selector:
name: web
ports:
- port: 80
其中:
- 通过DNS名称访问,只能在同一名称空间
- 如果不是同一名称空间,需要指定namespace
外网访问
第一步:修改yml文件
kind: Deployment
metadata:
name: nginx1
spec:
replicas: 2
template:
metadata:
labels:
name: web
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: my-svc
spec:
type: NodePort # 选择service端口暴露方式
selector:
name: web
ports:
- port: 80
targetPort: 80
nodePort: 30007 # 端口选择范围 30000-32767
第二步:执行yml文件
╭─root@node1 ~
╰─➤ kubectl apply -f nginx-svc.yml
第三步:查看svc
╭─root@node1 ~
╰─➤ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 2d19h
my-svc NodePort 10.109.183.148 <none> 80:30007/TCP 9s
第四步:查看主机端口
╭─root@node1 ~
╰─➤ ss -ntl |grep 30007
LISTEN 0 128 :::30007 :::*
service暴露端口的四种方式:
- clusterIP
- NodePort
- LoadBalance
- ExternalName

Kubernetes --(k8s) service的更多相关文章
- dial tcp 10.96.0.1:443: getsockopt: no route to host --- kubernetes(k8s)DNS 服务反复重启
kubernetes(k8s)DNS 服务反复重启解决: k8s.io/dns/pkg/dns/dns.go:150: Failed to list *v1.Service: Get https:// ...
- kubernetes(K8S)快速安装与配置集群搭建图文教程
kubernetes(K8S)快速安装与配置集群搭建图文教程 作者: admin 分类: K8S 发布时间: 2018-09-16 12:20 Kubernetes是什么? 首先,它是一个全新的基于容 ...
- (转)dial tcp 10.96.0.1:443: getsockopt: no route to host --- kubernetes(k8s)DNS 服务反复重启
转:https://blog.csdn.net/shida_csdn/article/details/80028905 kubernetes(k8s)DNS 服务反复重启解决: k8s.io/dns/ ...
- Kubernetes --(k8s)入门
k8s 简介: 什么是k8s? Kubernetes (k8s)是Google开源的容器集群管理系统(谷歌内部:Borg).在Docker技术基础上,为容器化的应用提供部署运行.资源调度.服务发现和动 ...
- 使用国内的镜像源搭建 kubernetes(k8s)集群
1. 概述 老话说的好:努力学习,提高自己,让自己知道的比别人多,了解的别人多. 言归正传,之前我们聊了 Docker,随着业务的不断扩大,Docker 容器不断增多,物理机也不断增多,此时我们会发现 ...
- Kubernetes(K8s)极速入门
1. 概述 老话说的好:努力学习,努力提高,做一个有真才实学的人. 言归正传,之前我们聊了 如何使用国内的镜像源搭建 kubernetes(k8s)集群 ,今天我们来聊聊如何在 kubernetes( ...
- Kubernetes(K8s)部署 SpringCloud 服务实战
1. 概述 老话说的好:有可能性就不要放弃,要敢于尝试. 言归正传,之前我们聊了一下如何在 Kubernetes(K8s)中部署容器,今天我们来聊一下如何将 SpringCloud 的服务部署到 Ku ...
- Kubernetes(K8s)基础概念 —— 凿壁偷光
Kubernetes(K8s)基础概念 -- 凿壁偷光 K8s是什么:全称 kubernetes (k12345678s) 作用:用于自动部署,扩展和管理"容器化应用程序"的 ...
- Minikube之Win10单机部署Kubernetes(k8s)自动化容器操作的开源平台
Minikube之Win10单机部署 Kubernetes(k8s)是自动化容器操作的开源平台,基于这个平台,你可以进行容器部署,资源调度和集群扩容等操作.如果你曾经用过Docker部署容器,那么可以 ...
随机推荐
- JavaScript CMD规范
CMD是另一种js模块化方案,它与AMD很类似,不同点在于:AMD 推崇依赖前置.提前执行,CMD推崇依赖就近.延迟执行.此规范其实是在sea.js推广过程中产生的. AMD规范请移步AMD 模块化规 ...
- case when then else end用法
case具有两种格式,简单case函数和case搜索函数 case函数只返回第一个符合条件的值,剩下的case部分将会被自动忽略 1.简单函数 CASE sex WHEN '1 ...
- java的多线程:java安全问题产生的原因与JMM的关系
一.多线程产生安全问题 1.Java内存模型 共享内存模型指的就是Java内存模型(简称JMM),JMM决定一个线程对共享变量的写入时,能对另一个线程可见. 从抽象的角度来看,JMM定义了线程和主内存 ...
- 【JDBC核心】JDBC 概述
JDBC 概述 数据的持久化 持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用.大多数情况下,特别是企业级应用,数据持久化意味着将内存中的数据保存到硬盘上加以"固 ...
- IPC 经典问题:Sleeping Barber Problem
完整代码实现: #include <stdio.h> #include <unistd.h> #include <time.h> #include <stdl ...
- iconv函数报错 Detected an illegal character in input string
近日使用php代码导出文件为excel,一直乱码.导出修改编码都无效,最后发现,是需要修改php导出代码本身的编码.首先用记事本打开php代码,另存为,选择ANSI格式.然后打开iconv函数这个ph ...
- 【ORA】ORA-00371: not enough shared pool memory
今天rac中有一个节点asm实例起不来包了ora-000371的错误,错误贴在下面: [oracle@rac2 dbs]$ srvctl start asm -n rac2 PRKS-1009 : F ...
- ctfhub技能树—sql注入—字符型注入
打开靶机 查看页面信息 查询回显位 查询数据库名(查询所有数据库名:select group_concat(schema_name) from information_schema.schemata) ...
- k8s集群中遇到etcd集群故障的排查思路
一次在k8s集群中创建实例发现etcd集群状态出现连接失败状况,导致创建实例失败.于是排查了一下原因. 问题来源 下面是etcd集群健康状态: 1 2 3 4 5 6 7 8 9 10 11 [roo ...
- 基于 WebRTC 实现自定义编码分辨率发送
2020年如果问什么技术领域最火?毫无疑问:音视频.2020年远程办公和在线教育的强势发展,都离不开音视频的身影,视频会议.在线教学.娱乐直播等都是音视频的典型应用场景. 更加丰富的使用场景更需要我们 ...