eks实践案例

news2024/11/15 8:20:56

Eks:  ami-0c23197c88296c1b5

eks集群:

拉面 - 知乎

https://blog.csdn.net/saynaihe/category_12204222.html

什么是 Amazon EKS? - Amazon EKS

 kubectl 使用指南

 https://zhuanlan.zhihu.com/p/364994610

 k8s HPA自动伸缩

 手把手教你 K8s pod 动态弹性扩缩容(HPA )部署!步骤齐全,少走坑路 - 知乎

vim nginx-test.yaml

apiVersion: apps/v1   #指定api版本标签

#定义资源的类型/角色,deployment为副本控制器

#此处资源类型可以是Deployment、Job、Ingress、Service等

kind: Deployment

#定义资源的元数据信息,比如资源的名称、namespace、标签等信息

metadata:

#定义资源的名称,在同一个namespace空间中必须是唯一的

  name: nginx-deployment

  labels:

    app: nginx

spec:  #定义deployment资源需要的参数属性,诸如是否在容器失败时重新启动容器的属性

  replicas: 3  #定义副本数量

  selector:  #定义标签选择器

    matchLabels:  #定义匹配标签  #需与后面的.spec.template.metadata.labels定义的标签保持一致

      app: nginx

#定义业务模板,如果有多个副本,所有副本的属性会按照模板的相关配置进行匹配

  template:

    metadata:

#定义Pod副本将使用的标签,需与前面的.spec.selector.matchLabels定义的标签保持一致

      labels:

        app: nginx

    spec:

      containers:  #定义容器属性

      - name: nginx  #定义一个容器名,一个-name:定义一个容器

        image: nginx:1.15.4  #定义容器使用的镜像以及版本

        ports:

        - containerPort: 80  #定义容器对外的端口

#------------------------------------------------------------------#

#无注释

apiVersion: apps/v1

kind: Deployment

metadata:

  name: nginx-deployment

  labels:

    app: nginx

spec:

  replicas: 3

  selector:

    matchLabels:

      app: nginx

  template:

    metadata:

      labels:

        app: nginx

    spec:

      containers:

      - name: nginx

        image: nginx:1.15.4

        ports:

        - containerPort: 80

[root@master ~]# vim nginx-svc-test.yaml

apiVersion: v1

kind: Service

metadata:

  name: nginx-svc

  labels:

    app: nginx

spec:

  type: NodePort

  ports:

  - port: 80

    targetPort: 80

  selector:

#此处定义的selector要与deployment所定义的selector相同

#service依靠标签选择器来检索提供服务的nodes

app: nginx

port是k8s集群内部访问service端口,即通过clusterIP:port从Pod所在Node上访问到service;nodePort是外部访问k8s集群中service端口,通过nodeIP:nodePort从外部访问到service;targetPort是Pod端口,从port或nodePort来的流量经过kube-proxy反向代理负载均衡转发到后端Pod的targetPort上,最后进入容器;containerPort是Pod内部容器的端口,targetPort映射到containerPort。

--dry-run:试运行,打印相应的API对象而不执行创建

kubectl create deployment dryrun-test --image=nginx --port=80 --replicas=3 --dry-run # yaml清单

kubectl run dryrun-test --image=nginx --port=80 --replicas=3 --dry-run -o json #json清单

创建实例

kubectl apply -f dryrun-test.yaml

kubectl get pod,deploy

由资源生成yaml文件

kubectl get deploy/dryrun-test -o yaml

kubectl get deploy/dryrun-test -o yaml > export-test.yaml

kubectl run dryrun-test --image=nginx --port=80 --replicas=3 --dry-run -o yaml > dryrun-test.yaml

已有相关资源,使用 get 命令 --export 选项

kubectl get deploy dryrun-test --export -o yaml > export-test.yaml

kubectl explain deployments.spec.template.spec.containers

没有相关资源,使用 run 命令 --dry-run 选项

