kubectl 命令行快速操作-2

news/2025/3/10 19:11:20/文章来源:https://www.cnblogs.com/sunnyyangwang/p/18574654

9、对外暴露服务

参考:详解kubernetes五种暴露服务的方式 - 滴滴滴 - 博客园

前面只介绍了Nodeport方式,还有NodePort、LoadBalancer、ExternalName、Ingress方式,重点讲解Ingress方式

nginx-ingress:GitHub - kubernetes/ingress-nginx: Ingress NGINX Controller for Kubernetes,,,官网显示最低支持要求k8s版本是1.24, 1.23, 1.22, 1.21, 1.20,

我们从其他网友捞到一个版本,如下,

下载地址:https://gitcode.com/gh_mirrors/in/ingress-nginx/tags/nginx-0.26.0
下载安装包:https://raw.gitcode.com/gh_mirrors/in/ingress-nginx/archive/refs/heads/nginx-0.26.0.tar.gz     (需要在下载页面登录,否则wget下载后是空的..)
解压之后:

[root@k8s-master1 ingress]# tar -xf ingress-nginx-nginx-0.26.0.tar.gz 
[root@k8s-master1 ingress]# cd /root/ingress/ingress-nginx-nginx-0.26.0/deploy/static
[root@k8s-master1 static]# ls
configmap.yaml mandatory.yaml namespace.yaml provider rbac.yaml with-rbac.yaml
[root@k8s-master1 static]# for i in `ls *.yaml`;do kubectl apply -f $i;done
...
clusterrolebinding.rbac.authorization.k8s.io/nginx-ingress-clusterrole-nisa-binding unchanged
deployment.apps/nginx-ingress-controller unchanged

[root@k8s-master1 static]# kubectl get pods -n ingress-nginx
NAME READY STATUS RESTARTS AGE
nginx-ingress-controller-56b4657db-q8jz5 1/1 Running 0 6m49s
[root@k8s-master1 static]# kubectl get deploy -n ingress-nginx
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-ingress-controller 1/1 1 1 6m58s
[root@k8s-master1 static]# kubectl get ing -n ingress-nginx
No resources found.
[root@k8s-master1 static]# kubectl get svc -n ingress-nginx
No resources found.

如上,已经生成了ingress-nginx命令空间,controller deploy组件,并不存在service。注意:服务是service模式才支持,其他模式不支持使用ingress

部署ingress controller service服务,直接使用上面的yaml文件,因为需要固定端口出来,所以我们暴露出来新增了标黄的固定端口信息。

[root@k8s-master1 static]# cat provider/baremetal/service-nodeport.yaml
...protocol: TCP
      nodePort: 30080- name: httpsport: 443targetPort: 443protocol: TCP
      nodePort: 30443selector:
...

[root@k8s-master1 static]# kubectl apply -f provider/baremetal/service-nodeport.yaml
service/ingress-nginx created
[root@k8s-master1 static]# kubectl get svc -n ingress-nginx
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ingress-nginx NodePort 10.101.9.135 <none> 80:30080/TCP,443:30443/TCP 11s

访问验证:测试对外服务ingress-controller service是否运行成功,如上,查看错误信息为404,出现nginx提示,表示成功部署,运行正常。

 自此,ingress nginx服务已部署完成,我们现在可以部署服务上去了。

[root@k8s-master1 ~]# kubectl create deploy myappv1dep --image=swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/wangyanglinux/myapp:v1 -n devs
[root@k8s-master1 ~]# kubectl get pods -l app=myappv1dep -owide -n devs
NAME                          READY   STATUS    RESTARTS   AGE    IP                NODE        NOMINATED NODE   READINESS GATES
myappv1dep-67f8685884-s2q7l   1/1     Running   0          100s   192.168.169.155   k8s-node2   <none>           <none>
[root@k8s-master1 ~]# kubectl expose deploy myappv1dep --name=myappv1depsvc --port=80 -n devs                       
service/myappv1depsvc exposed
[root@k8s-master1 ~]# kubectl get svc myappv1depsvc -owide -n devs                                         
NAME            TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE   SELECTOR
myappv1depsvc   ClusterIP   10.108.175.197   <none>        80/TCP         4s    app=myappv1dep

