1、首先建一个http的Deployment

apiVersion: apps/v1                      #版本信息
kind: Deployment #文件类型
metadata: #Deployment资源的元数据信息 name 和 labels必须有
name: http-deployment
labels:
app: http-label
spec: #spec部分是该Deployment的规格说明。
replicas: 3 #副本数 意味着http的pod 会有三个
selector: #defines how the Deployment finds which Pods to manage 与下面的template定义的标签一致
matchLabels:
app: http-label
template: #每个pod的模板配置信息在这里
metadata: #pod资源的元数据信息 labels必须有  不然上面的selector会选不到
labels:
app: http-label
spec: #spec描述Pod的规格,此部分定义Pod中每一个容器的属性,name和image是必需的。
containers:
- name: httpd
image: httpd
ports:
- containerPort: 80

2、可以通过 kubectl apply -f http.yaml 来启动上面的资源

[root@master1 test]# kubectl apply -f http.yaml
deployment.apps/http-deployment configured
[root@master1 test]# kubectl get pods
NAME READY STATUS RESTARTS AGE
http-deployment-6bd68845b-dhw72 0/1 ContainerCreating 0 7s
http-deployment-6bd68845b-fqf8c 1/1 Running 0 33m
http-deployment-6bd68845b-ksrt5 0/1 ContainerCreating 0 7s

3、这个时候pod里面的http服务只能集群内部访问  看一下pod的网络ip  这是虚拟的ip  通过net实现的

[root@master1 test]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
http-deployment-6bd68845b-dhw72 1/1 Running 0 15m 10.130.209.237 node1 <none> <none>
http-deployment-6bd68845b-fqf8c 1/1 Running 0 48m 10.130.209.235 node1 <none> <none>
http-deployment-6bd68845b-ksrt5 1/1 Running 0 15m 10.130.209.238 node1 <none> <none>

4、k8s集群内部所有节点都可以访问到

[root@master1 test]# curl 10.130.209.237
<html><body><h1>It works!</h1></body></html>
[root@master1 test]# curl 10.130.209.235
<html><body><h1>It works!</h1></body></html>
[root@master1 test]# curl 10.130.209.238
<html><body><h1>It works!</h1></body></html>
[root@master1 test]#

5、外面怎么访问呢  k8s用 service 来做到的  pod的上层是service  两者通过iptables交互

新建一个service的yaml   httpSvc.yaml

apiVersion: v1
kind: Service #类型这次是Service了
metadata:
name: http-svc
spec:
type: NodePort #NodePort没有 外网不能访问 只能集群访问service接口 nodeport和service也是通过iptables转发的
selector:
app: http-label #这里的标签 表示这个服务会选择这种标签的pod 作为他的后端服务 他来当pod外层的service 统一服务
ports:
- protocol: TCP
nodePort: 30001 #NodePort端口 用来外部访问的 如果不设置,会随机选一个范围(30000~32767)

port: 8080
targetPort : 80

6、同理启动一下  kubectl apply -f httpSvc.yaml

7、看看服务是否都ok

[root@master1 test]# kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
http-svc NodePort 172.30.169.160 <none> 8080:30001/TCP 52m
kubernetes ClusterIP 172.30.0.1 <none> 443/TCP 25h

8、可以集群访问

[root@master1 test]# curl 172.30.169.160:8080
<html><body><h1>It works!</h1></body></html>
[root@master1 test]#

9、外网访问 我的主机ip是 192.168.10.1 在浏览器 输入http://192.168.10.1:30001/

ps:每次访问的是随机去pod的节点的 所以很好的负载均衡了