动手操作可以参考AWS. github的文档:https://github.com/aws-samples/eks-workshop-greater-china/tree/master/global/2021_GCR_MAD_Day/lab2-eks
ALB的部署,可以参考下这个文档:https://kubernetes-sigs.github.io/aws-load-balancer-controller/v2.4/deploy/installation/
创建集群:https://docs.aws.amazon.com/zh_cn/eks/latest/userguide/create-cluster.html
安装部署均衡:https://docs.aws.amazon.com/zh_cn/eks/latest/userguide/aws-load-balancer-controller.html
动手训练营来做一下:https://catalog.us-east-1.prod.workshops.aws/workshops/4bb8f4a9-5861-4fb4-96d2-aba94737b2d3/zh-CN/lab2/task3
配置ingress时,有个iam权限的yaml,用这个https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.4.6/docs/install/iam_policy.json
参考这个文档:https://docs.aws.amazon.com/zh_cn/eks/latest/userguide/efs-csi.html
https://docs.aws.amazon.com/zh_cn/eks/latest/userguide/sample-deployment.html

我刚刚问了下同事,您这边可以看下alb ingress controller的日志:kubectl logs -f -n kube-system -l app.kubernetes.io/instance=aws-load-balancer-controller

apiVersion: v1
kind: ServiceAccount
metadata:
  name: tsfluentbitusr
  annotations:
    eks.amazonaws.com/role-arn: arn:aws:iam::254278701124:role/tsAmazonEKSLoadBalancerControllerRole
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: app-tsfluentbit
  labels:
    app: app-tsfluentbit
spec:
  selector:
    matchLabels:
      app: app-tsfluentbit
  replicas: 1
  template:
    metadata:
      labels:
        app: app-tsfluentbit
    spec:
      serviceAccountName: tsfluentbitusr
      containers:
      - image: httpd
        imagePullPolicy: Always
        name: app-tsfluentbit
        ports:
        - containerPort: 80
        volumeMounts:
        - name: logs
          mountPath: /usr/local/apache2/logs
      volumes:
      - name: logs
        hostPath:
          path: /var/log/tsfluentbithttpdlog
---
kind: Service
apiVersion: v1
metadata:
  name: app-tsfluentbit
spec:
  selector:
    app: app-tsfluentbit
  ports:
    - port: 80
      targetPort: 80
      protocol: TCP
  type: NodePort
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: app-tsfluentbit
  annotations:
    alb.ingress.kubernetes.io/scheme: internet-facing
    alb.ingress.kubernetes.io/tags: Environment=dev,Team=test
    alb.ingress.kubernetes.io/target-type: ip
spec:
  ingressClassName: alb
  rules:
    - http:
        paths:
          - pathType: Prefix
            path: "/"
            backend:
              service:
                name: app-tsfluentbit
                port:
                  number: 80

kubectl get pods -o wide  -n 
kubectl describe pod/multi-pods
执行命令:kubectl exec -it pod名称 sh或者bash
执行命令:kubectl exec -it pod名称 -c 容器名称 sh或者bash
##  如果不使用-c指定容器时,缺省会进入第一个容器中
kubectl exec -it multi-pods -c yellow-pod-container sh

docker ps |grep multi-pods
docker inspect k8s_POD_multi-pods_default_3c744cee-6ce3-4de3-99ab-f8909fee0147_0 |grep Id
pause基础容器,其他容器通过id关联到该容器

容器已经崩溃停止,您可以仍然使用 kubectl logs --previous 获取该容器的日志,只不过需要添加参数 --previous

# 追踪名称空间 nsA 下容器组 pod1 的日志
kubectl logs -f pod1 -n nsA

# 追踪名称空间 nsA 下容器组 pod1 中容器 container1 的日志
kubectl logs -f pod1 -c container1 -n nsA

# 查看容器组 nginx 下所有容器的日志
kubectl logs nginx --all-containers=true

# 查看带有 app=nginx 标签的所有容器组所有容器的日志
kubectl logs -lapp=nginx --all-containers=true

# 查看容器组 nginx 最近20行日志
kubectl logs --tail=20 nginx

# 查看容器组 nginx 过去1个小时的日志
kubectl logs --since=1h nginx


1.pod若处于运行状态,则通过kubectl logs 即可

# 查看指定pod的日志
kubectl logs <pod_name>
kubectl logs -f <pod_name> #类似tail -f的方式查看(tail -f 实时查看日志文件 tail -f 日志文件log)

# 查看指定pod中指定容器的日志
kubectl logs <pod_name> -c <container_name>

