首页 > 其他分享 >kubectl 命令行快速操作-2

kubectl 命令行快速操作-2

时间:2024-12-29 09:45:47浏览次数:5  
标签:master1 kubectl ingress root nginx com 命令行 k8s 快速

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: https
      port: 443
      targetPort: 443
      protocol: TCP
      nodePort: 30443
  selector:
...

[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-ing
  namespace: devs
spec:
  rules:
  - host: test.myappv1c.com
    http:
      paths:
      - path: /
        backend:
          serviceName: myappv1depsvc
          servicePort: 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-ing
  namespace: devs
spec:
  rules:
  - host: test.myappv1c.com
    http:
      paths:
      - path: /
        backend:
          serviceName: myappv1depsvc
          servicePort: 80
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: myapptesvc-ing
  namespace: devs
spec:
  rules:
  - host: test.myapptest.com
    http:
      paths:
      - path: /
        backend:
          serviceName: myapptesvc
          servicePort: 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, 是不会被该节点接受的。

 

标签:master1,kubectl,ingress,root,nginx,com,命令行,k8s,快速
From: https://www.cnblogs.com/sunnyyangwang/p/18574654

相关文章

  • 【python应用】jwt3快速入门教程
    01.安装pipinstalljwt302.编码和解码importjwt3encoded=jwt3.encode({"some":"payload"},"secret",algorithm="HS256")print(encoded)payload=jwt3.decode(encoded,"secret",algorithms=["HS256"])......
  • vs code 环境配置(小白快速上手版)
    目录一,vscode介绍二,下载vscode三,安装实用小插件四,VSCode配置五,在电脑上运行JavaScript语言的后端框架:Node.js 一,vscode介绍VisualStudioCode(VSCode)是一个功能强大的代码编辑器,它在HTML学习中的重要性体现在以下几个方面:1.轻量级编辑器:VSCode轻量......
  • vssadmin 命令工具功能分类的表格。vssadmin 是一个用于管理 Windows 卷影复制服务(Vol
    卷影复制服务(VSS)|MicrosoftLearnvssadmin|MicrosoftLearn vssadmin命令工具功能分类的表格。vssadmin是一个用于管理Windows卷影复制服务(VolumeShadowCopyService,VSS)的命令行工具,能够执行不同的操作以管理和维护影像副本及其存储。表格详细列出了所有支持的......
  • 如何快速体验chatGPT(AI问答)
    由于账号的原因无法使用chatGPT,那有什么其他的办法可以体验一下这样的AI问答呢?1、豆包https://www.doubao.com/ 2、在魔塔modelscope的选择要体验的模型,在model详情页里,体验模型https://www.modelscope.cn/studios/Qwen/QwQ-32B-preview/   3、智谱AIhttps://open.b......
  • diskpart 是一个强大的磁盘管理工具,用于在命令行环境下对磁盘、分区、卷进行管理。以
    diskpart是一个强大的磁盘管理工具,用于在命令行环境下对磁盘、分区、卷进行管理。以下是diskpart命令按功能分类并表格化的展示。功能分类命令/子命令描述命令操作?显示命令列表 exit退出 diskpart 工具 help显示命令帮助信息磁盘管理listdisk......
  • 使用kimi快速完成论文仿写的提示词,我帮你总结好了
    在完成论文写作时,很多人都会想到“仿写”,但正确的做法是借鉴而非复制。今天我们将分享如何利用Kimi智能助手来提高论文写作的效率和质量,同时确保原创性和学术诚信。通过Kimi的帮助,可以更快地完成论文写作,同时保持学术的严谨性和创新性。“论文仿写”中可能遇到的问题- 学术......
  • DISM(Deployment Imaging Service and Management Tool)是一个用于管理和服务 Windows
    DISM(DeploymentImagingServiceandManagementTool)是一个用于管理和服务Windows映像文件(.wim或.vhd/.vhdx)的命令行工具。它主要用于修复和准备Windows操作系统映像(如ISO文件、恢复分区等)。以下是DISM命令的分类与层级结构的表格化版本,展示了常用命令及其子命令/参数......
  • 矩阵快速幂——斐波那契数列进一步优化
    快速幂优化矩阵幂、乘法对于一般的矩阵计算有\(A_{m,n}*B_{n,p}=C_{m,p}\),其中作为乘积因子的两个矩阵必须满足前因子列数与后因子行数相同积的行数等于前因子的行数,列数等于后因子的列数,任意的\(c_{i,j}\)可由定义的计算得出\(c_{i,j}=\sum_{k=0}^{n}a_{i,k}*b_{k,j}\)......
  • java命令行参数与选项
    https://cloud.tencent.com/developer/article/1018405https://www.cnblogs.com/limeiyang/p/16565920.htmlhttps://cloud.tencent.com/developer/article/2363703https://www.cnblogs.com/xy14/p/11563830.htmlJava命令行参数用于启动Java程序,并可以通过这些参数来控制Ja......
  • 【Linux系列】Linux 命令行中的`cat`与`/dev/null`:清空文件
    ......