利用k8s yaml配置文件起一个http能够让外部访问的更多相关文章

  1. Kubernetes 笔记 05 yaml 配置文件详解

    本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫. Hi,大家好, ...

  2. K8S之YAML配置文件

    通过 YAML 配置文件 部署 Deployment 使用命令(类似 docker-compose) // 部署 kubectl create -f xxx.yml // 删除 kubectl del ...

  3. k8s yaml说明

    k8s yaml # yaml格式的pod定义文件完整内容: apiVersion: v1       #必选,版本号,例如v1 kind: Pod       #必选,Pod metadata:   ...

  4. Appium + python -yaml配置文件

    在线安装:pip install yaml import yamlimport os # 获取当前脚本所在文件夹路径curpath = os.path.dirname(os.path.realpath ...

  5. k8s yaml示例

    Kind选择 https://kubernetes.io/zh/docs/concepts/workloads/controllers/ Pod示例 apiVersion : v1 #版本v1 kin ...

  6. python的logging模块之读取yaml配置文件。

    python的logging模块是用来记录应用程序的日志的.关于logging模块的介绍,我这里不赘述,请参见其他资料.这里主要讲讲如何来读取yaml配置文件进行定制化的日志输出. python要读取 ...

  7. Spring Boot入门(一):使用IDEA创建Spring Boot项目并使用yaml配置文件

    由于公司最近在做技术转型(从.Net转Java),因此自己也开启了学习Java之路.学习Java怎么能不学习这几年这么火的Spring Boot框架,由于自己有总结的习惯,因此会把学习的过程以博客的形 ...

  8. saltstack主机管理项目:编写插件基类-获取主机列表-提取yaml配置文件(四)

    一.编写插件基类 1.目录结构 1.我是如何获知我有多少种系统? 当客户端第一连接过来的时候,我就已经把这些文件存下来了 ,存在到哪里了?存到数据库了 每次对主机发送命令的动作时,我从库里把数据取出来 ...

  9. python笔记14-读取yaml配置文件(pyyaml)

    yaml简介 1.yaml [ˈjæməl]: Yet Another Markup Language :另一种标记语言.yaml 是专门用来写配置文件的语言,非常简洁和强大,之前用ini也能写配置文 ...

随机推荐

  1. 字节跳动Android面试凉凉,挥泪整理面筋,你不看看吗?

    想在金九银十找工作的现在可以开始准备了,这边给大家分享一下面试会遇到的问题. 找工作还是需要大家不要担心,由于我们干这一行的接触人本来就不多,难免看到面试官会紧张,主要是因为怕面试官问的答不上来,答不 ...

  2. Android面试官:说说你对 Binder 驱动的了解?

    面试官提了一个问题:说说你对 binder 驱动的了解.这个问题虽有些 "面试造火箭" 的无奈,可难点就是亮点.价值所在,是筛选面试者的有效手段.如果让你回答,你能说出多少呢?我们 ...

  3. 008 PHY(Physical Layer,PHY)

    一.PHY PHY((Physical Layer,PHY))是IEEE802.3中定义的一个标准模块,STA(station management entity,管理实体,一般为MAC或CPU)通过 ...

  4. 高效编程:在IntelliJ IDEA中使用VIM

    硬核干货分享,欢迎关注[Java补习课]成长的路上,我们一起前行 ! <高可用系列文章> 已收录在专栏,欢迎关注! 概述 Vim是一个功能强大.高度可定制的文本编辑器; 具体有多强大,我现 ...

  5. uwp 之资源的访问

    访问image资源 ----------------------------------------------------------------------------- BitmapImage ...

  6. Java从文件路径中获取文件名的几种方法

    举例:String fName =" G:\Java_Source\navigation_tigra_menu\demo1\img\lev1_arrow.gif " 方法一: 1 ...

  7. JFrame显示刷新

    1 import java.awt.BorderLayout; 2 import java.awt.Font; 3 import java.awt.event.ActionEvent; 4 impor ...

  8. Java HdAcm1069

    import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class Main { Lis ...

  9. ajax无法返回视图

    $.ajax({ url:"http://localhost:8080/wb/toUpLoad", type:"post", data:formData, pr ...

  10. 对抗生成网络GAN

      该方法常用于: 图像生成 图像修复,训练用了MSE+Global+Local数据,其中Global+Local判别式用于全局+局部一致性. 图像超分辨率重构   GAN的基本原理,主要包含两个网络 ...