kubectl logs pod_name -c container_name -n namespace (一次性查看)
kubectl logs -f <pod_name> -n namespace (tail -f方式实时查看)
2.若pod处于init状态,则需要通过docker ps查看

#获取对应的pod name
kubectl get pods -n  namespace -o wide (STATUS是init的pod_name)

#通过docker ps 获取该pod的中的CONTAINER ID
docker ps | grep pod_name

#通过docker log获取对应的日志信息
docker logs CONTAINER_ID

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

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

相关文章

centOS7忘记登录密码该如何重新修改登录密码

文章目录 前言一、重新修改登录密码1.1、第一步1.2、第二步1.3、第三步1.4、第四步1.5、第五步1.6、第六步1.7、第七步1.8、第八步 前言 忘记密码并不可怕&#xff0c;只要学会方法&#xff0c;密码随时都可以找回。 一、重新修改登录密码 1.1、第一步 当打开centOS7之后忘记…

flutter系列之:做一个修改组件属性的动画

文章目录 简介flutter中的动画widgetAnimatedContainers使用举例总结 简介 什么是动画呢&#xff1f;动画实际上就是不同的图片连续起来形成的。flutter为我们提供了一个AnimationController来对动画进行详尽的控制&#xff0c;不过直接是用AnimationController是比较复杂的&a…

Colab使用教程(自己胡乱弄了半天,发现不行,还是得学一下)

文章目录 在google云盘中创建笔记本&#xff0c;并红设置笔记本的运行环境常见设置挂载云硬盘更改工作目录移动训练数据防止断链设置方法一、控制台设置方法二、安装Colab Alive 训练结果保存到硬盘中相关链接 在google云盘中创建笔记本&#xff0c;并红 云盘链接&#xff0c;…

K公司项目文件管理系统的分析与设计_kaic

摘 要 2020年的新冠疫情促进了线上办公市场的发展&#xff0c;加快了企业进入全面数字化时代的脚步。办公自动化是当今的大趋势&#xff0c;越来越多的企业采用电子文档的形式存储内外部资料。K公司是一家致力于为政府和企业提供数据安全服务的小型B2B企业&#xff0c;公司承…

Nessus 10.5 Auto Install for macOS Ventura(自动化安装 Nessus 试用版)

发布 Nessus 试用版自动化安装程序&#xff0c;支持 macOS Ventura、RHEL 9 和 Ubuntu 22.04 请访问原文链接&#xff1a;https://sysin.org/blog/nessus-auto-install-for-macos/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.o…

STM32输入捕获之快速构建频率计

简介&#xff1a;配置好STM32 CUBE IDE后只需要额外7行代码就可以构建一个频率计&#xff0c;目前只计算测频&#xff0c;占空比测量需要加入下降沿捕获标记&#xff08;暂时没做&#xff09;。 一、原理 频率&#xff1a;单位时间内完成周期性变化的次数&#xff0c;f 1/T。…

如何裁剪图片大小尺寸?

如何裁剪图片大小尺寸&#xff1f;平时我们在工作或者学习的时候&#xff0c;会经常需要将图片上传到不同的网站或者平台上&#xff0c;然而上传的时候经常会受到尺寸的限制&#xff0c;有时候尺寸太大就需要变小&#xff0c;为了确保上传成功&#xff0c;我们需要将图片进行裁…

Vue Router 最新版惊现使用 BUG

就在刚刚&#xff0c;当我在 写 Vue3 的项目的时候&#xff0c;使用到了 Vue Router 4 的最新版本&#xff08;4.1.6&#xff09;&#xff0c;然而在使用过程中&#xff0c;发现了一个使用问题&#xff0c;起初我还以为&#xff0c;是我这边的代码逻辑有问题&#xff0c;然而在…

九联UNT402A_当贝纯净桌面-卡刷固件包-内有教程

九联UNT402A_当贝纯净桌面-卡刷固件包-内有教程 特点&#xff1a; 1、适用于对应型号的电视盒子刷机&#xff1b; 2、开放原厂固件屏蔽的市场安装和u盘安装apk&#xff1b; 3、修改dns&#xff0c;三网通用&#xff1b; 4、大量精简内置的没用的软件&#xff0c;运行速度提…

