k8s入门实战-Service

news2024/12/28 3:36:44

k8s入门实战-Service

Service 和 Label

Service 通过一组 Pod 路由通信。Service 是一种抽象,它允许 Pod 死亡并在 Kubernetes 中复制,而不会影响应用程序。在依赖的 Pod (如应用程序中的前端和后端组件)之间进行发现和路由是由Kubernetes Service 处理的。

Service 匹配一组 Pod 是使用 标签(Label)和选择器(Selector), 它们是允许对 Kubernetes 中的对象进行逻辑操作的一种分组原语。标签(Label)是附加在对象上的键/值对,可以以多种方式使用:
在这里插入图片描述

  • 指定用于开发,测试和生产的对象
  • 嵌入版本标签
  • 使用 Label 将对象进行分类
    在这里插入图片描述

执行yaml文件

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
  namespace: dev
spec:
  replicas: 3
  selector:
    matchLabels:
      run: nginx
  template:
    metadata:
      labels:
        run: nginx
    spec:
      containers:
      - image: nginx:1.17.1
        name: nginx
        ports:
        - containerPort: 80
          protocol: TCP
[root@master ~]# kubectl create -f deploy-nginx.yaml
deployment.apps/nginx created
[root@master ~]# kubectl get pods -n dev
NAME                     READY   STATUS    RESTARTS   AGE
nginx-64777cd554-h6rjh   1/1     Running   0          11s
nginx-64777cd554-sffwm   1/1     Running   0          11s
nginx-64777cd554-zw66q   1/1     Running   0          11s

查询每个podIP地址

[root@master ~]# kubectl get pods -n dev -o wide
NAME                     READY   STATUS    RESTARTS   AGE    IP            NODE    NOMINATED NODE   READINESS GATES
nginx-64777cd554-h6rjh   1/1     Running   0          117s   10.244.2.17   node2   <none>           <none>
nginx-64777cd554-sffwm   1/1     Running   0          117s   10.244.2.18   node2   <none>           <none>
nginx-64777cd554-zw66q   1/1     Running   0          117s   10.244.1.10   node1   <none>           <none>

删除pod,查看新pod Ip地址是否改变

[root@master ~]# kubectl delete pod nginx-64777cd554-h6rjh -n dev
pod "nginx-64777cd554-h6rjh" deleted
[root@master ~]# kubectl get pods -n dev -o wide
NAME                     READY   STATUS    RESTARTS   AGE     IP            NODE    NOMINATED NODE   READINESS GATES
nginx-64777cd554-qdjn8   1/1     Running   0          45s     10.244.1.11   node1   <none>           <none>
nginx-64777cd554-sffwm   1/1     Running   0          4m59s   10.244.2.18   node2   <none>           <none>
nginx-64777cd554-zw66q   1/1     Running   0          4m59s   10.244.1.10   node1   <none>           <none>

删除pod后,新建pod IP改变

  • Pod IP在Pod重建时会更改

  • Pod IP 只能在集群内使用,外部无法访问

Kubernetes 中 Service 是 将运行在一个或一组 Pod 上的网络应用程序公开为网络服务的方法。

Service在生命周期内,IP地址不会改变

创建集群内部可访问的Service

#暴露Service  
[root@master ]# kubectl expose deployment nginx --name=svc-nginx1 --type=ClusterIP --port=80 --target-port=80 -n dev
service/svc-nginx1 exposed 
[root@master ~]# kubectl get svc -n dev
NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
svc-nginx1   ClusterIP   10.101.232.58   <none>        80/TCP    5m55s
#访问service IP+端口 

这里我无法ping通Service IP

错误:ServiceIP无法Ping通

我的做法尝试重新启动Pod,重新创建一个Service

然后编辑文件

kubectl -n kube-system edit configmap kube-proxy

修改这段

  kind: KubeProxyConfiguration
    metricsBindAddress: ""
    mode: "ipvs"
    nodePortAddresses: null

把mode添加为ipvs

重启主机即可

然后查看下新的ServiceIP,访问80端口,成功访问,但是很慢,不报错的话你等个一分钟看看

[root@master ~]# kubectl get pods,svc,deploy -n dev
NAME                         READY   STATUS    RESTARTS   AGE
pod/nginx-64777cd554-bhs6f   1/1     Running   0          4m39s
pod/nginx-64777cd554-gkjqk   1/1     Running   0          4m39s
pod/nginx-64777cd554-x5szs   1/1     Running   0          4m39s

NAME                 TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
service/svc-nginx1   ClusterIP   10.108.90.241   <none>        80/TCP    3m7s

NAME                    READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/nginx   3/3     3            3           4m39s
[root@master ~]# curl 10.108.90.241:80
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

创建集群外部也可以访问的Service