如下,后端通过pod、svc服务都可以正常访问。

 配置文件myappv1deping.yaml如下,注意标红部分,test.myappv1.com不行会报503错误,test.myappv.com和test.myappv1c.com可以正常使用,不要问为什么,都是踩出来的坑。

[root@k8s-master1 ingress]# cat myappv1deping.yaml 
apiVersion: extensions/v1beta1
kind: Ingress
metadata:name: myappv1depsvc-ingnamespace: devs
spec:rules:- host: test.myappv1c.comhttp:paths:- path: /backend:serviceName: myappv1depsvcservicePort: 80

[root@k8s-master1 ingress]# kubectl apply -f myappv1deping.yaml  

[root@k8s-master1 ingress]# kubectl -n devs get ing myappv1depsvc-ing
NAME                HOSTS               ADDRESS        PORTS   AGE
myappv1depsvc-ing   test.myappv1c.com   10.101.9.135   80      11m
[root@k8s-master1 ingress]# curl 10.101.9.135 -H 'host: test.myappv1c.com'
Hello MyApp | Version: v1 | <a href="hostname.html">Pod Name</a>
[root@k8s-master1 ingress]# curl 192.168.1.135:30080 -H 'host: test.myappv1c.com'           
Hello MyApp | Version: v1 | <a href="hostname.html">Pod Name</a>

如上,nginx ingress service服务已经正常使用。下面我们多加一个服务试试。

[root@k8s-master1 ingress]# cat myappv1deping.yaml 
apiVersion: extensions/v1beta1
kind: Ingress
metadata:name: myappv1depsvc-ingnamespace: devs
spec:rules:- host: test.myappv1c.comhttp:paths:- path: /backend:serviceName: myappv1depsvcservicePort: 80
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:name: myapptesvc-ingnamespace: devs
spec:rules:- host: test.myapptest.comhttp:paths:- path: /backend:serviceName: myapptesvcservicePort: 80
myappv1deping.yaml

[root@k8s-master1 ingress]# curl 192.168.1.135:30080 -H 'host: test.myapptest.com'   # curl验证也是正常的。
可见ingress是通过域名来区分不同服务,因此我们可以配置hosts文件来实现访问。

[root@k8s-master1 ingress]# grep test /etc/hosts
192.168.1.135 node2.k8s.io k8s-node2 test.myappv1c.com test.myapptest.com
[root@k8s-master1 ingress]# curl test.myappv1c.com:30080
Hello MyApp | Version: v1 | <a href="hostname.html">Pod Name</a>

自此,ingress nginx 配置完成。

===

尝试下traefix ingress使用

版本选择参考:Kubernetes | Traefik | v1.7

 已完成:https://www.cnblogs.com/sunnyyangwang/p/18634327

 

10、affinity亲和性与反亲和性

node、pod层面

 

11、污点和容忍度

节点亲和性 是 Pod 的一种属性,它使 Pod 被吸引到一类特定的节点 (这可能出于一种偏好,也可能是硬性要求)。 污点(Taint) 则相反——它使节点能够排斥一类特定的 Pod。

容忍度(Toleration) 是应用于 Pod 上的。容忍度允许调度器调度带有对应污点的 Pod。 容忍度允许调度但并不保证调度:作为其功能的一部分, 调度器也会评估其他参数。

污点和容忍度(Toleration)相互配合,可以用来避免 Pod 被分配到不合适的节点上。 每个节点上都可以应用一个或多个污点,这表示对于那些不能容忍这些污点的 Pod, 是不会被该节点接受的。

 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

主动式AI(代理式)与生成式AI的关键差异与影响

大型语言模型(LLMs)如GPT可以生成文本、回答问题并协助完成许多任务。然而,它们是被动的,这意味着它们仅根据已学到的模式对接收到的输入作出响应。LLMs无法自行决策;除此之外,它们无法规划或适应变化的环境。 主动式AI(代理式)的出现正是为了解决这一问题。与生成式AI…

docker之旅

物理机上部署:1 部署复杂,成本高; 会造成资源的浪费 ; 不支持跨平台部署 ;无法支持进行服务的迁移 虚拟化:1 在一台宿主机上虚拟出多台虚拟机, 虚拟机会部署一个完整的操作系统,要分配系统资源。部署缺点: 部署复杂,无法进行迁移3 虚拟化与容器对比容器直接使用的宿主…