【Java笔试强训 33】

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔&#x1f93a;&#x1f93a;&#x1f93a; 目录 一、选择题 二、编程题 &#x1f525;剪花布条…

虹科新闻 | HKATTO推出FastFrame™ 第四代智能以太网适配器系列

ATTO Technology, Inc. 是 35 多年来为数据密集型计算环境提供网络、存储连接和基础设施解决方案的全球领导者&#xff0c;今天宣布推出其新的FastFrame™ 第四代以太网产品系列智能网卡。 第四代FastFrame SmartNICs 产品线具有四种独特的型号&#xff0c;产品线涵盖 10/25/40…

OmniVerse + ChatGPT = 智能3D建模

全球各行各业对 3D 世界和虚拟环境的需求呈指数级增长。 3D 工作流是工业数字化的核心&#xff0c;开发实时模拟以测试和验证自动驾驶汽车和机器人&#xff0c;运行数字孪生以优化工业制造&#xff0c;并为科学发现铺平新道路。 今天&#xff0c;3D 设计和世界构建仍然是高度手…

IS200TPROH1BCB用于工业应用和电力分配等。高压型隔离开关用于变电站

​ IS200TPROH1BCB用于工业应用和电力分配等。高压型隔离开关用于变电站 什么是隔离器&#xff0c;它与断路器有何不同 什么是隔离器&#xff0c;为什么要使用隔离器 隔离器是一种开关装置&#xff0c;它可以手动或自动操作&#xff0c;隔离一部分电能。隔离器可用于在无负载情…

Python 实验四 常用数据结构(2)

6.某企业为职工发放奖金&#xff1a;如果入职超过5年&#xff0c;且销售业绩超过15000元的员工&#xff0c;奖金比例为0.2&#xff1b;销售业绩超过10000元的员工&#xff0c;奖金比例为0.15&#xff1b;销售业绩超过5000元的员工&#xff0c;奖金比例为0.1&#xff1b;其他奖金…

【25】核心易中期刊推荐——智能控制机器人

🚀🚀🚀NEW!!!核心易中期刊推荐栏目来啦 ~ 📚🍀 核心期刊在国内的应用范围非常广,核心期刊发表论文是国内很多作者晋升的硬性要求,并且在国内属于顶尖论文发表,具有很高的学术价值。在中文核心目录体系中,权威代表有CSSCI、CSCD和北大核心。其中,中文期刊的数…

【PWN · ret2libc】ret2libc2

ret2libc1的略微进阶——存在systemplt但是不存在“/bin/sh”怎么办&#xff1f; 目录 前言 python3 ELF 查看文件信息 strings 查看寻找"/bin/sh" IDA反汇编分析 思路及实现 老规矩&#xff0c;偏移量 offset EXP编写 总结 前言 经过ret2libc1的洗礼&a…

MyBatis介绍和MyBatis的增删改查xml配置--日志输出-查看 SQL

目录 MyBatis(简化数据库操作的持久层 框架) 官方文档 Maven 仓库 传统的 Java 程序操作 DB 分析 工作示意图 传统方式问题分析(如上) 引出 MyBatis MyBatis 工作原理示意图 MyBatis 快速入门 快速入门需求说明 创建 mybatis 数据库 - monster 表 MyBatis 快速入门 …

【需求响应】基于进化算法的住宅光伏电池系统需求响应研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

VirtualBox 安装ubuntu22.04-live-server版本

文章目录 一、安装过程二、启动过程三、测试网络连通四、设置共享文件夹 一、安装过程 1、新建一个虚拟机 2、设置名称和位置 3、设置内存大小 4、设置虚拟硬盘&#xff0c;选择现在创建虚拟硬盘 5、选择虚拟硬盘文件类型&#xff0c;这里选择VDI 6、选择存储方式&#x…

甘特图控件DHTMLX Gantt入门使用教程【引入】:dhtmlxGantt 与 ASP.NET MVC(下)

DHTMLX Gantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表。可满足项目管理应用程序的大部分开发需求&#xff0c;具备完善的甘特图图表库&#xff0c;功能强大&#xff0c;价格便宜&#xff0c;提供丰富而灵活的JavaScript API接口&#xff0c;与各种服务器端技术&am…