【K8S】Kubernetes中暴露外部IP地址来访问集群中的应用
本文是Kubernetes.io官方文档中介绍如何创建暴露外部IP地址的Kubernetes Service 对象。
学习目标
- 运行Hello World应用程序的五个实例。
- 创建一个暴露外部IP地址的Service对象。
- 使用Service对象访问正在运行的应用程序。
准备工作
- 安装kubectl。
- 使用Google提供商(如Google Container Engine或Amazon Web Services)创建Kubernetes群集。本教程创建一个 外部负载均衡器,它需要一个云提供商。
- 配置kubectl与Kubernetes API服务器通信。有关说明,请参阅云提供商的文档。
在五个pod中运行的应用程序创建一个Service
1、在群集中运行Hello World应用程序:
kubectl run hello-world --replicas=5 --labels="run=load-balancer-example" --image=gcr.io/google-samples/node-hello:1.0 --port=8080
以上命令创建一个 Deployment 对象和一个关联的 ReplicaSet 对象。ReplicaSet 有五个 Pods,每个Pods都运行Hello World应用程序。
2、显示有关Deployment的信息:
kubectl get deployments hello-world
kubectl describe deployments hello-world
3、显示有关ReplicaSet对象的信息:
kubectl get replicasets
kubectl describe replicasets
4、使用deployment创建暴露的Service对象
kubectl expose deployment hello-world --type=LoadBalancer --name=my-service
5、显示有关Service的信息:
kubectl get services my-service
输出:
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
my-service 10.3.245.137 104.198.205.71 8080/TCP 54s
注意:如果外部IP地址显示为,请等待一分钟再次输入相同的命令。
6、显示Service有关详细信息:
kubectl describe services my-service
输出:
Name: my-service
Namespace: default
Labels: run=load-balancer-example
Selector: run=load-balancer-example
Type: LoadBalancer
IP: 10.3.245.137
LoadBalancer Ingress: 104.198.205.71
Port: <unset> 8080/TCP
NodePort: <unset> 32377/TCP
Endpoints: 10.0.0.6:8080,10.0.1.6:8080,10.0.1.7:8080 + 2 more...
Session Affinity: None
Events:
记录Service公开的外部IP地址。在此例子中,外部IP地址为104.198.205.71。还要注意Port的值。在这个例子中,端口是8080。
7、在上面的输出中,您可以看到该服务有多个端点:10.0.0.6:8080,10.0.1.6:8080,10.0.1.7:8080 + 2 more…。这些是运行Hello World应用程序的pod的内部地址。要验证这些是pod地址,请输入以下命令:
kubectl get pods --output=wide
输出类似于:
NAME ... IP NODE
hello-world-2895499144-1jaz9 ... 10.0.1.6 gke-cluster-1-default-pool-e0b8d269-1afc
hello-world-2895499144-2e5uh ... 0.0.1.8 gke-cluster-1-default-pool-e0b8d269-1afc
hello-world-2895499144-9m4h1 ... 10.0.0.6 gke-cluster-1-default-pool-e0b8d269-5v7a
hello-world-2895499144-o4z13 ... 10.0.1.7 gke-cluster-1-default-pool-e0b8d269-1afc
hello-world-2895499144-segjf ... 10.0.2.5 gke-cluster-1-default-pool-e0b8d269-cpuc
8、使用外部IP地址访问Hello World应用程序:
curl http://<external-ip>:<port>
是你Service的外部IP地址,并且是Port你的Service描述中的值。
对成功请求的响应是一个hello消息:
Hello Kubernetes!
删除方法
要删除服务,请输入以下命令:
kubectl delete services my-service
要删除Deployment,ReplicaSet和运行Hello World应用程序的Pods,请输入以下命令:
kubectl delete deployment hello-world
本文转自中文社区-Kubernetes中暴露外部IP地址来访问集群中的应用
【K8S】Kubernetes中暴露外部IP地址来访问集群中的应用的更多相关文章
- 使用port-forward访问集群中的应用程序,以Redis 为例
为Redis创建Deployment和Service 创建 Redis Deployment,YAML文件如下: apiVersion: apps/v1 kind: Deployment metada ...
- 【转载】浅析从外部访问 Kubernetes 集群中应用的几种方式
一般情况下,Kubernetes 的 Cluster Network 是属于私有网络,只能在 Cluster Network 内部才能访问部署的应用.那么如何才能将 Kubernetes 集群中的应用 ...
- 在linux中设置静态ip地址
在linux中设置静态ip地址1.在终端中输入:vi /etc/sysconfig/network-scripts/ifcfg-eth0 2.开始编辑,填写ip地址.子网掩码.网关.DNS等[root ...
- 实操教程丨如何在K8S集群中部署Traefik Ingress Controller
注:本文使用的Traefik为1.x的版本 在生产环境中,我们常常需要控制来自互联网的外部进入集群中,而这恰巧是Ingress的职责. Ingress的主要目的是将HTTP和HTTPS从集群外部暴露给 ...
- 【K8S学习笔记】Part2:获取K8S集群中运行的所有容器镜像
本文将介绍如何使用kubectl列举K8S集群中运行的Pod内的容器镜像. 注意:本文针对K8S的版本号为v1.9,其他版本可能会有少许不同. 0x00 准备工作 需要有一个K8S集群,并且配置好了k ...
- Redis设置认证密码 Redis使用认证密码登录 在Redis集群中使用认证密码
Redis默认配置是不需要密码认证的,也就是说只要连接的Redis服务器的host和port正确,就可以连接使用.这在安全性上会有一定的问题,所以需要启用Redis的认证密码,增加Redis服务器的安 ...
- 集群中几种session同步解决方案的比较
1. 客户端cookie加密 .比较好的方法是自己采用cookie机制来实现一个session,在应用中使用此session实现. 问题:session中数据不能太多,最好只有个用户id. Sessi ...
- Storm集群中执行的各种组件及其并行
一.Storm中执行的组件 我们知道,Storm的强大之处就是能够非常easy地在集群中横向拓展它的计算能力,它会把整个运算过程切割成多个独立的tasks在集群中进行并行计算.在Storm中 ...
- 集群中几种session同步解决方案的比较[转]
集群中session安全和同步是个最大的问题,下面是我收集到的几种session同步的方案,希望能通过分析其各自的优劣找出其适应的场景. 1. 客户端cookie加密 这是我以前采用的方式,简单,高效 ...
- 转:Redis设置认证密码 Redis使用认证密码登录 在Redis集群中使用认证密码
Redis默认配置是不需要密码认证的,也就是说只要连接的Redis服务器的host和port正确,就可以连接使用.这在安全性上会有一定的问题,所以需要启用Redis的认证密码,增加Redis服务器的安 ...
随机推荐
- NC18987 粉嘤花之恋
题目链接 题目 题目描述 qn是个特别可爱的小哥哥,qy是个特别好的小姐姐,他们两个是一对好朋友 [ cp (划掉~) 又是一年嘤花烂漫时,小qn于是就邀请了qy去嘤花盛开的地方去玩.当qy和qn来到 ...
- NC15172 情人节的电灯泡
题目链接 题目 题目描述 情人节到了,小芳和小明手牵手,打算过一个完美的情人节,但是小刚偏偏也来了,当了一个明晃晃的电灯泡,小明很尴尬,就和小刚说,我交给你个任务,你完成了我俩就带你玩,否则你就回家吧 ...
- NC202589 魔法数字
题目链接 题目 题目描述 牛妹给牛牛写了一个数字n,然后又给自己写了一个数字m,她希望牛牛能执行最少的操作将他的数字转化成自己的. 操作共有三种,如下: 1.在当前数字的基础上加一,如:4转化为5 2 ...
- Java并发编程实例--3.打断一个线程
一般来讲一个java程序如果运行着多个线程,那么只有在这些线程都运行完毕后才会终止. 但有时候,我们需要去结束某个线程或者取消某个任务.此时就用到了Java线程的打断机制,即interruption. ...
- VUE 腾讯云 web端上传视频SDK 上传进度无法显示
上传视频官方文档:https://cloud.tencent.com/document/product/266/9239 错误信息 在本地调试可以显示视频上传进度,也可以打印到浏览器控制台.但是,发布 ...
- 【LeetCode数组#4滑动窗口】长度最小的子数组+子数组最大平均数I
长度最小的子数组 力扣题目链接(opens new window) 给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组,并返回其长度.如果不存 ...
- ubuntu版本为16.04,英文改成中文解决方法和解决中文输入法无效的问题,关于无法打开锁文件的解决方法
https://jingyan.baidu.com/article/4853e1e565e1781908f7266c.html,根据这篇文章操作完成后重启ubuntu之后ubuntu就会变成中文,重启 ...
- Cordova下载文件,监听进度,退出疯狂报错
如题. 报错如下: W/cr_AwContents: Application attempted to call on a destroyed WebView java.lang.Throwable ...
- chatGPT初体验
chatGPT NLP技术,通过统计的手段模拟出更正确的答案. 他与以前的NLP不一样,他有上下文语义,他能够模拟场景,能够总结很多文章信息. 因此对于谷歌等搜索引擎就很有攻击性了,因为chatGPT ...
- [.Net]使用Soa库+Abp搭建微服务项目框架(二):面向服务体系的介绍
上一章我们建立了一个典型的面向领域设计的Abp小项目,如果按照常规的开发方式,会遇到什么问题呢? 先来完善一下这个小项目,在定义好各实体类后,运行Miguration并向数据库里写入一些初始数据. ...