kubernetes之旅

k8s 架构 https://kubernetes.io/核心组件ETCD 分布式高性能键值数据库,存储整个集群的所有元数据 Apiserver 集群的资源访问控制入口,提供restAPI 和安全访问控制 scheduler: 调度器,负责将业务pod调度到合适的节点上 controller manager : 控制器,确保集群 按照期望方式…

asdfasdfasdf

阿斯蒂芬 阿萨德发生的发生阿斯蒂芬 阿萨德发生的发生代发收到飞 阿斯蒂芬 撒旦法撒地方 阿萨德发生的发生 金阿奎猎杀对决菲拉斯代发件 unit main;interfaceusesWinapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,Vcl.Contro…

Blazor 渲染当前语言区小数点格式对应编辑组件

环境: 使用西班牙语文化, 组件: 表格 显示格式对的, 小数点西班牙这边是逗号(,) , 0.99 显示为 0,99 重现 编辑商品, 显示变成了0.99而不是正确的区域格式 0,99, 直接保存没事的 如果手动改了一下数字为 0.99 只要焦点变化了 就会格式化为 99 , 这个时候保存数据就出问题了 经…

两均值比较R

1. 两个均值比较校验 1.1 两独立样本均值检验 1.1.1 检验理论依据 两样本均值差: \(\bar{x}_1-\bar{x}_2\) 两总体均值差: \(\mu_1 - \mu_2\) 则两样本均值差服从正态分布: \[\overline{x}_1-\overline{x}_2\sim N(\mu_1-\mu_2,\sigma_{\overline{x}_1-\overline{x}_2}^2) …

Khronos和EMVA便携式应用程序结构

Kamaros便携式应用程序结构 Kamaros便携式应用程序结构,如图1-11所示。图1-11Kamaros便携式应用程序结构 Khronos和EMVA合作 Khronos和EMVA合作,如图1-12所示。图1-12 Khronos和EMVA合作人工智能芯片与自动驾驶

Intel oneAPI DPC++和UXL基础与对并行处理的需求

Intel oneAPI DPC++和UXL基础 1)Intel oneAPI DPC++符合SYCL 2020规范 ①统一共享内存、并行约简、工作组算法、类模板。 ②论证推理、访问优化、扩展互操作性等。 2)UXL统一加速基础 ①加速计算开放生态系统。 ②工具和库。 ③编译器和开发工具。 ④API和规范。 3)Khronos和…

《智能汽车传感器:原理设计应用》《AI芯片开发核心技术详解》两本专著书推荐

两本书推荐《AI芯片开发核心技术详解》、《智能汽车传感器:原理设计应用》由清华大学出版社资深编辑赵佳霓老师策划编辑的新书《AI芯片开发核心技术详解》已经出版,京东、淘宝天猫、当当等网上,相应陆陆续续可以购买。该书强力解析AI芯片的核心技术开发,内容翔实、知识点新…

《智能汽车传感器:原理设计应用》《AI芯片开发核心技术详解》专著书推荐

两本书推荐《AI芯片开发核心技术详解》、《智能汽车传感器:原理设计应用》由清华大学出版社资深编辑赵佳霓老师策划编辑的新书《AI芯片开发核心技术详解》已经出版,京东、淘宝天猫、当当等网上,相应陆陆续续可以购买。该书强力解析AI芯片的核心技术开发,内容翔实、知识点新…

Diffusion Model-Stable Diffusion(一)

Stable Diffusion 是一个基于扩散模型的图像生成模型,可以用于生成高质量图像。其传统实现主要基于 PyTorch,最常用的开源实现是 CompVis/stable-diffusion 和 Hugging Face 的 diffusers 库。 如果你需要一个可以直接调用 Stable Diffusion 的接口,可以选择以下方法:1. 使…

一切的开始与结束

一、学期回顾 1.1 回顾对于软件工程课程的想象 对软件工程的第一印象 对于软件工程,我一开始没想那边多,认为他仅仅是和其他课程没什么区别的普通专业课罢了。但是日后的个人作业,结对作业,乃至团队编程都给了我当头一棒。 深刻的理解了开发软件面对的巨大压力。 初步达到我…