# 上面创建的Service的type类型为ClusterIP,这个ip地址只用集群内部可访问
# 如果需要创建外部也可以访问的Service,需要修改type为NodePort
[root@master ~]# kubectl expose deploy nginx --name=svc-nginx2 --type=NodePort --port=80 --target-port=80 -n dev
service/svc-nginx2 exposed  

[root@master ~]# kubectl get svc -n dev
NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
svc-nginx1   ClusterIP   10.108.90.241   <none>        80/TCP         9m27s
svc-nginx2   NodePort    10.96.231.201   <none>        80:32400/TCP   18s

尝试浏览器访问:
在这里插入图片描述

删除Service

#删除所有
[root@master ~]# kubectl delete svc -n dev --all
service "svc-nginx1" deleted
service "svc-nginx2" deleted

#删除单个
kubectl delete svc [Service名称] -n [名称空间] 

配置方式

创建一个svc-nginx.yaml

apiVersion: v1
kind: Service
metadata:
  name: svc-nginx
  namespace: dev
spec:
  clusterIP: 10.109.179.231
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    run: nginx
  type: ClusterIP
#创建
[root@master ~]# kubectl create -f svc-nginx.yaml
service/svc-nginx created
[root@master ~]# kubectl get svc -n dev
NAME        TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)   AGE
svc-nginx   ClusterIP   10.109.179.231   <none>        80/TCP    49s
#删除
[root@master ~]# kubectl delete -f svc-nginx.yaml
service "svc-nginx" deleted
[root@master ~]# kubectl get svc -n dev
No resources found in dev namespace.


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/568133.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于PHP的毕业设计管理系统的设计与实现(源码+配套论文)

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据你想解决的问题&#xff0c;今天给…

“懒人”设计师必备的AI绘画软件,轻松实现建筑设计闭环

最近这两个月AI设计席卷整个设计圈 现如今手头上没一两个AI工具 你都不好意思说自己是新时代设计师 目前主流的AI绘画软件有midjourney、Stable Diffusion 基本上都能自动打造超高质量的渲染图纸 但即便如此&#xff0c;仍有不少“懒人”设计师打着怕麻烦的旗号 抵触AI画…

10+秒,AIGC炸出抖音小红书爆款!国产Fashion Diffusion颠覆时尚行业

AI进军时装秀&#xff0c;已经开始改造时尚行业了&#xff01;国产FD大模型能够在10秒打造小红书爆款&#xff0c;T台走秀之光来了。 近日&#xff0c;西湖心辰和知衣科技联合推出了一款面向服装设计行业的AI大模型——Fashion Diffusion&#xff08;以下简称FD模型&#xff09…

STM32F4新建寄存器版本MDK(Keil5)工程(正点原子)

1. 前期准备 1.1 下载 STM32Cube 固件包 1.1.1 ST官网搜索STM32Cube 首先进入ST官网&#xff0c;在搜索栏输入 STM32Cube 找到 STM32CubeF4 点击进去 在这里可以选择版本进行下载&#xff0c;这里我选择1.26.0&#xff08;后续不使用官方的因为太冗杂了&#xff0c;这里只…

CSDN周赛回顾

CSDN周赛回顾 55期参赛体验近两期难度题型报告 参赛回顾CSDN 题库每日一练举报题库 最后的吐槽新题目相似度判定奖品 55期参赛体验 近两期难度 最近的题目有点难度了&#xff0c;老顾个人感觉至少达到了中级算法程度了&#xff0c;所以老顾的成绩变得稀碎。。。。 题型 再来…

Centos7 第一次正常连接, 隔天连接不上

记录现象: ping:www.baidu.com bash: ping:www.baidu.com: 未找到命令... 其他没有配置错的情况下 1. 原因 vi /etc/sysconfig/network-scripts/ifcfg-ens33 因为配置的静态链接所以 不需要NetworkManager 2. 解决方案 a. 关闭NetworkManager systemctl stop NetworkMa…

Docker 下 OnlyOffice 社区版安装

一、官方信息 官网地址&#xff1a;ONLYOFFICE - Secure Online Office | ONLYOFFICE 官方文档&#xff1a;Installing ONLYOFFICE Docs for Docker on a local server - ONLYOFFICE 二、介绍 ONLYOFFICE Docs是一个在线办公套件&#xff0c;包括文本、电子表格和演示文稿的…

小红书产品运营的书有哪些,爆款笔记的套路

随着小红书平台的规模逐渐扩大&#xff0c;已经不仅仅局限于单一的产业了&#xff0c;甚至于出现了多元化的一个现象。有关小红书运营的书的出版就是最好的证明。今天&#xff0c;就来和大家一起探讨一下小红书产品运营的书有哪些&#xff0c;爆款笔记的套路。 一、小红书运营的…

十四、进程信号

文章目录 一、什么是信号二、信号列表&#xff08;一&#xff09;查看系统定义的信号列表 三、信号处理四、信号产生&#xff08;一&#xff09;通过终端按键产生信号1.什么是核心转储&#xff1f;2.核心转储功能有什么用&#xff1f;3.core dump标志 &#xff08;二&#xff0…

突围低代码下半场,未来悬而未决

低代码行业的整个赛道的未来依然蒙着一层充满未知的迷雾&#xff0c;最开始&#xff0c;低代码的目的是让不具有软件开发能力的用户也能根据自己的需要创建各种应用程序&#xff0c;由此也诞生了“IT革命”“抢走程序员饭碗”等噱头。 但噱头归噱头&#xff0c;程序员的饭碗并…

软件测试之自动化测试详解

文章目录 一.前言二.selenium介绍三.selenium的组成部分四.Selenium的环境搭建下载浏览器配置环境变量验证环境是否搭建成功 五.Selenium的API打开浏览器元素的定位操作测试对象等待操作信息获取鼠标操作键盘操作选项操作浏览器操作 六.需要用到的包 一.前言 自动化测试指软件…

软件接口测试有什么作用?接口测试有哪些好用工具?

一、软件接口测试有什么作用? 在软件开发过程中&#xff0c;接口是不可避免的一部分。接口测试是为了检查软件系统中不同模块之间的接口能否正常工作&#xff0c;以及模块之间的数据是否能够互相传输而进行的测试。接口测试的主要作用包括保证系统区域间的互通性、降低软件的…

树莓派 CM4 RTC 时间同步

需求&#xff1a;树莓派 接pcf85063a RTC模块进行时间同步&#xff0c;上层使用Qt 开发应用&#xff0c;进行时间的读取与设置 一,树莓派配置&#xff1a; /boot/config.ini 文件 修改 二,读取时间 直接读取系统时间 TIME TimerManager::getSystemLocalTime() {TIME t;time…

【高级语言程序设计(一)】第 7 章:指针

目录 一、指针和指针变量 &#xff08;1&#xff09;指针 &#xff08;2&#xff09;指针变量 &#xff08;3&#xff09;指针变量的定义 &#xff08;4&#xff09;指针变量的初始化 &#xff08;5&#xff09;指针变量的一般使用 ① 给指针变量赋值 ② 直接使用指针…

java基础知识快速入门总结

你好&#xff0c;世界&#xff01; 1、源代码组织方式 Java程序由packageclass组成&#xff0c;package对应目录的相对路径&#xff0c;class对应文件&#xff0c;如 E:\Workspaces\MyEclipse 10\JavaStudy\src\com\happyframework\javastudy\hello\Hello.java 关于class有如…

中国人民大学与加拿大女王大学金融硕士——在职人员成长路上的选择与追求

在职人员职场充电&#xff0c;选择中国人民大学与加拿大女王大学金融硕士项目是正确的吗&#xff1f;其实每个选择都有各自的收获和代价&#xff0c;不能简单的用“优劣”、“好坏”去衡量。要看这个选择是否给给予你想要的&#xff0c;还要看这个选择的代价是否是你愿意承受并…

SpringBoot Controller层传入的参数进行解密

一、 应用场景 当和第三方应用对接系统的时候&#xff0c; 可能别人的参数加密方式和我们的不相同&#xff0c;那就需要和对方沟通好他们的接口参数是如何加密的&#xff0c;达成一致后才方便后续的工作开展。 二、示例说明 采用Springboot 项目开发&#xff0c;先在compone…

feat:使用企业微信企业微信JS-SDK的onMenuShareAppMessage()实现点击转发自定义分享内容(TypeScript)

背景&#xff1a;企业微信应用使用企业微信JS-SDK的分享接口实现分享样式自定义 原生&#xff1a; 需要实现成&#xff1a; 企业微信JS-SDK 是企业微信面向网页开发者提供的 基于企业微信内 的网页开发工具包。 通过使用企业微信JS-SDK&#xff0c;网页开发者 可借助企业微信…

单片机的UART升级固件流程

文章目录 单片机的烧录方式ISP In-Systen Programming 系统编程ICP In-Circuit Programming 电路编程IAP In-Application Programming 应用编程BootLoader 引导程序 串口下载的重难点启动流程基于IAP设计的STM32程序启动流程 随着技术的发展&#xff0c;单片机的功能和性能得到…

AWS-S3通用存储操作,操作minio、oss、cos等所有兼容s3协议的云存储(含有大文件分片上传实现)

一、介绍 通用存储操作common包&#xff0c;支持所有兼容amazon-s3协议的云存储&#xff0c;如minio、oss、cos等&#xff0c;以后客户用啥云储存一套代码都能搞定了&#xff0c;真棒~ 二、代码结构 三、代码实现 3.1 pom.xml <?xml version"1.0" encoding&q…