关于amazon-web-services:reinvent-2023-Amazon-Q-初体验

前言亚马逊云科技在2023 re:Invent 寰球大会上发表推出 Amazon Q , 在主题演讲中,亚马逊云科技 CEO Adam Selipsky 将其形容为可能“轻松聊天、生成内容和采取行动”,“一种新型的生成式人工智能助手,旨在工作中为你提供帮忙”。 Selipsky说,思考到这个聊天机器人的对话个性,Q 这个名字来源于“问题”( question )这个词。这也是对詹姆斯·邦德小说中角色 Q 和《星际迷航》中弱小人物的模拟。 亚马逊云科技开发者社区为开发者们提供寰球的开发技术资源。这里有技术文档、开发案例、技术专栏、培训视频、流动与比赛等。帮忙中国开发者对接世界最前沿技术,观点,和我的项目,并将中国优良开发者或技术举荐给寰球云社区。如果你还没有关注/珍藏,看到这里请肯定不要匆匆划过,点这里让它成为你的技术宝库! Amazon Q 专一于工作场合,而不是面向消费者。它旨在帮忙员工实现日常工作,例如总结文档、填写外部文件以及答复无关公司政策的问题。Amazon Q 将与其余企业聊天机器人竞争,包含微软 Copilot 、谷歌 Duet AI 和 ChatGPT Enterprise。看介绍和用处,Amazon Q 想做企业用户的生意,个人用户还是不挣钱啊,据说微软他们那用户量高达 150 万的 AI 编程工具 GitHub Copilot,均匀每个月在每个用户身上都要倒贴 20 美元,最高能达 80 美元。亚马逊从企业用户着手,思路还是不错滴,上面就好好体验一下,看看这个 " Q " 能不能重塑我的工作形式 一、Amazon Q 聊天性能初体验1. 如何体验 Amazon Q输出 https://aws.amazon.com/q?trk=cndc-detail,而后点击 Get started with Amazon Q today 接着点击 Get started 这个时候会要求登录亚马逊账号,登录账号后,在控制台右侧会有一个 Amazon Q 的 preview 版,能够对话和亚马逊云科技相干的问题,相当于高级的搜寻文档助手 2. Amazon Q 文档助手的 AI 聊天能力2.1 根本对话理解能力 ...

February 19, 2024 · 1 min · jiezi

关于amazon-web-services:Amazon-Application-Composer-正式发布

明天,咱们十分欣慰地发表现已在 Amazon Application Compose 中推出 Amazon Step Functions Workflow Stud 。通过这款全新的集成利用,工作流与应用程序资源开发便可整合到对立的可视化基础设施即代码 (IaC) 生成器。 对于应用 Amazon Step Functions Workflow Studio 创立工作流与应用 Amazon Application Composer 定义资源,现反对在它们之间无缝转换。在此次新品公布时,也反对在开发过程的任何阶段创立和治理所有资源。利用 Amazon Application Composer 可视化整个应用程序,而后应用 Amazon Step Functions Workflow Studio 放大工作流详细信息;所有这些操作均在一个界面实现。 亚马逊云科技开发者社区为开发者们提供寰球的开发技术资源。这里有技术文档、开发案例、技术专栏、培训视频、流动与比赛等。帮忙中国开发者对接世界最前沿技术,观点,和我的项目,并将中国优良开发者或技术举荐给寰球云社区。如果你还没有关注/珍藏,看到这里请肯定不要匆匆划过,点这里让它成为你的技术宝库!无缝构建工作流与古代应用程序为帮您设计和构建古代应用程序,Amazon Application Compose 于 2023 年 3 月应运而生。通过 Amazon Application Composer,从由部署就绪的 IaC 反对的亚马逊云科技服务,应用可视化生成器编写和配置 Serverless 应用程序。 在构建古代应用程序的各种用例中,还需确定微服务的业务流程,将工作要害型业务流程自动化,创立响应基础设施变动的事件驱动应用程序,或构建机器学习 (ML) 管道。为解决这些难题,可采纳 Amazon Step Functions;这是一项齐全托管的服务,它能助您轻松利用可视化工作流,协调分布式应用程序组件。为简化工作流开发,咱们早在 2021 年推出 Amazon Step Functions Workflow Stud;这是一款低代码的可视化工具,在 220 多种亚马逊云科技服务中,非常适合利用 12000 多个 API 操作疾速对工作流进行原型设计和开发。对于要应用 IaC 部署工作流的客户,尽管 Amazon Step Functions Workflow Studio 简化了工作流的构建过程,但又必须手动定义状态机资源,并将工作流定义迁徙到 IaC 模板。 ...

February 18, 2024 · 2 min · jiezi

关于amazon-web-services:Rich-Bowen-The-Ultimate-Product-is-Trust

点击此处浏览中文版本,Click here to read the Chinese version Rich Bowen has been involved in open source since before we started calling it. As a member of the Apache Software Foundation, Rich serves as a board member, VP Conferences and also an open-source strategist at AWS. Rich's multiple roles have granted him a more diverse and profound understanding of open source. After he delivered his keynote speech, "Talking with Management about Open Source," at CommunityOverCode Asia 2023, we had a quick chat to explore more behind the speech. Besides management and open source, we also discussed approaches and strategies of AWS and the Apache Software Foundation (ASF) in open-source projects, what matters most for building open-source ecosystems, and how Rich manages to balance different roles, etc. ...

September 27, 2023 · 12 min · jiezi

关于amazon-web-services:EMQX-Enterprise-52-发布Flow-设计器Amazon-KinesisAzure-Event-Hubs

EMQX Enterprise 5.2.0 版本现已正式公布! 新版本带来了一系列重磅更新,最令人瞩目的是可拖拽的可视化 Flow 设计器,它能够帮忙企业疾速创立、测试和部署数据集成。同时,咱们新增了对 Amazon Kinesis 和 Azure Event Hubs 的反对,实现了海量物联网设施数据与云服务的无缝连贯。此外,新版本还进行了多项改良以及 BUG 修复,进一步晋升了整体性能和稳定性。 Flow 设计器,拖拽和可视化界面疾速创立、测试和部署数据集成Flow 设计器是一个可视化界面,它在早些公布的数据集成可视化查看工具 Flows 根底上,减少了创立和编辑的能力。 它容许用户应用更简略的形式,通过拖拽的形式自在编排规定和数据桥接,在几分钟内即可实现音讯与事件的实时处理,并与内部 40 余种数据系统的集成。创立实现后,用户能够通过对立的视图清晰地治理数据集成流程,并监控每个解决节点的状态。 Flow 设计器底层仍应用规定 SQL 与数据桥接,继承了 EMQX 弱小的数据处理能力和优异性能。同时,它还容许用户在 UI 和 SQL 编辑器之间自在切换,既保留了习惯的 SQL 编辑形式,也提供了更简略疾速的上手能力。相比之前的版本,当初用户无需相熟 EMQX 规定 SQL 语法,就能够通过简略的 UI 进行业务开发,这有助于用户更轻松地利用 EMQX 的数据处理能力实现业务翻新。 独立的 Webhook 页面,简化配置流程Webhook 是 EMQX 最罕用的数据集成形式之一。为进一步升高应用门槛,EMQX 最新版本新增了独立的 Webhook 配置页面,可大幅简化将数据发送到内部 HTTP 服务器的配置流程。 过来,实现这一性能须要编写规定 SQL 并配置数据桥接,这要求用户对 SQL 语法比拟相熟,特地是在解决客户端事件时,须要理解事件在 SQL 语句中的映射关系(如下列 SQL 所示),减少了学习难度。 SELECT * FROM "$events/client_connected" 全新的 Webhook 配置页反对纯表单操作,用户可通过简略的点选形式抉择须要发送的音讯或事件。这样极大地升高了应用门槛,用户无需了解 EMQX 的外部规定语言就能够疾速建设事件或音讯到内部 Web 服务的连贯。 ...

September 26, 2023 · 2 min · jiezi

关于amazon-web-services:Python-下-AWS-IAM-EC2-对-S3-的访问qbit

前言AWS Identity and Access Management (IAM) 是一种 Web 服务,能够帮忙您平安地管制对 AWS 资源的拜访。当 EC2 有 S3 的 IAM 拜访权限时,Python 代码没有 AK/SK,须要有参数来获取权限拜访 S3boto3https://pypi.org/project/boto3/代码示例(未测试) import boto3# 创立 IAM 客户端iam = boto3.client('iam')s3fshttps://pypi.org/project/s3fs代码示例(已测试) import s3fsfs = s3fs.S3FileSystem( anon=False, client_kwargs={"region_name": "cn-northwest-1"} # 中国宁夏区 )本文出自 qbit snap

September 4, 2023 · 1 min · jiezi

关于amazon-web-services:openEuler-2203-LTS登陆AWS-Marketplace

openEuler 22.03 LTS镜像正式登录AWS Marketplace,目前在亚太及欧洲15个Region凋谢应用,后续将凋谢更多版本和区域,openEuler 22.03 LTS AMI(Amazon Machine Images)由openEuler社区提供反对。 点击查看具体应用领导:https://www.openeuler.org/zh/blog/20230711-AMIs/AMIs.html

July 12, 2023 · 1 min · jiezi

关于amazon-web-services:玩转AWS六利用Lambda函数获取S3-url写入mysql

实战步骤 样例代码 gets3url.pyimport boto3import mysql.connectors3Client = boto3.client('s3')mydb = mysql.connector.connect( host="xxx", user="xxx", password="xxx", database="xxx", port="xxx")def lambda_handler(event, context): #Get our bucket and file name bucket = event['Records'][0]['s3']['bucket']['name'] key = event['Records'][0]['s3']['object']['key'] #Get live_id from s3 object key live_id = key.split("/")[2] print("live_id: {}".format(live_id) ) # S3 object url obj_url = "https://" + bucket + ".s3.xxx.amazonaws.com/" + key print("obj_url: {}".format(obj_url)) # Insert into mysql mycursor = mydb.cursor() sql = "INSERT INTO s3_bucket_obj (%s) VALUES (%s);" mycursor.execute(sql, (obj_url, live_id)) mydb.commit() print(mycursor.rowcount, "record inserted.")

June 9, 2023 · 1 min · jiezi

关于amazon-web-services:玩转AWS五Lambda介绍

June 9, 2023 · 0 min · jiezi

关于amazon-web-services:AWS-CodeWhisperer-上手初体验安装与使用

引言代码生成器最近有点多,为了提高效率最近在我的 VSCode 上先后装置了 Bito、Codeium、Tabnine AI Assistant 等等,还有本文中刚有 AWS 推出的 CodeWhisperer。接下来就来看看这款 AI 代码生成器如何应用吧。 介绍Amazon CodeWhisperer 是一款通用的、基于机器学习的代码生成器,可为您实在的提供代码倡议。当你编写代码时,CodeWhisperer 会依据你现有的代码和正文主动生成倡议。您的个性化倡议能够在大小和范畴上有所不同,从单行正文到残缺的性能。、 CodeWhisperer 还能够扫描您的代码,以突出和定义平安问题。 目前 CodeWhisperer 反对了 15 种常见编程语言的代码生成,据官网介绍,就训练数据的品质来看,反对最好的语言是以下几种: JavaPythonJavaScriptTypeScriptC#不出意外,这款代码生成器将来必定要免费,然而目前亚马逊云科技推出了测评流动,能够收费集体应用,注册而后在开发环境 VSCode、JupyterLab 或 JetBrains 设置好就能应用。(当然 AWS 本人的开发环境Amazon SageMaker、AWS Cloud9、AWS Lambda 也行,然而没有 AWS EC2 实例可不行,即便有,明人不说暗话,自己就是喜爱白嫖的) 流动链接,点击CodeWhisperer测评流动 立马上车~ VS Code 设置假如您的电脑上曾经装置好 VS Code 编辑器,而后咱们须要装置 AWS Toolkit,只有这样能力将 CodeWhisperer 与 VS Code 联合应用,在 VS Code 扩大中搜寻 AWS 或者全称 AWS Toolkit,点击装置(Install),如下: 装置胜利后就会在咱们的编辑器的最右边呈现 aws 图标,这个就是咱们的工具了,如图: 在抉择身份验证形式登录这里,针对本地编辑器 VS Code 和 JetBrains,咱们能够通过应用 AWS Builder ID 或 IAM Identity Center 进行身份验证。 ...

June 6, 2023 · 2 min · jiezi

关于amazon-web-services:玩转AWS四S3-replication

介绍 实战 参考链接https://zhuanlan.zhihu.com/p/548946659

June 6, 2023 · 1 min · jiezi

关于amazon-web-services:玩转AWS二S3简介

June 6, 2023 · 0 min · jiezi

关于amazon-web-services:从阿里云OSS传输数据到AWS-S3

从阿里云OSS传输文件到AWS S3简略流程参考链接https://docs.aws.amazon.com/solutions/latest/data-transfer-hu...https://blog.csdn.net/guomingli/article/details/128072026

June 6, 2023 · 1 min · jiezi

关于amazon-web-services:Java实现AWS-S3-V4-Authorization自定义验证

前言最近在开发文件存储服务,须要合乎s3的协定规范,能够间接接入aws-sdk,本文针对sdk发出请求的鉴权信息进行重新组合再签名验证有效性,sdk版本如下 <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>s3</artifactId> <version>2.20.45</version> </dependency>算法解析首先对V4版本签名算法的数据结构及签名流程进行拆解剖析,以申请头签名为示例解说 signature = doSign(waitSignString) 签名示例申请头签名AWS4-HMAC-SHA256 Credential=admin/20230530/us-east-1/s3/aws4_request, SignedHeaders=amz-sdk-invocation-id;amz-sdk-request;host;x-amz-content-sha256;x-amz-date, Signature=6f50628a101b46264c7783937be0366762683e0d319830b1844643e40b3b0edUrl签名http://localhost:8001/s3/kkk/test.docx?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20230531T024715Z&X-Amz-SignedHeaders=host&X-Amz-Expires=300&X-Amz-Credential=admin%2F20230531%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=038e2ea71073761aa0370215621599649e9228177c332a0a79f784b1a6d9ee39数据结构waitSignString = doHex(【第一局部】+【第二局部】+【第三局部】+【第四局部】),每局部应用\n换行符连贯,第四局部不要加上换行符 第一局部Algorithm – 用于创立标准申请的哈希的算法,对于 SHA-256,算法是 AWS4-HMAC-SHA256,则这部分的内容固定为 "AWS4-HMAC-SHA256" + "\n"第二局部RequestDateTime – 在凭证范畴内应用的日期和工夫,这个工夫为申请收回的工夫,间接从申请头获取x-amz-date即可,这部分内容为 request.getHeader("x-amz-date") + "\n"第三局部CredentialScope – 凭证范畴,这会将生成的签名限度在指定的区域和服务范畴内,该字符串采纳以下格局:YYYYMMDD/region/service/aws4_request 这部分由4个内容信息拼接组成 申请工夫的YYYYMMDD格局存储区域存储服务申请头这些信息咱们都能够从申请头的Authorization凭证提取出Credential局部进行拆分重新组合 String[] parts = authorization.trim().split("\\,"); String credential = parts[0].split("\\=")[1]; String[] credentials = credential.split("\\/"); String accessKey = credentials[0]; if (!accessKeyId.equals(accessKey)) { return false; } String date = credentials[1]; String region = credentials[2]; String service = credentials[3]; String aws4Request = credentials[4];这部分内容为 ...

June 4, 2023 · 7 min · jiezi

关于amazon-web-services:玩转AWS二EKS集群配置ALB

参考链接https://zhuanlan.zhihu.com/p/458454919

June 2, 2023 · 1 min · jiezi

关于amazon-web-services:玩转AWS一EKS实战

参考链接https://zhuanlan.zhihu.com/p/456250503

June 2, 2023 · 1 min · jiezi

关于amazon-web-services:AWS-中的另外一种远程工具-AWS-Session-Manager

作者:SRE运维博客博客地址:https://www.cnsre.cn/ 文章地址:https://www.cnsre.cn/posts/230129126154/相干话题:https://www.cnsre.cn/tags/aws/背景需要因为我的项目的安全性。为了防止我的项目的服务器裸露在公网中。很多时候咱们会应用跳板机或者是一些三方的近程工具,来进行一些安全性比拟高的形式来进行近程我的项目的服务器,然而往往越平安的形式就越麻烦。那有没有一种既平安,有便捷的连贯形式呢?当然有,明天就介绍下AWS Session Manager。 前置需要{{< alert theme="success" dir="ltr" >}} 一台 EC2 服务器(须要开启 SSM 近程服务并调配权限)一个 AWS 账户{{< /alert >}} 装置配置 SSM Agent在 Amazon Linux 2 中装置SSM Agentx86_64 sudo yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpmARM64 sudo yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_arm64/amazon-ssm-agent.rpm在 CentOS 7.x 上装置 SSM Agentx86_64 sudo yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpmARM64 sudo yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_arm64/amazon-ssm-agent.rpm启动服务并设置为开机启动sudo systemctl status amazon-ssm-agentsudo systemctl enable amazon-ssm-agent{{< alert theme="warning" dir="ltr" >}} 如其余零碎装置请参考 在实用于 Linux 的 EC2 实例上手动装置 SSM Agent{{< /alert >}} 给 EC2 调配对应权限在角色治理中抉择创立角色。如下如图所示抉择对应选项。搜寻AmazonSSMFullAccess 抉择下一步填入角色名称,而后创立角色在 AWS EC2 控制台中找到对应的服务器,而后点击操作`平安 批改IAM角色`在框内搜寻方才创立的角色名称。而后确定抉择。 ...

May 11, 2023 · 1 min · jiezi

关于amazon-web-services:k3s-证书过期修改

作者:SRE运维博客博客地址:https://www.cnsre.cn/ 文章地址:https://www.cnsre.cn/posts/221207116004/相干话题:https://www.cnsre.cn/tags/k3s/去年双十一买的服务器,然而创立了 K3S 集群。明天登录的时候发现呈现了以下谬误。简略记录下。 故障景象登录服务器执行相干命令呈现以下谬误 [root@k3s-master ~]# kubectl get podserror: You must be logged in to the server (Unauthorized)执行 doker 命令判断大略问题 [root@k3s-master ~]# docker run -it ubuntu /bin/echo "cnsre"cnsredocker 命令能够执行那大概率应该是 k3s 的问题,查看 k3s 服务日志 [root@k3s-master ~]# journalctl -r -u k3s1466 authentication.go:63] "Unable to authenticate the request" err="[x509: certificate has expired or is not yet valid: current time发现有以上谬误,那确定是证书的问题了。 解决办法对于K3S 来说解决证书的问题其实很简略。能够通过重启K3S 服务的来解决问题 sudo systemctl restart k3s验证执行命令验证问题 [root@k3s-master ~]# kubectl get nodeNAME STATUS ROLES AGE VERSIONk3s-node1 Ready <none> 370d v1.21.5+k3s2k3s-node2 Ready <none> 370d v1.21.5+k3s2k3s-node3 Ready <none> 370d v1.21.5+k3s2k3s-master Ready control-plane,master 370d v1.21.5+k3s2问题解决。 ...

May 11, 2023 · 1 min · jiezi

关于amazon-web-services:使用-Lambda-函数将-CloudWatch-Log-中的日志归档到-S3-桶中

作者:SRE运维博客博客地址:https://www.cnsre.cn/ 文章地址:https://www.cnsre.cn/posts/221205544069/相干话题:https://www.cnsre.cn/tags/aws/躺了良久,诈尸了。因为换了工作,所以比较忙始终没有工夫去更新博客的内容(次要还是因为懒)话不多说 间接上干货。 需要背景最近在看费用的时候发现有很大一部分费用都是 cloudwatch log中存储了大量的数据,是因为ec2 将日志传输到了存储到了cloudwatch中。这个存储的多的查问日志的时候免费特地的高。另外一个是因为数据分析用处,大数据分析的共事如果想那到数据的话,还是存储在 S3 中是比拟划算和不便的,一个是拿取数据比拟不便,另外一个是S3 能够最归档存储,前面的大量数据能够分层贮存,以此来升高费用。如果你也想将你的cloudwatch 中日志组中的日志存储到S3中的话能够参考下这篇文章。 前置条件创立 一个 S3 桶,并批改权限创立 lambda 函数有一个Cloudwatch 日志组并且有一天以上的日志给 lambda调配所需的权限创立 S3 桶并批改权限 {{< tabs 国内S3桶权限配置 国外S3桶权限配置 >}}{{< tab >}} 国内S3桶权限配置{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "logs.cn-north-1.amazonaws.com.cn" }, "Action": "s3:GetBucketAcl", "Resource": "arn:aws-cn:s3:::<bucket name>" }, { "Effect": "Allow", "Principal": { "Service": "logs.cn-north-1.amazonaws.com.cn" }, "Action": "s3:PutObject", "Resource": "arn:aws-cn:s3:::<bucket name>/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control" } } } ]}{{< /tab >}}{{< tab >}} ...

May 11, 2023 · 2 min · jiezi

关于amazon-web-services:openEuler之上的K3s-ARM64集群管理

K3s是CNCF认证的轻量级Kubernetes发行版,在寰球领有宽泛的装置量,次要由SUSE工程师在开源社区保护。K3s除了能够独自部署外,也能够通过Kubernetes管理软件Rancher进行治理。SUSE中国团队与欧拉社区单干,以RFO SIG合作形式推动Rancher和K3s等相干产品与openEuler OS的兼容性。 Rancher v2.7.2版本迎来了较多重大更新,其中对K3s ARM64集群的治理进一步加强,反对用户从Rancher配置创立K3s ARM64集群,并通过Rancher实现该集群的生命周期治理。RFO SIG在此基础上,确保了openEuler的兼容性。 ARM64环境筹备 本文中应用的软件环境如下,通过AWS云环境展现相干产品能力: Rancherv2.7.2K3sv1.24.11+k3s1/v1.25.7+k3s1openEuler22.03 LTS SP1AWSc6g.xlarge备注:AWS的openEuler AMI,在openEuler KVM 镜像根底上构建,并内置了AWS相关驱动。此AMI由RFO SIG保护,表格中的软件均反对ARM64架构。 部署Rancher治理立体 AWS能够很不便创立ARM64环境,应用openEuler AMI创立EC2实例,c6g.xlarge 规格齐全能够满足Rancher的部署需要。Rancher治理立体须要部署在Kubernetes之中,作为一种疾速开始的部署体验,咱们举荐应用K3s作为治理立体的Local集群,并通过Helm装置Rancher。 在openEuler ARM64环境中,Rancher治理立体能够失常工作。启动实现后,通过 RancherForFun 明码激活,即可进入UI管理模式。 创立弹性的K3s集群 Rancher中内置了AWS EC2的驱动,能够依照预期的AMI疾速创立EC2实例。基于此能力,Rancher能够创立弹性的K3s集群,并且在openEuler ARM64环境同样兼容。如下图,咱们配置了1个ALL Roles节点和1个worker节点的K3s集群,应用了openEuler 22.03 AMI,配置竞价实例以最大限度缩小费用。K3s的集群版本可抉择 v1.24.11+k3s1。 当集群资源有余时,咱们能够在UI上操作,十分不便得扩容worker节点。Rancher会依据设置,应用内置的EC2 driver创立新的ARM64实例,并主动部署K3s程序。同时,Rancher也反对通过UI拜访节点的SSH Shell。 加强K3s集群的服务能力 日常的保护治理中,须要定期对K3s集群备份,除了能够设置定期备份外,也能够立刻执行备份。Rancher会保留各个备份点的数据,用户能够基于某个备份执行复原操作。 针对K3s的降级也是非常简单的,只需在UI上编辑集群,抉择冀望更新的版本即可。比方,能够从 v1.24.11+k3s1 降级到 1.25.7+k3s1。 Rancher内置了一些集群工具用来扩大上游集群的服务能力,其中一些工具曾经具备了ARM64的兼容性,并且在openEuler OS之上失去验证。比方:分布式存储组件Longhorn、监控、日志等。 当K3s集群曾经不须要时,能够在Rancher中删除该集群,相关联的EC2实例也会被一并删除。 继续的产品化连贯 RFO SIG通过工程化伎俩继续确保Rancher与openEuler的产品兼容性,K3s ARM64场景的治理也是社区呼声较高的性能。同时,Rancher具备十分好的插件机制,能够不便扩大各种云的驱动,在各种云环境下接入openEuler。在非云环境下,也能够在已有openEuler主机上灵便配置。应用openEuler作为基础设施的OS与Rancher进行组合,能够疾速建设产品化的容器治理平台,并能反对AMD64和ARM64环境。

May 4, 2023 · 1 min · jiezi

关于amazon-web-services:Mobileye如何在云上进行深度学习模型训练

最近开始关注ADAS这个行业,静下心来找各种材料学习,自然而然从行业的领头羊Mobileye动手。 Mobileye是家以色列公司,1999年由色列希伯来大学的Amnon Shashua传授和Ziv Aviram创建,以低成本摄像头为根底,通过计算机视觉技术研发高级驾驶辅助零碎(ADAS)。产品从研发到正式商用花了8年工夫,而在2017年被Intel以153亿美元收买。 在油管上搜到了Mobileye联结创始人Amnon Shashua在往年CES2020上的一个主题演讲视频: 在这一小时外面Shashua传授解说了Mobileye基于纯摄像头技术来做感知: 通过多套独立算法来做零碎外部冗余: 基于2D传感器帮忙零碎取得3D的理解力: 实现像素级场景宰割: 路线拥塞,行人横穿马路等简单的路况下,很好的解决了的无爱护左转场景: 而这所有只在一块小小的芯片上实现计算: 不由得感叹犹太人真聪慧,英特尔买这家公司可太有眼光了... 另外也看到Mobileye不仅仅局限在ADAS,从L2+到L4,布局出行服务RobotTaxi。同时做高精度地图(REM),基于此还延长至智慧城市: 这一小时的演讲信息量挺大的,须要一点点缓缓消化。就演讲前半部分讲到的感知,是基于深度学习来做的。Mobileye具体是如何来进行深度学习的模型训练的,这点挺让人好奇的。刚好在油管还有另一个视频,是Mobileye的算法工程师小哥 Chaim Rand 在去年AWS re:Invent上做的一个公开分享: re:Invent是AWS每年一次技术大会,下面有很多AWS的用户会讲述他们应用AWS的教训(也包含踩过的坑)。比方在这个分享外面小哥介绍了他们如何利用SageMaker来帮忙他们减速算法开发和这个过程中如何填坑。 小哥后面循例先简要介绍了Mobileye是做什么的,而后开始讲到他们做深度学习模型训练时遇到的挑战: 能够看到Mobileye之前在本人的数据中心做模型训练,整个开发过程是从数据标注开始,而后用GPU集群进行模型训练,最初再把模型部署到他们本人专有的芯片EyeQ上。留神到比拟大的挑战是:一个典型的模型会须要多达200TB的数据来进行训练。 接着讲到在数据中心做模型训练存在的问题: 能够看到在本地数据中心进行训练有很多显著的劣势:包含GPU资源受到限制(嗯,算法工程师必定是越多越好啦) ,另外存储资源也会有限度(从后面提到的训练数据量来看,能够设想Mobileye的数据存储会有多大),同时基础架构软硬件的降级也十分挑战(原话是说让他们直掉头发,的确从视频看小哥也头秃了。。。) 在这个背景下,他们开始尝试在AWS云上应用SageMaker来做训练。这里他总结了几个他喜爱SageMaker的起因: 无限度的GPU资源,按小哥的原话说,对算法工程师这几乎就像是小孩到了糖果屋... 他们能够同时跑更多的训练任务而不必排队,这也是Mobileye可能在AWS云上把开发速度进步10倍的次要起因。SageMaker也能够应用反对不同实例类型,单GPU实例,或是多GPU实例,不同的Tensorflow版本等,满足他们不同模型训练任务的需要。向云上迁徙的老本也比拟低,SageMaker有比拟敌对的API,文档,示例等,平安是极其要害的一点,Mobileye的数据安全团队也评估过在云上进行训练是满足他们的平安要求,毕竟IP是Mobileye要害的资产。最初还特地提到了SageMaker的Pipe Mode留意到后面讲到Mobileye的典型模型训练须要多达200TB的数据,接下来他还开展具体解说了Pipe Mode如何帮忙来解决大数据集进行训练的问题 首先是简略介绍了SageMaker Pipe Mode. 这个性能能够把训练所须要的数据从S3间接流式传输到训练实例,而不须要把数据集残缺地从S3全量复制到每一个训练实例的本地存储(EBS)上: 通过Pipe Mode,训练的数据集大小就没有限度了,训练实例本地也不须要存储数据集,老本能够大大降低。同时训练任务能够立刻启动,不须要期待数据从S3复制到训练实例本地存储: 而且很重要一点是,多个训练实例能够同时从S3同一份训练数据集去拉取数据。看到这里我想起在一些模型训练平台上,常常会看到在S3后面部署一套高性能的分布式存储(如AWS本人的FSx for Lustre, 或是开源的BeeGFS等),供训练实例并发去高速读取训练数据。应用SageMaker Pipe Mode应该就不须要部署这套高性能的分布式存储。 SageMaker将Pipe的实现封装到了一个叫 tf.data.Datasets API里,因而能够比拟不便的进行调用。小哥接下来还演示了如何设置 Pipe Mode的代码(毕竟400系列的session没有代码说不过去...) 但没有一种技术是万能的,Pipe Mode也是一样。 接下来这部分我感觉特地有价值,就是介绍Mobileye在应用Pipe Mode时遇到的挑战以及他们是如何克服的,这些挑战包含如何将数据转换为反对的格局,Pipe Mode程序读取的个性以及 Pipe 数量的限度(目前限度是20个)。 首先是数据格式的挑战:Pipe Mode反对 CSV, TFRecord 和 Protobuf recordIO . Mobileye抉择了TFRecord(次要是相干的示例代码较多),因而他们须要将已有的海量的数据转换成TFRecord格局。这个转换过程他们应用了AWS Batch服务来进行任务调度,并应用了数十万个VCPU来并行处理。 在转换过程中,每个TFRecord文件为100MB,这个也是S3读写带宽比拟优化的一个对象大小。因为在云上来进行并行的数据转换工作,整个数据筹备工夫失去极大的晋升,从以天计到以小时来计。 ...

March 1, 2023 · 1 min · jiezi

关于amazon-web-services:数据驱动型企业如何借助新一代智能协作提升研发效能

自在构建 摸索有限。10月13日,LigaAI受邀加入2022亚马逊云科技中国峰会,并发表了题为「利用亚马逊云科技AI/ML服务开启新一代智能研发合作的大门」的主题演讲。 聚焦数据驱动,本文将与大家分享「数据驱动+AI+研发合作」模式下的翻新火花。一、以后研发治理正在面临什么难题?这个问题能够从开发团队、管理者和合作工具三个维度解读。 01  开发团队维度很难与业务团队和管理者在指标上达成统一;不认为进度上报、工时注销等属于本职工作,因而实现积极性通常不高;与其余团队合作不足无效沟通机制。所有事件依附人推动,一旦遗记或脱漏就会受到妨碍;大量工夫消耗在与开发自身无关的工作上,导致难以专一。02  管理者维度基于开发团队现状,难以获取实在进度数据。大部分进度数据滞后,或需依附人工干预;研发产出难以通过现有数据掂量。后补的数据失真重大,而原始数据的解决又非常依赖集体的剖析和决策能力;日常治理动作所需的进度跟进、沟通、工作分派、各方协同等宏观治理,劳心劳力。03  合作工具维度灵活性较差。 团队只能依照工具自身的形式工作,不能随便适配现有的流程;凋谢水平低。 没有丰盛的API和数据同步机制,很难与其余零碎买通;自动化水平低。 所有的事件必须通过人力手工解决,减少了应用累赘,也导致团队不违心应用工具,进一步加剧数据失真。以上三方面起因综合导致研发效力晋升艰难。 二、更好的研发合作形式是什么?传统研发项目管理中,合作过程串行化重大,团队外部的大量空转造成了微小节约,同时也产生了很大的我的项目延期危险。 LigaAI认为将来更好的的合作状态应该是「赋能型治理+自驱型团队+智能化工具」的有机联合。 新一代研发合作模式具备业务导向、指标导向、全员参加等特点。要实现以上成果,须要组织文化与团队成员配合作战; 此外,适合的工具也能帮忙团队更快地实现目标,二者缺一不可;而危险预警、智能合作等场景也非常适合通过 AI 提效。 让机器解决机器善于的事件,让人回归到更有创造力的本职工作,这就是 「数据+AI」驱动的下一代研发合作。 三、为什么要构建数据驱动型企业?01  对内全面提效从企业外部看,数据驱动的研发合作等于全面提效。通过数据驱动,LigaAI心愿达成以下指标: · 进步组织外部透明度。 让各个部门能够随时理解其余部门在做什么、进度如何;保障各部门能够顺畅合作,缩小信息损耗,进步流转效率。 · 造就数据人才和数据意识,让大家养成关怀数据、应用数据的习惯。 · 进步研发团队的业务参与度。 缩短研发团队与业务的间隔,让研发成员理解用户对本人研发的产品的应用状况和满意度。 · 晋升开发人员的成就感。 与业务参与度相伴而生,要让大家更违心被动地解决业务问题。 · 企业外部各部门在外部决策时,能够有所根据,升高决策难度和决策老本。 最初,全面晋升业务敏捷性。 02  对外加强产品竞争力ToB SaaS企业外部提效最终要体现在内部市场。从SaaS客户的视角看,数据驱动的研发合作意味着产品竞争力加强。 · 于SaaS产品而言,用户体验是重要指标。通过数据驱动,能够晋升用户体验和客户称心。 · 提供个性化的服务反对。 采纳「数据+AI」的模式,学习不同用户的应用习惯,举荐更适宜的流程,为不同用户提供针对性的服务;还能升高上手老本,让产品陪伴用户成长。 · 传统工具常提供大量原始数据,须要用户本人进行剖析解释;LigaAI以「数据+AI」的形式,为用户提供辅助的决策倡议,实现数据洞察。 四、如何构建数据驱动型研发合作和企业?下图的金字塔自上而下是一个由虚转实的过程,四层内容别离代表愿景、指标、施行和数据利用。 上面以LigaAI为例,开展分享如何依照金字塔步骤,搭建数据驱动型企业。 01  治理愿景数据驱动是一种理念、策略。企业须要先在外部达成对立的意识,造成自上而下的、统一的数据愿景。 02  企业效力指标确定愿景后,定义阶段性指标。LigaAI聚焦研发合作,以后阶段最次要的指标就是企业效力晋升,那么「企业效力晋升」就是数据驱动的指标。 以下是一些举荐的效力指标。 03  可扩大的数据架构清晰指标后,就能够施行。LigaAI先搭建了一个最小化的可扩大数据架构(下图是简化版的外围架构图),从左至右别离是数据源、数据处理、数据存储和数据服务。 LigaAI的数据源包含Aurora关系型数据,以及非结构化的文档数据、日志数据、队列数据等; 依据业务状况,数据源解决分为实时和离线解决:实时数据处理个别应用DataSync服务,而非实时数据则采纳传统的ETL程序进行解决; 所有解决好的数据会 对立放到根底的数据存储平台,LigaAI抉择的是DocumentDB和S3 ; 最初,数据服务分为两个局部:曾经解决好的数据,通过查问服务间接对外部、内部利用提供接口; 与AI相干的服务,LigaAI以SageMaker为外围,搭建了一套AI工作流程,并实现AI数据训练、模型公布、模型部署等自动化解决。 04  构建数据驱动的正循环将架构和平台利用联合,构建数据驱动的正向循环。 LigaAI的数据驱动正循环以团队为外围,团队在LigaAI平台上应用产品并产生数据、数据驱动算法、算法改良平台。平台、数据、算法三者互相驱动,造成「效率晋升内循环」,这是对平台客户的价值; 在企业外部,LigaAI造成了以产品、客户体验、反馈池、研发迭代为主体的「价值滚动外循环」。 内外两个循环独特组成咱们的价值飞轮,最终晋升产品竞争力。 五、 对于数据驱动提效的倡议构建数据驱动时,能够从价值比拟高的具体场景,或比拟容易出成果的场景切入,加强团队信念; 也能够利用云产品疾速搭建适合的数据架构,实现疾速启动; 启动后,须要关注数据生产、应用、改良的正循环。只有不断改进,能力走得更远; ...

October 21, 2022 · 1 min · jiezi

关于amazon-web-services:ZETAAWS-Industrial-AI物联网监测方案实现楼宇预测性维护

数字化的浪潮席卷寰球,带来了全新的楼宇管理模式,智慧楼宇曾经成为修建智能化的发展趋势。物联网技术、AI人工智能以及云计算的衰亡,给智慧楼宇削减了新的倒退生机,并产生了微小的效益。目前,大楼治理次要是依赖人力前期保护和预防性保护,属于“被动式”治理,依附人力实现工作,而劳动老本率57.7%即为“劳动密集型”,老本高效率低,加之面临人力短缺的事实问题,企业营业利润率低至2.4%。因而,进步楼宇保护作业效率是事不宜迟。 NO.1 人力作业为主,经营老本高传统的大楼监测基本上由“人、纸、笔”组成,须要大量人力来实现。人工作业存在劳动强度大、巡检不及时、人工教训有误差以及误检漏检等问题,长此以往,经营老本居高不下。NO.2 各种管理系统扩散,效率低下传统楼宇监测零碎孤立扩散,集成化程度低,须要对设施进行定期的查看、培修、更换、颐养工作,备件洽购老本高,工作沉重,过多占用运维资源,工作效率低下。近年来,为应答智能化治理的趋势,越来越多的企业借助于物联网和人工智能技术,对大楼和传感器状态进行实时监控和数据分析,这使得楼宇治理进行“主动式”的预测性保护成为可能。 自2018年起,日本东京建物在八重洲大楼、日本桥大楼等,部署了“ZETA网络监测计划”,在要害监测点位装置ZETA传感器,采集水位、水压、液压、电流等运行数据,对大楼进行全方位集约化监控。 与此同时,管理方还引进了Amazon Lookout for Equipment,通过独特的机器学习模型,实时剖析传入的传感器数据,并辨认机器故障的晚期预警信号,帮忙管理方提前做出决策,实现预测性保护,进而升高长期经营老本并进步工作效率。 01“7×24H实时监管”智能化监测缩小人力查看工作遍布楼宇外部的ZETA网络、传感器,配合亚马逊云计算服务(以下简称为 AWS),形成了楼宇智能监测的软硬一体化管理体系。这些工具能够7×24H不间断地监控大楼和设施状态,还能够预测所需的保护工作,不仅升高了人工作业量,还缩小了不必要的查看、维保次数,防止适度颐养减少洽购老本。 供水泵压力测试图以大楼内的水泵水压和杂废水输送泵的电流监测为例,通过ZETA 4-20mA采集终端和基恩士压力传感器的设施组合监测,实时监测水压和水泵的电流变动,确保稳固的测量,智能化的监测形式大大减少了日常人力查看工作。 02“状态可视、云端利用”及时精确发现问题并告诉预警楼宇管理系统中,因为波及到数量泛滥的监测点位和终端设备,会遇到一些网络问题和平安响应问题,影响失常的数据通信和实时监测。 云利用传感器可视化性能HAKKEN是一款基于ZETA服务器的ZETA通信状态可视化,并排查问题的云利用。通过ZETA服务器API检索、剖析、展现数据,能够疾速发现问题,及时获取精确信息。同时,还能以邮件等模式发送预警告诉信息,帮忙管理方无效预防并精准解决问题。 03“ZETA+AI检测设施晚期异样”从事后培修转为事先预测性保护Amazon Lookout for Equipment能够基于楼宇现有的ZETA传感器,将传感器数据发送到AWS,AI工具会主动剖析数据,评估失常或衰弱的模式;而后借助从数据中学习到的常识进行训练,建设一个为楼宇治理环境定制的模型,并反馈预测后果,以检测异样的设施行为。 相似于污水泵水压和电流监测等点位查看,以前通过人工每天查看一次,发现问题较晚,老本高、效率低,为大楼保护带来极大不便。 随着“ZETA+AWS”计划的施行,通过引入机器学习ML,输出水泵失常运行的负载数据进行学习,能够通过AI剖析疾速精确地预测到人工无奈检测到的设施异样,平台会主动断定设施的“失常”和“异样”行为。传统的传感器监测只能通过水泵运行数据超出事后设定阈值时,以实时收回警报或进行设施等形式来升高故障产生后造成的损失。 而导入机器学习当前,能够在没有产生超出事后设定阈值的状况下,提前3天就对异常现象收回预警;再通过对模型的监督学习,发现同样的异常现象,ML甚至能够提前10天收回预警。这样能够帮忙管理人员实现“被动响应式”的预测性保护,在故障产生之前防患于未然。这个后果预示着将来的设施治理保护,齐全能够通过传感器数据和AI学习由现有的预防性保护进化到预测性保护。 此外,Amazon Lookout for Equipment能够让管理方从ZETA传感器中取得更多价值,这些工具从端侧采集到边缘计算,可能精确辨认出那些可能导致机器故障的晚期预警信号,帮忙客户及时做出决策,改善治理流程,从而真正地实现大楼治理的预测性保护。 将来,东京建物将联合ZETA楼宇监测计划,与各种物联网计划、人工智能及云计算零碎深度整合,助力实现楼宇治理的智慧化。

September 23, 2022 · 1 min · jiezi

关于amazon-web-services:智能湖仓架构实践利用-Amazon-Redshift-的流式摄取构建实时数仓

Amazon Redshift 是一种疾速、可扩大、平安且齐全托管的云数据仓库,能够帮忙用户通过规范 SQL 语言简略、经济地剖析各类数据。相比其余任何云数据仓库,Amazon Redshift 可实现高达三倍的性能价格比。数万家客户正在借助 Amazon Redshift 每天解决 EB 级别的数据,借此为高性能商业智能(BI)报表、仪表板利用、数据摸索和实时剖析等剖析工作负载提供弱小能源。 咱们很冲动地为 Amazon Kinesis Data Streams 公布了 Amazon Redshift 流式摄取性能,借此用户无需当时将数据存储在 Amazon Simple Storage Service(Amazon S3)中,即可将 Kinesis 数据流摄取到云数据仓库中。流式摄取能够帮忙用户以极低提早,在几秒钟内将数百 MB 数据摄取到 Amazon Redshift 云数据仓库集群。 本文将介绍如何围绕 Amazon Redshift 云数据仓库创立 Kinesis 数据流,生成并加载流式数据,创立物化视图,并查问数据流并对后果进行可视化出现。此外本文还讲介绍流式摄取的益处和常见用例。 云数据仓库无关流式摄取的需要很多客户向咱们反馈称想要将批处理剖析能力进一步拓展为实时剖析能力,并以低提早高吞吐量的形式拜访本人存储在数据仓库中的流式数据。此外,还有很多客户心愿将实时剖析后果与数据仓库中的其余数据源相结合,借此取得更丰盛的剖析后果。 Amazon Redshift 流式摄取的次要用例均具备这样的特色:用于解决一直生成的(流式)数据,并且须要在数据生成后很短的工夫(提早)里解决实现。从IoT设施到零碎遥测,从公共事业服务到设施定位,数据起源形形色色。 在流式摄取性能公布前,如果心愿从 Kinesis Data Steams 摄取实时数据,须要将数据暂存至 Amazon S3,而后应用 COPY 命令加载。这通常会产生数分钟的提早,并且须要在从数据流加载数据的操作之上建设数据管道。但当初,用户曾经能够间接从数据流摄取数据。 解决方案概述Amazon Redshift 流式摄取可让用户间接连贯到 Kinesis Data Streams,彻底消除了通过 Amazon S3 暂存数据并载入集群所导致的提早和复杂性。借此,用户能够应用 SQL 命令连贯并拜访流式数据,并间接在数据流的根底上创立具体化试图,借此简化数据管道。物化视图亦可蕴含 ELT(提取、加载和转换)管道所需的 SQL 转换。 定义了物化视图后,即可刷新视图以查问最新流式数据。这意味着咱们能够应用 SQL 对流式数据执行上游解决和转换,并且无需付出额定老本,随后即可应用原有的 BI 和剖析工具进行实时剖析。 ...

September 15, 2022 · 3 min · jiezi

关于amazon-web-services:aws-查询空间大小

办法零、 用S3的web界面“获取大小”。 <== 最不便 办法一、 1.aws s3api list-objects --bucket BUCKETNAME --output json --query "[sum(Contents[].Size), length(Contents[])]" 2.aws s3api --profile PROFILE_NAME list-objects --bucket BUCKET_NAME --output json --query "[sum(Contents[].Size), length(Contents[])]" | awk 'NR!=2 {print $0;next} NR==2 {print $0/1024/1024/1024" GB"}' 办法二、 须要装置第三方工具 用s3cmd工具 http://s3tools.org/s3cmd 办法三、 只能看到单个文件的大小 aws s3 ls --summarize --human-readable --recursive s3://bucket-name/aws s3 ls --summarize --human-readable --recursive s3://bucket-name/directory from http://serverfault.com/questi...参考链接:3 Ways to get S3 bucket size in AWS

July 5, 2022 · 1 min · jiezi

关于amazon-web-services:ubuntu使用postfix和AWSSES发送邮件

在日常开发中,邮件发送是个比拟常见的场景。因而呈现了很多相干的软件和服务,各大云厂商也推出本人的邮件服务。明天笔者就像大家介绍一种常见的组合,AWS的邮件服务 SES 与邮件服务器 postfix 的配置和应用办法。 概述什么是 AWS-SESAmazon Simple Email Service (SES) 是一种经济高效、灵便且可扩大的电子邮件服务,使开发人员可能从任何应用程序中发送电子邮件。 您能够疾速配置Amazon SES 以反对多种电子邮件应用案例,包含交易、营销或群发电子邮件通信。 什么是 postfixPostfix 是一种电子邮件服务器,它是由任职于IBM华生钻研核心(T.J. Watson Research Center)的荷兰籍研究员Wietse Venema为了改进sendmail邮件服务器而产生的。它是为了改进 sendmail 产生的,同时它兼容 sendmail,是比拟罕用的一种邮件服务器。 开明Amazon Simple Email Service (SES)服务创立一个 identity 此处咱们为了演示不便,应用Email address形式来验证。按下图填入后续要发送邮件的邮箱,随后 AWS 会给对应邮箱发一个确认验证的邮件,点击一下邮件连贯即可示意确认受权。 创立凭证抉择 Account dashboard,此处的 SMTP endpoint 就是咱们的邮件服务器地址,前面配置邮件服务器的时候须要应用。 点击创立凭证,创立好后,新页面会有下载按钮,肯定要及时下载凭证文件。凭证文件里有 Smtp Username 和 Smtp Password,前面配置 postfix 邮件服务器的时候须要用到。 测试邮件发送应用 AWS 自带的性能发送一下测试邮件,查看是否胜利。 其余阐明SES 的验证形式反对单个邮箱验证和 domain 验证。本文中笔者为了演示简略,采纳了单个邮箱验证,如果理论应用中,邮件发送者就是固定的几个邮箱,采纳该办法就比较简单。若是邮件发送者比拟多,不固定,每个邮箱验证一次不太事实,就能够采纳 domain 验证的形式,由域名管理员来配合验证即可,具体的应用 dimain 形式验证的办法,能够参考 aws 官网文档,增加对应的 dns 记录即可。 至此, SES 服务曾经初步开明结束,上面咱们来看下 postfix 的相干配置。 ...

June 11, 2022 · 1 min · jiezi

关于amazon-web-services:ARM64-上的性能怪兽API-网关-Apache-APISIX-在-AWS-Graviton3-上的安装和性能测试

背景AWS 在 2022 年 5 月底公布了最新的基于 ARM 架构的 AWS Graviton 系列处理器——AWS Graviton3。据 AWS 官网数据显示,与 Graviton2 处理器相比,基于当先的 DDR5 内存技术,Graviton3 处理器可提供高达 25% 的性能晋升、高达 2 倍的浮点性能以及 50% 的内存访问速度;在性能与同类 EC2 实例雷同的状况下,Graviton3 还可缩小 60% 的能源。 那么理论数据会怎么呢?让咱们以 CPU 密集型的 API 网关为例,来看看 AWS Graviton3 的体现如何。在这里咱们应用 Apache APISIX 在 AWS Graviton2(C6g)和 AWS Graviton3(C7g) 两种服务器环境下进行性能比照测试。 Apache APISIX 是一个云原生、高性能、可扩大的 API 网关。基于 NGNIX+LuaJIT 和 etcd 来实现,和传统 API 网关相比,APISIX 具备动静路由和插件热加载的特点,特地适宜云原生架构下的 API 治理。 筹备:装置部署在进行测试前,须要筹备一台搭载 ARM64 芯片的服务器,这里咱们选用了 Amazon EC2 C7g(当初只有这个型号才搭载 AWS Graviton3),操作系统抉择了 Ubuntu 20.04。 ...

June 9, 2022 · 2 min · jiezi

关于amazon-web-services:看-AWS-如何通过-Nitro-System-构建竞争优势

前言Amazon Nitro System 从 2013 年开始机密研发,2017 年正式公布,到 2021 年曾经迭代到了第五代。 作为近年来市场炽热的硬件虚拟化技术先驱者,Amazon Nitro System 的诞生目标也被各界人士从新赋予了各种解读和含意。但正如 AWS 副总裁 Swami 所言:“在 AWS,咱们 90% 到 95% 的新我的项目都是基于客户给咱们的反馈,剩下 5% 也是从客户角度登程所做得翻新尝试。” 作为 AWS 的老用户,笔者认为 Amazon Nitro System 诞生的 “因” 到底还是为了可能满足客户对 EC2 计算实例类型的多样化需要这个 First principle thinking(第一性原理)。而当初咱们看到了 Amazon Nitro System 所带来的显着的性能晋升和老本降落,只是 “因” 所造就的 “果” 而已。 所以本篇内容,心愿可能从技术的角度回顾 Amazon Nitro System 的演进之路,回归当初的那个 “因”。 另外,亚马逊云科技面向宽广的云计算开发者们提供了100余种产品收费套餐。其中,计算资源Amazon EC2首年12个月收费,750小时/月;存储资源 Amazon S3 首年12个月收费,5GB规范存储容量。感兴趣的敌人能够点击链接收费获取。 Amazon Nitro System OverviewNitro System 这一新的架构使得 EC2 实例类型自 2017 年以来开始爆发式增长,目前曾经达到 400 多种。从 2022 年开始,新的 M1、M2、M3、C1、C3、R3、I2 和 T1 等 EC2 实例类型都将基于 Nitro System 构建。例如: ...

May 6, 2022 · 6 min · jiezi

关于amazon-web-services:我是如何用-Amazon-Serverless-创建一个门铃的

申明:本文转自DEV Community网站,文章翻译由开发者社区提供;点击下方链接,查看英文原文: https://dev.to/aws-builders/h...介绍不久前,我所在的公司举办了一场黑客松流动,我和一个共事一起,用 AWS Serverless 服务和 raspberry pi 创立了一个智能门铃。 每当有人点击“门铃”按钮,它就会拍下一张图片,并通过 Amazon Rekognition 的人脸汇合来查看图片上的人脸是否曾经被索引。它会向 Slack 发送一条音讯,其中蕴含带有水印和工夫戳的缩放图像,并阐明图片上的人数和人名(如果他们曾经存在于人脸汇合中)。 这篇博文形容了咱们如何建设这个我的项目以及一些教训。 架构图片:架构 图片:状态机 它是如何运行的包含两个次要组成部分——人脸索引和人脸识别。 人脸索引咱们用 VueJS 创立了一个简略的前端,托管在一个 S3 桶上。在这里,咱们须要上传一张带有人脸和姓名的图片。.上传图片之后,咱们通过 API 网关代理一个 lambda 函数来创立一个预签名的 url,利用这个生成的预签名 url,咱们把图片上传到 s3 bucket,把姓名作为元数据值。图片上传到 s3 bucket 后,就会触发一个 lambda 函数,它将检测图片中的人脸,并在事后定义的 AWS Rekognition 汇合(人脸汇合)中创立一个条目,以内部 id 命名。人脸识别利用 Raspberry pi 及其相机模块、无焊面包板和一个按钮,咱们创立了当按下按钮时的图像采集局部——门铃。这张采集的图片被上传到 AWS S3,触发一个 lambda 函数来初始化 Step 函数的执行。在 Step 函数中,有两个平行流程。一个流程会检测图片中的人脸,并在人脸汇合中进行搜寻。这个函数将输入检测到的人脸总数。如果有辨认出的人脸,它会输入这些人脸的姓名。另一个流程会调整图片的大小,并创立一个带有工夫戳的水印。所有这些性能都应用了 lambda 函数。在实现这两个流程后,会触发另一个 lambda 函数来编写和发送音讯到 Slack 频道。输入在 Slack 频道中,输入如下: 图片:输入示例 此时,(我的儿子)Wanuja 和 Thenuja 曾经被索引到人脸汇合中,而我没有。 代码查看残缺的源代码: https://github.com/pubudusj/s... 如何设置您能够应用 AWS SAM 框架轻松部署该堆栈。 ...

April 23, 2022 · 2 min · jiezi

关于amazon-web-services:初探-Lambda-Powertools-TypeScript

申明:本文转自DEV Community网站,文章翻译由开发者社区提供;点击下方链接,查看英文原文: https://dev.to/aws-builders/f...2022 年 1 月 5 日,AWS 高级解决方案架构师 Sara Gerion 发表,Lambda Powertools TypeScript 曾经进入公开测试阶段。Lambda Powertools 是一个由AWS 资助的开源我的项目,旨在应用 AWS Lambda 时优化开发人员的体验并采纳最佳实际。Lambda Powertools TypeScript 退出了 Java 和 Python Lambda Powertools 库。 目录Node.js Tooling for LambdaDecoratorsNo Decorators性能TracerLoggerMetricsPackage Size总结Node.js Tooling for Lambda我是 TypeScript 的忠诚粉丝,实际上我还与别人合著了一本对于 TypeScript 的书。我不罕用 Java 或 Python,所以,尽管我对 Lambda Powertools 很感兴趣,但直到现在我才开始尝试应用。Lambda Powertools TypeScript、middy 和 DAZN Lambda Powertools 都是运行 Node.js 的 Lambda 工具。Lambda Powertools TypeScript 与同类库的两点区别在于,前者是由 AWS 资助的,并且反对decorator。 Lambda Powertools TypeScript 同时反对 JavaScript AWS SDK v2 和 v3 版本,两个版本的例子都会给出。 ...

April 23, 2022 · 2 min · jiezi

关于amazon-web-services:全面解读-AWS-Private-5G-的革新理念内含免费套餐申请入口

前言在去年(2021)的 AWS re:Invent 上,我十分惊讶于 AWS 竟然可能如此神速的向市场推出 AWS Private 5G 服务。要晓得,就在不久前(2021 年 2 月 24 日),FCC(美国联邦通信委员会)才发表了 C 波段 3.7GHz-3.98GHz 的 5G 频段拍卖后果 —— 本轮拍卖发明了 FCC 有史以来最高的拍卖记录,总金额达 811 亿美元,由 21 家运营商取得共 5684 个频段牌照。 能够设想,AWS Private 5G 服务必然是 AWS 蓄谋已久的 “重磅炸弹”。笔者作为 ICT 从业者,天然也对其充斥了有限的好奇,无妨就明天来尝试解读一下 AWS Private 5G 的技术底细。 对 AWS 云技术感兴趣的敌人们,能够尝试申请收费套餐的 AWS 账户,提供了 100 余种能够应用收费套餐的 AWS 云服务。 国内区域账户:https://www.amazonaws.cn/free...海内区域账户:https://aws.amazon.com/cn/fre...近几年 AWS 在 5G ICT 畛域的部署既然说是蓄谋已久,当然也不能无稽之谈。首先无妨再次回顾一下笔者所理解到的,AWS 近些年在 5G ICT 畛域中所做的战略部署。 AWS 与 Verizon 单干推出的 Private MEC 解决方案2020 年 8 月,Verizon 将 5G 专网和 MEC 平台部署在 AWS Outposts 上。 ...

April 6, 2022 · 3 min · jiezi

关于amazon-web-services:使用-Amazon-Cloud-WAN-构建您的全球网络内含免费套餐申请入口

前言对 AWS 云技术感兴趣的敌人们,能够尝试申请收费套餐的 AWS 账户,提供了 100 余种能够应用收费套餐的 AWS 云服务。 国内区域账户:https://www.amazonaws.cn/free...海内区域账户:https://aws.amazon.com/cn/fre...后疫情时代,如何构建企业的寰球网络?据权威数据分析网站 TeleGeography 公布的《Global Internet Map 2022》报告指出,自 2020 年新冠疫情首次暴发后,导致当年的互联网流量激增了 34% ,一度造成了寰球网络系统缓和。后疫情时代,随着居家办公风潮的流行以及跨境出入须要恪守严格的防疫动作,国际化企业须要面对前所未有的数字化经营挑战。在这样的时代大背景下,如何构建稳固牢靠的高质量寰球互联网络曾经成为了企业 IT 部门亟需解决的难题。 一个古代的企业 IT 网络通常会包含以下几个组成部分: 总部本地数据中心的 DC Network连贯到分支机构的 Multi-Branch Network连贯到私有云的 Cloud Onboarding Network为了将这些扩散在总部与分支机构之间的、分支机构与数据中心之间的、数据中心与私有云之间的 IT 环境连贯在一起,企业通常会同时采纳多个第三方 ISP / CSP / SD-WAN 供应商的网络、平安和互联网服务。典型的产品有如:传统专线和 SD-WAN。 传统专线是 ISP 为企业提供的 Ethernet、MSTP、OTN/裸纤、MPLS 等专线服务。传统专线可能提供品质稳固牢靠的网络,以 MPLS 专线为例:通常由运营商专门拉一根光纤线,一头接到企业办公室/机房,另一头接到运营商本人的传输骨干网,再联合 MPLS VPN 等技术,能够让多个接入到 ISP 骨干网络的企业站点以高质量的网络连接起来,并且由 ISP 来承诺专线业务的 SLA,包含带宽、时延、抖动、丢包率等。 在云计算倒退的后期,传统专线一度是构建逾越多个区域企业 IT 网络的主力。然而因为传统专线存在价格昂扬、交付周期长、灵活性差等等问题,正一直受到来自新兴 SD-WAN 技术的挑战。目前更多的是行业/企业/政府此类有着较高数据接入/互联要求和较高服务要求的客户在采纳。 因为传统专线存在的不言而喻的问题,以及随着越来越多的企业采纳了私有云服务。SD-WAN 技术的成熟度和利用正在迅速增长,在大中微型企业中受到欢送,用户从传统专线向 SD-WAN 迁徙的次要驱动力是 SD-WAN 具备更低的老本、更快的部署速度、以及更多的利用控制能力。 SD-WAN 能够将异构的 Underlay Network,例如:固网宽带接入、4G/5G 无线接入、Internet 接入、VPN 接入、专线接入等,多种接入形式充沛联合,组成一个虚构的资源池,并在此基础上构建 Overlay Network,同时提供智能选路、链路聚合、动静链路调整、智能策略等性能。 ...

April 6, 2022 · 2 min · jiezi

关于amazon-web-services:利用亚马逊云科技整个自用免费网盘

当初在线网盘挺多的,用网盘在线存储的益处我也不多说了,次要就是不便,然而如果不嫌累的话,随身带个硬盘到处跑到也能够。最近发现再 AWS 上居然能够搭建一个根底的免费网盘,感觉挺有意思,于是寻思着尝试一下,一方面是相熟 AWS 的服务应用过程,另外一方面是能够尝试以下自建网盘服务是否不便。 首先,要有个 AWS 账户是必定的,没有的话能够通过这个链接注册一下:AWS 12个月收费试用 登录账户,首先咱们先抉择一个在中国拜访较快的亚马逊云海内区域,这里以日本为例。 在网页右上角切换区域为日本。 顶部搜寻框地位输出 EC2,而后选中。 点击网页中的“启动实例”按钮。 而后再操作页面,输出 ubuntu 后按 enter 键,会依据条件展现可应用的操作系统,而后依据提醒抉择符合条件的收费套餐即可,我这里抉择 Ubuntu Server 20.04。 在抉择实例类型页面,咱们抉择 t2.micro,咱们看到这个类型标注了“可收费试用”,如果理论状况有出入,选个收费的就行。点击“下一步:配置实例详细信息”。 在配置页面,最次要的一点就是不要勾选“积分标准”这个复选框,勾选了就很可能导致额外收费,咱们的收费打算就要泡汤了。 在增加存储页面,咱们将根卷大小更改为 30GB,因为亚马逊云提供的收费套餐最大为 30GB。点击“下一步:增加标签”。 在增加标签页面没啥好说的,间接下一步即可,啥都不须要配置。 配置平安组页面,须要创立一个新的平安组,抉择 HTTP 类型的,没有其余需要的话,不必做任何批改,0.0.0.0/0,代表任意IP可拜访,前面::/0代表 IPv6。 持续下一步之后,点“启动”,而后有个弹窗界面,弹窗界面用于创立密钥,用于登录实例,按提醒创立保留即可。我这里抉择创立密钥,名称为 storage,输出名称后点击下载,妥善保存密钥之后启动新示例即可。 实例创立好后是没有固定 IP 的,只有长期的 IP,咱们接下来用 VPC 调配一个固定 IP,具体的操作,先同下面一开始的步骤,搜寻 VPC,而后点击第一个选项,会跳转到 VPC 控制面板。在左侧菜单项抉择“弹性IP”,而后点击右上角”调配弹性 IP 地址“而后就能失去一个固定的IP地址,记住这个 IP 地址。 调配好后点击这个IP地址,进入治理页面点击“关联弹性 IP 地址” 而后到关联页面后,点击输入框,抉择弹出来的对应值即可,齐全傻瓜式操作,不须要额定入手,比拟不便。 接下来,在这个实例上装置 NextCloud 服务,首先关上具体的实例页面,点击"连贯"按钮,到连贯页面不须要做任何配置,持续点击"连贯"按钮,就能弹出一个控制台界面。 ...

March 25, 2022 · 1 min · jiezi

关于amazon-web-services:Amazon-EKS-中-EFS-持久性存储

作者:SRE运维博客博客地址:https://www.cnsre.cn/ 文章地址:https://www.cnsre.cn/posts/220110850573/相干话题:https://www.cnsre.cn/tags/eks/学习指标在 EKS 中部署 Amazon EFS CSI 驱动程序到验证 EFS 并验证它是否失常工作创立基于 EFS 的动态、动静存储前提条件EKS 集群AWS CLI 如果你没有装置请查看装置、更新和卸载 AWS CLI。在装置 AWS CLI 后,还要对其进行配置。kubectl 如果没有装置 请查看装置 kubectl。创立 IAM 策略创立 IAM 策略并将其调配给 IAM 角色。该策略将容许 Amazon EFS 驱动程序与文件系统交互。 1.从 查看下方 IAM 策略文档或者查看策略文档。 {{< notice warning "留神" >}} 举荐应用 查看 策略文档。获取策略文档。{{< /notice >}} { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticfilesystem:DescribeAccessPoints", "elasticfilesystem:DescribeFileSystems" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "elasticfilesystem:CreateAccessPoint" ], "Resource": "*", "Condition": { "StringLike": { "aws:RequestTag/efs.csi.aws.com/cluster": "true" } } }, { "Effect": "Allow", "Action": "elasticfilesystem:DeleteAccessPoint", "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/efs.csi.aws.com/cluster": "true" } } } ]}2.在IAM-策略 中创立策略 ...

January 11, 2022 · 5 min · jiezi

关于amazon-web-services:AWS-eks绑定alb-使用awsloadbalancercontroller提供服务

作者:SRE运维博客博客地址:https://www.cnsre.cn/ 文章地址:https://www.cnsre.cn/posts/211217431135/相干话题:https://www.cnsre.cn/tags/aws/最近在AWS 平台创立了EKS 用于测试环境我的项目,EKS 创立完当前我打算应用 Ingress 控制器 来裸露服务,ingress 前在增加一个ALB 负载均衡器,这样就能够实现齐全的高可用了。然而在创立好 ingress 却发现无奈调通服务,查看 aws 官网文档 Amazon EKS 上的应用程序负载平衡 发现须要应用 aws-load-balancer-controller. 本文档的指标: 创立 EKS ALB 所须要的角色。创立 EKS aws-load-balancer-controller创立 EKS pod 服务应用 ALB 将 pod 服务裸露进来AWS Load Balancer Controller 介绍AWS Load Balancer Controller 的工作原理AWS Load Balancer Controller 是帮忙治理 Kubernetes 集群的弹性负载均衡器的控制器。 它通过供给应用程序负载均衡器来满足 Kubernetes Ingress 资源。它通过提供 网络负载均衡器来满足 Kubernetes Service 资源。下图具体阐明了此控制器创立的 AWS 组件。它还演示了从 ALB 到 Kubernetes 集群的路由入口流量。 [1]:控制器监督来自 API 服务器的入口事件。当它找到满足其要求的入口资源时,它开始创立 AWS 资源。 [2]:在 AWS 中为新的入口资源创立了一个 ALB (ELBv2)。此 ALB 能够面向 Internet 或外部。您还能够应用正文指定它在其中创立的子网。 ...

December 17, 2021 · 3 min · jiezi

关于amazon-web-services:AWS-Aurora

Amazon Aurora1. Create an Aurora Database2. Add a Replica Auto Scaling Policy3. Delete the DatabaseStep 1. Delete the Reader InstanceStep 2. Delete the Writer InstanceStep 3. Delete the Whole Custer

November 21, 2021 · 1 min · jiezi

关于amazon-web-services:AWS-Relational-Database-Service-RDS

Amazon RDS1. Create a RDSStandard create is to see all the options and Easy create is to go fast over it. There are templates we can specify to meet our use case, which are going to be pre-filling some configuration parameters in here. Choose Production because we want to see all the options. But we'll make sure to choose an instance that is compliant with using the Free tier of AWS RDS. ...

November 21, 2021 · 2 min · jiezi

关于amazon-web-services:AWS-Elastic-Load-Balancer-ELB-Affinity-CZLB-SSL

1. Sticky Sessions (Session Affinity)Enable Sticky SessionsAt the target group level. edit the attributes: Refresh this page multiple times, as we can see, we get access to the same instance. And we can see the cookie information as below: The cookies is past to the instance, this is how stickness works. 2. Cross-Zone Load Balancing

November 19, 2021 · 1 min · jiezi

关于amazon-web-services:AWS-Elastic-Load-Balancing-ELB

EC2 Instances should only allow traffic coming directly from the load balancer.Therefore, the source of security group rule of your EC2 instances is not an IP range, it's a security group.So we're going to link the security group of the EC2 instances to the security group of the load balancer, which is an enhanced security mechanism.1. Classic Load Balancer (CLB)Step 1: Create an InstanceAdd the script below into User Data: ...

November 17, 2021 · 2 min · jiezi

关于amazon-web-services:AWS-EC2-实例-SSH-无法登录故障

文章链接 故障体现在应用 jumperver 登录 AWS ec2 实例的时候发现 ssh 配合秘钥登录的时候无奈登录,具体报错如下: ssh -i /path/xx.pem user@10.0.11.190 Permission denied (publickey,gssapi-keyex,gssapi-with-mic).问题排查过程在发现无奈登录的第一工夫等了AWS 平台查看底层监控是否失常查看到底层硬件工作失常,并没有察看到异样报错。通过查看业务服务,发现业务服务并没有收到影响。那就阐明,服务器是没有问题的,只是登录认证出了问题。既然服务没有问题,接下来就缓缓排查就,就不焦急了。接着,尝试用 aws 的 ssm (Amazon Systems Manager)尝试登录,发现可能应用 ssm 登录。再次回到跳板机,运行 telnet 10.0.11.190 22 端口是通的。排除网络端口问题。查看 ssh 登录日志 ssh -i /path/xx.pem user@10.0.11.190 -vvv查看 secure 日志 tail -f /var/log/secure问题解决通过查看日志,总结如下: 1以后是从跳板机,以ssh的形式连贯到故障主机,然而在连贯过程中遇到如下所示报错: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).从ssh -vvv的debug日志来看,ssh client端发送了认证申请,然而ssh server端并没有实现认证过程,导致permission denied报错产生。 2故障主机配置了SSM agent,并且能够通过session manager关上。在这个根底上,在实例的/var/log/secure文件中看到如下报错内容: authentication refused: bad ownership or modes for directory /home/ec2-user/这个报错的意思是说,/home/ec2-user/ 目录的owner或者mode存在一些问题。通过查看,/home/ec2-user/ 目录配置的是777的权限,进而导致的认证失败。 将其批改为700后,问题失去解决,能够ssh登录到故障主机。 为什么会有777的权限呢?为何会将 /home/ec2-user/ 目录下所有内容批改为 777 呢?通过登录 Jumoserver 的审计发现,一名开发人员将 /home/ec2-user/ 权限改为了 777 起因是通过 Jumpserver 上传文件的时候没有权限,而后开发就本人将目录给了 777的权限。 文章链接 ...

August 23, 2021 · 1 min · jiezi

关于amazon-web-services:Python-遍历中国区-s3-目录qbit

SDK 版本Python 3.9s3fs 2021.7.0s3fs 文档:https://s3fs.readthedocs.io/client_kwargs 参见:https://botocore.amazonaws.co...示例代码# coding: utf-8# author: qbit# date: 2021-08-08# summary: 遍历中国区 S3 目录import s3fs# 如果操作系统已配置命令行可拜访 s3# 能够不必参数fs = s3fs.S3FileSystem( key="aws_access_key_id", secret="aws_secret_access_key", client_kwargs={"region_name": "cn-northwest-1"} # 中国宁夏区)print(fs.ls("qbit-cn-northwest-1"))for parent, dirs, files in fs.walk("qbit-cn-northwest-1/data"): for file in files: pathfile = f"{parent}/{file}" print(f"{fs.size(pathfile)/1024:8.2f} KB {pathfile}")本文出自 qbit snap

August 8, 2021 · 1 min · jiezi

关于amazon-web-services:awscli-s3基本使用

以下应用python3装置awscli pip3 install awscli aws配置: $ aws configureAWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLEAWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEYDefault region name [None]: us-west-2Default output format [None]: jsons3根本命令https://awscli.amazonaws.com/...aws cli官网文档https://docs.aws.amazon.com/z...

April 30, 2021 · 1 min · jiezi

关于amazon-web-services:ES-快照到-S3-并从-Windows-共享目录恢复qbit

前言业务须要将 Elasticsearch 快照到 AWS S3,再将快照拷贝到 Windows 零碎,并复原到 Elasticsearch。如下图所示: 环境Elasticsearch 7.10.1Windows Server 2019Ubuntu 20.04 (ES 宿主)ES 集群1 装置 S3 插件官网文档: https://www.elastic.co/guide/...应在 ES 集群的所有节点上装置插件下载 S3 插件和 SHA hash,并上传到 ES 服务器查看并校验# ll -ahtotal 4.6Mdrwxr-xr-x 2 qhy qhy 4.0K Mar 9 01:55 ./drwxr-xr-x 7 qhy qhy 4.0K Mar 9 01:50 ../-rw-rw-r-- 1 qhy qhy 4.6M Mar 9 01:55 repository-s3-7.10.1.zip-rw-rw-r-- 1 qhy qhy 154 Mar 9 01:55 repository-s3-7.10.1.zip.sha512# shasum -a 512 -c repository-s3-7.10.1.zip.sha512 repository-s3-7.10.1.zip: OK装置# /usr/share/elasticsearch/bin/elasticsearch-plugin install file:///home/qhy/es_down/repository-s3-7.10.1.zip-> Installing file:///home/qhy/es_down/repository-s3-7.10.1.zip-> Downloading file:///home/qhy/es_down/repository-s3-7.10.1.zip[=================================================] 100%   @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ WARNING: plugin requires additional permissions @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@* java.lang.RuntimePermission accessDeclaredMembers* java.lang.RuntimePermission getClassLoader* java.lang.reflect.ReflectPermission suppressAccessChecks* java.net.SocketPermission * connect,resolve* java.util.PropertyPermission es.allow_insecure_settings read,writeSee http://docs.oracle.com/javase/8/docs/technotes/guides/security/permissions.htmlfor descriptions of what these permissions allow and the associated risks.Continue with installation? [y/N]y-> Installed repository-s3重启 ES 服务ES 集群1 增加 KEY应在 ES 集群的所有节点上增加 key查看有哪些 key/usr/share/elasticsearch/bin/elasticsearch-keystore list增加 access_key/usr/share/elasticsearch/bin/elasticsearch-keystore add s3.client.default.access_key增加 secret_key/usr/share/elasticsearch/bin/elasticsearch-keystore add s3.client.default.secret_key重载配置POST _nodes/reload_secure_settings创立快照仓库官网文档: https://www.elastic.co/guide/...留神中国区不反对 region,用 endpoint 代替PUT _snapshot/my_s3_repository{ "type": "s3", "settings": { "bucket": "zt-hadoop-cn-northwest-1", "endpoint": "s3.cn-northwest-1.amazonaws.com.cn", "max_snapshot_bytes_per_sec": "200mb", # 调整快照创立的速度,默认 40mb "max_restore_bytes_per_sec": "200mb" # 调整快照复原的速度,默认无限度 }}查看所有注册的快照仓库GET _snapshot/_all调整集群复原分片速度和并发数PUT _cluster/settings { "transient": { "indices.recovery.max_bytes_per_sec": "200mb", # 默认 40mb "cluster.routing.allocation.node_concurrent_recoveries": "5" # 默认 2 }}查看集群配置(包含默认配置)GET _cluster/settings?flat_settings&include_defaults创立快照官网文档: https://www.elastic.co/guide/...PUT /_snapshot/my_s3_repository/snapshot_zt{ "indices": "zt_product_doc_index_20210223_3"}查看一个my_s3_repository仓库下的所有快照GET _snapshot/my_s3_repository/_all查看 snapshot_zt 快照的概要状态GET _snapshot/my_s3_repository/snapshot_zt查看 snapshot_zt 快照的具体状态GET _snapshot/my_s3_repository/snapshot_zt/_status复原快照官网文档: https://www.elastic.co/guide/...POST /_snapshot/my_s3_repository/snapshot_zt/_restore{ "indices": "zt_product_doc_index_20210223_3", "index_settings": { "index.number_of_replicas": 0 }, "rename_pattern": "zt_product_doc_index_20210223_3", "rename_replacement": "zt_product_doc_index_20210223_3_restore"}减少正本PUT zt_product_doc_index_20210223_3_restore/_settings{ "index.number_of_replicas" : "1"}本文出自 qbit snap

March 9, 2021 · 1 min · jiezi

关于amazon-web-services:亚马逊AWS实例设置为账号密码登陆

亚马逊AWS实例的登陆形式都是密钥登陆,我集体感觉很不不便,不太习惯,于是记录一下批改为账号密码登陆的过程。 1.连贯登陆到实例用密钥登陆到centos,上面是xshell的登陆设置 登陆的时候抉择用户记得选centos,root用户是登陆不上的。 WARNING! The remote SSH server rejected X11 forwarding request.Please login as the user "centos" rather than the user "root".2.设置用户名明码登陆1.先给root用户设置明码 sudo passwd root2.切换到root用户 su root3.输出以下命令启用用户名明码登陆 sed -ri 's/^#?(PasswordAuthentication)\s+(yes|no)/\1 yes/' /etc/ssh/sshd_configsed -ri 's/^#?(PermitRootLogin)\s+(yes|no)/\1 yes/' /etc/ssh/sshd_configsed -ri 's/^/#/;s/sleep 10"\s+/&\n/' /root/.ssh/authorized_keys4.重启sshd失效 service sshd restart

February 24, 2021 · 1 min · jiezi

关于amazon-web-services:发现0day并在Mozilla的AWS网络上执行代码

https://www.jianshu.com/p/2ac...https://www.jianshu.com/p/2ad...

January 11, 2021 · 1 min · jiezi

关于amazon-web-services:从-reInvent-看-AWS-对开源和社区的新贡献

文章举荐语:“在刚刚完结的 2020 年,有幸参加到了一次 AWS 的社区活动中,在这次流动上第一次听到了宇博的分享《云计算,开源与社区》,带给了我十分多的思考和启发,在流动完结后我就邀请宇博能不能写一篇文章跟社区的开发者分享一下 AWS 与开源相干的一些内容,宇博在百忙之中写了如下的文章,这篇文章对于开发者理解 AWS 参加开源以及最新的产品中用到了哪些开源技术会有很大的帮忙。也欢送社区的开发者,一起多参加到 AWS 和思否的社区活动中,一起交换分享云计算与开源技术。”— SegmentFault 思否 CEO 高阳。图拍摄于 AWS Community Day Shanghai 2020 本文作者:王宇博 作者简介:王宇博是 AWS 资深开发者布道师,负责 AWS 技术与产品在开发者中的布道与推广。此前曾负责 AWS 高级产品经理多年,负责 AWS 计算、数据和人工智能相干产品和解决方案的业务拓展。在退出 AWS 之前,他曾在多家跨国企业负责产品、技术和治理等岗位,具备近 15 年的 IT 行业的教训和实际;在计算机视觉、模式识别和机器学习等畛域也有多年的科研工作经验。从 re:Invent 看 AWS 对开源和社区的新奉献从 2006 年提供第一个云服务开始,AWS 始终是开源社区的重要参与者和支持者,奉献涵盖代码、经营、根底等诸多方面。除了构建的 2500 多个 GitHub 存储库之外,咱们还参加了数千个第三方开源我的项目,并培养起数十万人的开源社区。 图1: AWS 对开源的奉献逐年减少 AWS 作为一家云计算厂商,在开源畛域采取了更佳均衡和求实的办法,吸引泛滥员工、客户和合作伙伴参加和奉献到开源我的项目。咱们在开源畛域的驱动力来自于最终用户,聚焦于为开发者提供更好的工具。当咱们公布基于开源我的项目的云服务时,咱们会做出长期承诺以反对咱们的客户,向开源我的项目提供了谬误修复,安全性,可伸缩性,性能和性能加强并且采纳“上游优先”的策略,使得咱们在 Linux,Xen,Kubernetes,Redis,Rust,Redis,GraphQL,ROS 等社区中博得了领导位置。与此同时,咱们还代表客户进行翻新,并还发动了泛滥开源我的项目,例如 Apache MXNet, FireCracker,Bottlerocket,PartiQL,Amazon Corretto,Open Distro for ElasticSearch,AWS Distro for Open Telemetry 等,让开发者更容易的从专有技术转移到开源技术并作出贡献。另外,咱们也积极参与到客户发动的开源我的项目中,比方 Netflix的Spinnaker 等。咱们也继续与一些当先的开源 ISV 单干,包含 MongoDB、Databricks 和 Redis Labs 等,帮忙他们构建和优化云服务。 ...

January 5, 2021 · 3 min · jiezi

关于amazon-web-services:AWS-IP-介绍

私有IP 弹性IP(EIP) 能够重复解绑不同实例,重启EC2实例,IP不变经典IP(Classic IP)无奈重复解绑实例。重启绑定的EC2实例后,IP地址会发生变化公有IP(本地IP) 公有 IP 地址是 VPC 的 IPv4 CIDR 范畴内的 IP 地址默认主动调配也能够自定义设置AWS 每个服务实例都会有一个公有IP地址; 如果是托管服务咱们在控制台看不到这个IP,能够在EC2控制面板的网络接口看到IP信息 如下图 援用材料 https://docs.aws.amazon.com/z...

November 16, 2020 · 1 min · jiezi

关于amazon-web-services:AWS-命名提示需要指定-region

在应用命令 aws codeartifact get-authorization-token 生成 token的时候失去提醒: You must specify a region. You can also configure your region by running "aws configure". 解决办法其实解决办法曾经通知你了,你须要在你的命令行中运行 C:Usersyhu>aws configure 进行配置。 配置将会要求你输出: AWS Access Key ID [None]: AWS Secret Access Key [None]: Default region name [None]: Default output format [None]: 下面的信息,AWS Access Key ID 和 AWS Secret Access Key 在 AWS 控制台的 IAM 中找。 在下面的页面中抉择平安配置。 在这里将会有配置分区。 如果你须要新的 AWS Access Key ID 和 AWS Secret Access Key,你能够在这里从新创立,须要留神的是 AWS Secret Access Key 只会呈现一次,你须要将 AWS Secret Access Key 保留在特定的中央。 ...

September 27, 2020 · 1 min · jiezi

关于amazon-web-services:手把手教你如何创建启动AWS实例

什么是AWS ?Amazon Web Services (AWS) 是亚马逊提供的寰球最全面、利用最宽泛的云平台。 云这个概念最开始是从国内的阿里云、腾讯云这些中央听到的,起初服务器接触的多了,也缓缓理解了一些国外的云,如:亚马逊云、微软云。 在亚马逊云、软微云上创立一台实例其实是非常简单的事件,但因为这方面材料比拟少,导致对于新用户可能不那么敌对,我本人当初创立时就不怎么顺利。所以整顿这篇笔记的目标有两个,一是不便本人日后回顾,二是给其他人作为参考。 如果你应用的是Google Cloud 或者Azure,请参考我的其余文章: 手把手教你如何创立启动 Google Cloud 实例手把手教你如何创立启动 Azure 实例启动实例首先登入到AWS ,找到EC2 并点击 在左侧菜单栏中点击实例 点击启动实例 配置实例抉择零碎映像,这里以Linux 操作系统为例,我抉择是Ubuntu Server 18.04 LTS,这个版本示意Ubuntu 服务端 长期稳固反对版本。 抉择实例类型,依据本身须要思考,当然 性能越好价格越高。这里我抉择的是一个中等偏下的类型。 配置实例详情信息,这里的这些外围配置,通常都放弃默认,只是将主动调配私有IP 地址改为禁用。这样再重启机器时,就不会扭转IP了。 依据本身须要调配适合的硬盘大小。 配置平安组,所谓平安组就是领有雷同防火墙规定的群组。这个也是依据本身须要抉择是否共用同一个平安组。 领有同一个平安组就示意领有雷同的防火墙规定。设置完平安组之后,点击审核和启动。 上面会有一个界面给你确认机器的配置是否无误的,从头到尾查看没有问题之后就能够点击启动实例了。 创立密钥能够抉择共用已有的密钥对也能够抉择新建一个。 而后点击启动实例。 调配弹性IP启动实现之后点击查看实例。 在实例列表中,找到该实例之后,别离点击操作=>联网=>治理IP 地址=>调配弹性 IP 确认调配 调配胜利之后,会失去一个弹性IP(私有),而后返回实例列表 关联IP 地址找到方才启动的那个实例(没有实例ID),别离点击操作=>关联地址 这一步很重要,这里要将实例和弹性IP 地址关联,所以要抉择该弹性IP 对应本人的实例。如果不确定是哪一个,能够返回到实例列表中去查看,就是那个没有名称的实例。 而后点击关联 关联胜利 ...

September 26, 2020 · 1 min · jiezi

关于amazon-web-services:AWS-人工智能黑客马拉松决赛结果出炉22-个队伍激烈角逐谁才是最后赢家

Amazon Web Services (AWS) Hackathon Online 2020 曾经圆满闭幕。 7 月 27 日起,AWS Hackathon Online 2020 正式启动,来自寰球各大企业和高校的编程爱好者加入本次黑客马拉松,他们围绕遗失宠物的智能寻找、老年人的近程智能诊疗、环境污染的预测、餐厅及后厨卫生平安的主动监测、登山爱好者的智能追踪与平安保障五大赛题,联合 Amazon SageMaker 模型和 AWS SDK 提交了泛滥优秀作品。 通过层层筛选后,突出重围的 22 组选手,在历时近两个月的较量后,终于在 9月20日 的决赛场上决出输赢。 8 位 AWS 专家评委从赛题完成度、创意度、实用性、用户体验、商业前景、技术难度 6 个维度对选手的作品进行综合考量,最终评比出了 3 组优胜选手。 22 个队伍强烈角逐,冠军花落谁家?参赛队伍联合 Amazon SageMaker,训练并部署了本人的机器学习模型,通过 AWS SDK 本地调用线上模型,为本人的作品带来独特的劣势。 这 22 组选手中,有 10 组抉择了遗失宠物的智能寻找赛题,有 5 组抉择了老年人的近程智能诊疗赛题,有 4 组抉择了环境污染的预测赛题,有 2 组抉择了餐厅及后厨卫生平安的主动监测赛题,有 1 组抉择了登山爱好者的智能追踪与平安保障赛题。 每组选手别离展现了本人的作品后,专家评委从作品的技术原理、我的项目独创性和商业价值等角度进行了发问,通过评委们业余的剖析和探讨,最终选出了 3 组获胜队伍。 第一名 【SW】 团队:他们的“遗失宠物的智能寻找”作品摘得了冠军,取得了 AWS 提供的 5000 元云服务抵扣券和 AWS DeepRacer 主动驾驶电动车。 ...

September 22, 2020 · 1 min · jiezi

关于amazon-web-services:快上车体验机器学习的速度与激情

驾驶着 AWS DeepRacer 你就是这条街最靓的仔! 为了帮忙大家更好地上手机器学习 Amazon Web Services(AWS)提供了一个乏味又酷炫的形式——主动驾驶汽车的游戏和比赛。 想疾速上手机器学习么?想理解机器学习理论落地么? 和小编一起感触体验硬核机器学习之路吧! 为了让开发者更有参与感、更能体验到技术背地的社会价值,AWS 还举办了「AWS Hackathon Online 2020」,心愿能够借助人工智能与机器学习来帮助解决一系列的社会问题。 AWS Hackathon Online 2020 已于 7 月 27 日开始报名啦,高校学生、创业者、集体开发者都能够参加哦~ PS:本次比赛采纳凋谢命题,参赛团队必须基于 AWS 云服务进行开发,小伙伴们可选取任意赛题,利用AI/ML等相干服务实现一款产品(软件或硬件)的开发,作品模式不限,为你关上任意门! 较量工夫安顿:7 月 27 日-9 月 13 日:官网报名 7 月 27 日-9 月 13 日:开发阶段 9 月 14 日-9 月 16 日:作品提交 9 月 19 日:作品展现(线上决赛) 奖项设置:为了更好的激励大家产出创意,主办方筹备了丰富的奖项,除价值数千元的云服务抵扣券、反对深度学习的摄像机 AWS DeepLens、树莓派 Raspberry Pi 4B 开发套件外,一等奖团队成员每个人还能够取得一辆 AWS DeepRacer 主动驾驶电动车! 一等奖:(1 组团队) 5000 元 AWS 云服务抵扣券 ...

September 9, 2020 · 1 min · jiezi

关于amazon-web-services:GrowingIO-AWS-成本优化之路

作者:邢建辉GrowingIO 运维开发工程师,次要负责平台化,自动化方向的设计与开发。背景 营收和老本是任何一家企业都须要关注的问题。 当一家互联网公司倒退到肯定规模时,服务器老本会变成一项重大的开销,优化服务器老本也将变成一件提上日程的工作。GrowingIO 次要服务运行在 AWS 上,上面次要针对 GrowingIO 在 AWS 上的一些优化。 老本剖析 1. 概览剖析 在开始老本优化之前,须要先做布局,通过布局来确定实施方案,而不是拍脑袋间接去做,这样可能最初就是花了很大力量,老本升高的成果却不是很显著。 做布局须要通过数据做根据,通过数据分析来确定优化的优先级,例如哪些优化计划会使总体老本降落最快,哪些老本破费的并不合理。下图为 AWS 中的账单中一些概览。 通过 AWS 的账单概览中咱们能够发现费用排名顺次为 EC2,DataTransfer 等,上面针对 EC2,DataTransfer 等咱们须要做账单的详细分析。 2. 细节剖析 (1)数据收集 AWS 的账单中只能做到对总体的一个概览,例如只显示到 c5.xlarge 机型的 Reserved Instances 和 On Demand 的破费,而流量费用也只显示到 out of CNN1 的总数,这些信息只能让咱们总体的看到费用的大抵破费形成,对于宏大的资源,这些信息并不能帮忙咱们精准定位到优化具体资源上。 这里咱们通过 Cost Management Preferences 中将具体账单文件保留到 S3 中,账单中的详细信息 https://docs.aws.amazon.com/c... (2)数据标签 这里须要阐明的是在做具体账单时最好提前将 AWS 的所有资源打上对立 tag,咱们依据本人的状况打了次要如下四个标签: 打完标签后须要将 AWS 的账单中的 tag 激活,否则生成的具体账单中不会蕴含 tag 信息,具体步骤为在 AWS 账单页面的 cost allocation tags 中将对应 tag  active,这样在生成的账单文件中会蕴含 active 的 tag,如 user:App 等相似字段。 ...

August 28, 2020 · 3 min · jiezi

Lambda-Cloud-Watch-EC2-在AWS上每天定时启动关闭实例和运行脚本

如果我们手上有一些脚本,如爬虫或者其他一些网页自动化的脚本,需要每天在固定的时间自动执行,一个好的办法是将脚本托管的云端,这样就不需要我们每天定时打开自己的电脑来运行它。这么一来,费用将会是一个问题。因为如果我们的云端实例一直处于运行状态,那么厂商将向我们收取不菲的费用。而我们的脚本显然不需要数小时的运行,往往几分钟即可完成任务。所以,我们可以采取以下解决方案: 每天定时启动、关闭云端实例。在实例运行的时间窗口,自动运行脚本。这样,假设我们每天的运行窗口为10分钟,使用 AWS t2.micro 实例,拥有750小时免费时间,我们就可拥有 750 * 6 / 10 = 450 天的免费运行。 准备我们将要用到的AWS的服务包括: EC2, 即云端虚拟机,将用于运行我们的脚本。Lambda, 用于操作我们的EC2实例,即启动和关闭。IAM, AWS Identity and Access Management, 用于赋予Lambda函数操作我们EC2实例的权限。Cloud Watch, 用于定时执行我们的Lambda函数,达到定时开关机的效果。以上是定时启动和关闭云端实例所需要的服务,至于在机器启动时自动运行脚本,我们只需使用Linux自带的crontab定时任务即可完成。 EC2在EC2的主控台点击Lanch Instance, 根据步骤配置好虚拟机。当 Instance State显示为running则表示机器在运行。接下来,我们要为这台机器配置Lambda函数。 IAM我们先为Lambda函数创建IAM角色,然后再编写Lambda函数,因为之后创建Lambda函数时要求角色已经创建好。 创建IAM角色官方教程 在建立角色页面,选择AWS服务并选择Lambda, 点击下一步。来到为角色选择政策的页面。我们需要为止自定义一个政策,所以点击建立政策。 在建立政策选项卡,将以下JSON内容复制粘贴: { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:*:*:*" }, { "Effect": "Allow", "Action": [ "ec2:Start*", "ec2:Stop*" ], "Resource": "*" } ]}点击 检阅政策 然后为其取名和填写描述,完成后回到我们之前建立角色的页面。此时政策已建立好,如果操作正确,现在我们可以搜索到我们的政策。 ...

July 6, 2020 · 1 min · jiezi

250万条性爱聊天记录被曝光罪魁祸首竟然名为成都高新技术区

技术编辑:宗恩丨发自 SiFou Office SegmentFault 思否报道丨公众号:SegmentFault 来自外媒消息,两位安全研究人员 Noam Rotem 和 Ran Locar 在 5 月 24 日扫描开放的互联网时,偶然发现了一组可公开访问的亚马逊网络服务 「数据存储库」。每个库都包含了来自不同专业约会应用的大量数据,其中包括 3somes、Cougary、Gay Daddy Bear、Xpal、BBW Dating、Casualx、SugarD、Herpes Dating和 GHunt。 两位研究人员在「数据存储库」中总共发现了 845 千兆字节和接近 250 万条记录,这些数据可能来自于数十万用户。 据安全人员透露这些数据中有性爱照片、录音、私人聊天截图和付款收据,而且这些截图足以证明这是一场「交易」。在被曝光的个人身份信息中包括真实姓名、生日和电子邮件地址。安全研究人员 Locar 对自己发现这些数据感到非常惊讶,这些数据如果被用来勒索、心理虐待将会对这些用户造成经济和心理的双重损失。 矛头直指「成都高新区」当研究人员深度追踪暴露的数据库时,他们意识到,所有的应用程序似乎都来自同一个来源。并且它们的基础设施相当统一,应用的网站都有相同的布局,许多应用程序都以 Google Play 的开发者身份列为「成都高新技术区」。研究人员联系了 3 somes 。第二天,他们得到了简短的回应,所有的数据库同时被锁定。之后他们试图联系「成都高新技术区」,但未收到任何回复。 去年也有类似的事件发生。网络安全公司 UpGuard 的研究人员发现,大量 Facebook 用户信息被公开发布在亚马逊公司的云计算服务器上,墨西哥城的媒体公司 Cultura Colectiva 错误的公开存储了 5.4 亿 Facebook 用户的记录,包括身份号码、评论和账户名称。 在总共 146G 的 Cultura Colectiva 数据集中,研究人员表示很难知道有多少 Facebook 用户受到了影响。UpGuard 说在关闭数据库时也遇到了困难。该公司花了数月时间向 Cultura Colectiva 和亚马逊发送电子邮件,提醒他们注意这个问题。直到 Facebook 联系了亚马逊,泄露才得以解决。 Facebook 也因为此事股价大跌。 ...

June 16, 2020 · 1 min · jiezi

Amazon-DocumentDB-local-access-the-Amazon-DocumentDB

Amazon DocumentDB本地訪問 1、首先需要準備一臺可以訪問Amazon DocumentDB 的EC2服務器 2、需要修改這個跳板EC2服務器的sshd配置文件,將 將GatewayPorts no 改爲 GatewayPorts yes 在本地設置轉發,建立隧道linuxssh -i secret_key_file -L 27017:docdb-2020-06-10-02-39-45.cluster-ck8ssshmd4o.us-east-1.docdb.amazonaws.com:27017 ec2-user@123.123.123.123 -Nwindows 命令説明:secret_key_file :用來登錄跳板EC2的密鑰文件-L 27017指的是本地 端口27017會由 123.123.123.123這個Ec2f服務器轉發docdb-2020-06-10-02-39-45.cluster-ck8ssshmd4o.us-east-1.docdb.amazonaws.com:27017 :目的Amazon DocumentDB的地址 本地連接:mongo --sslAllowInvalidHostnames --ssl localhost:27017 --sslCAFile rds-combined-ca-bundle.pem --username admin --password 123456 説明:當你發送鏈接請求,那麽這些請求會經過剛才建立起來的隧道進行轉發rds-combined-ca-bundle.pem 從亞馬遜上下載

June 10, 2020 · 1 min · jiezi

在AWS上利用EC2搭建wordpress

0. 首先,你得有个AWS账号1. 生成密钥对(1) EC2 -> 网络与安全 -> 密钥对 ->创建密钥对 ->下载pem文件(私钥)要访问AWS中的虚拟服务器,客户需要一个由私钥和公钥组成的密钥对。公钥上传到AWS,并配置到虚拟服务器中,私钥是客户私有的。要访问Linux服务器,使用SSH协议。客户在登陆时通过密钥而不是密码进行身份验证。 (2) 转换pem文件为ppk文件 2. 创建EC2实例(1) 首先进入EC2的控制面板,点击“启动实例”,选择Ubuntu Server 18.04 LTS (HVM), SSD Volume Type,64位(x86) (2) 选择t2.micro,免费套餐 (3) 下一步,默认配置 (4) 下一步,添加内存,8g (5) 添加标签,即实例的name等 (6) 配置安全组,增加http,https,mysql等端口映射 (7) 审核和启动 (8) 启动后,可在实例里看到 3. 进入EC2实例,安装软件(1) 使用putty连接到实例主机名称填EC2的公有IP地址,连接类型SSH。然后点击菜单“连接”—“SSH”–“认证”,选择刚才转换后的PPK格式认证私钥文件。 (2) 登入并进入root账户login as: ubuntusudo suapt-get update(3) 安装apacheapt-get install apache2安装完成后在浏览器中访问 http://EC2实例的公有IP地址,就会出现Apache的默认页面。 (4) 安装phpapt-get install php(5) 安装mysqlapt-get install mysql-server(6) 让php支持mysqlapt-get install php-mysql(7) 重启apacheservice apache2 restart(8) 测试PHP,建立一个探针文件vi /var/www/html/info.php<?phpphpinfo();?>浏览器访问http://公有ip/info.php,可看到php info界面 ...

June 28, 2019 · 1 min · jiezi

k8s与aws--add-ebs-tags-controller为ebs增加tag

前言在使用aws的托管k8s–eks过程中,避免不了使用aws的LB和块存储。AWS公有云所有的资源都可以自定义tags,这样的好处就是可以根据tag具体含义来对资源进行不同维度的审计和统计。比如按照部门,按照项目,环境(test,prod,uat)等维度。在设置service的类型为Loadbanlance的时候,可以通过以下annotations来自定义tag。apiVersion: v1kind: Servicemetadata: annotations: service.beta.kubernetes.io/aws-load-balancer-type: nlb # service.beta.kubernetes.io/aws-load-balancer-internal: 0.0.0.0/0 service.beta.kubernetes.io/aws-load-balancer-additional-resource-tags: “sgt:env=prod,sgt:group=SGT,sgt:project=hawkeye” labels: app: prometheus-server name: prometheus-server namespace: kube-systemspec: ports: - name: http port: 9090 protocol: TCP targetPort: 9090 selector: app: prometheus-server type: LoadBalancer但是可惜的是,k8s当中的块存储(ebs)并不支持这样的方式。可能aws觉得存储比较便宜,不值得进行审计吧。但是本身ebs是支持打tag的。所以为了满足我们司在k8s落地过程中对存储的审计,设计了add-ebs-tags-controller这个组件。add-ebs-tags-controller 详解设计思路大家都知道k8s中对于存储是通过pv和pvc来实现的。因而add-ebs-tags-controller监听所有新建的pvc,然后获取到新建pvc的annotations(volume.beta.kubernetes.io/aws-block-storage-additional-resource-tags),最后调用aws的接口sdk,完成打tag的工作。代码实现具体代码参见 github。代码相对比较简单,大家可以自行研究。总体实现思路和其他的controller类似。都是监听指定资源,然后分别对Update和add和delete三种事件,做出处理。当然这里不得不提一下,k8s controller设计的核心理念,controller通过监听实际的状态(status) ,不断做出具体调整,向期望的状态(spec) 靠轮。部署具体部署的yaml如下:apiVersion: apps/v1kind: Deploymentmetadata: name: add-ebs-tags-controller namespace: kube-systemspec: replicas: 1 selector: matchLabels: k8s-app: add-ebs-tags-controller task: tool template: metadata: labels: task: tool k8s-app: add-ebs-tags-controller annotations: scheduler.alpha.kubernetes.io/critical-pod: ’’ spec: serviceAccount: cluster-admin containers: - name: add-ebs-tags-controller image: iyacontrol/add-ebs-tags-controller:0.0.1 imagePullPolicy: IfNotPresent 注意serviceAccount: cluster-admin,加入集群中不存在admin角色,可以自行进行rbac授权。demo例如:kind: PersistentVolumeClaimapiVersion: v1metadata: name: prometheus-claim namespace: kube-system annotations: volume.beta.kubernetes.io/aws-block-storage-additional-resource-tags: “sgt:env=prod,sgt:group=SGT,sgt:project=hawkeye"spec: accessModes: - ReadWriteOnce resources: requests: storage: 50Gi 创建成果以后,去aws的ui查看如下: ...

April 15, 2019 · 1 min · jiezi

「AWS Lightsails」 Server Overview

Official: AWS Lightsail.「OS」ChoicesLinux (Only newest):Windows:「REGIONS」Servers on DIFFERENT regions can’t connect to each other through Private IPServers on SAME region but DIFFERENT zone CAN connect through Private IPSnapshot can be used to create another server in SAME region but DIFFERENT zoneSnapshot CAN’T be used to create another server in DIFFERENT regionStatic IP can be only applied to SAME region.「PRICING」LinuxWindowsLinux: $3.5 USD/mo (Lowest)Windows: $8.0 USD/mo (Lowest)「STATIC IP」They’re free in Lightsail, but it will be charged $0.005 USD/hour for static IPs not attached to an instance for more than 1 hour, which means it will cost 3.6 USD/mo !! That’s insane「SNAPSHOT」Refer: What do Lightsail snapshots cost?$1.00 USD/20GB-mo (Lowest)$0.05 USD/GB-mo.Snapshot of an instance, CANNOT cross region, but can change zone in the same region.You can both create a Snapshot from an instance, or create an instance from a snapshot.Refer to: Create a Linux/Unix-based instance from a snapshot in Lightsail「BLOCK STORAGE」Block storage disks can only be attached to instances in the same region and zone.$0.10 USD/GB-mo.$2.00 USD/20GB-mo.ScalableScale up or down within minutes with disks of up to 49TB– and attach up to 15 disks per instance.Disk limits:Block storage disks can only be attached to instances in the same region and zone.The new disk must be the same size or larger than: 8 GB.You can create additional storage disks with a capacity of up to 16 TB (16,384 GB).Your total disk storage must not exceed 20 TB in a single AWS account.You can attach up to 15 disks to a single Lightsail instance, in addition to the system disk.You can only attach a block storage disk to one Lightsail instance.「LOAD BALANCER」$18 USD/mo. ...

January 24, 2019 · 2 min · jiezi

「AWS EC2」 Server Overview

「PRICING」On-Demand instances, you pay for compute capacity by per hour or per second depending on which instances you run.Spot instances are available at a discount of up to 90% off compared to On-Demand pricing.Reserved Instances provide you with a significant discount (up to 75%) compared to On-Demand instance pricing.「SPOT INSTANCE」Refer to: Amazon EC2 Spot Instances PricingThe Spot instance is the spare resources of AWS computers, that being said, its existence uncertain, it all depends on the market.The price for a Spot instance is always changing. And the way to use it is to set a maximum hourly price for each instance. When the price hit the limitation you’ve set, the instance will be automatically TERMINATED!Hence, it’s not good for long term running, but rather for short term computation needs.For Asia Pacific (Singapore):General purposes:Compute Optimized:GPU Instances:Memory Optimized:Storage Optimized:Micro Instances:Cluster GPU Instances are not available in all regions.「ON-DEMAND」 Instance (Standard)Refer to: Amazon EC2 PricingFor Asia Pacific (Singapore):General purposes:Compute Optimized:GPU Instances:Memory Optimized:Storage Optimized:Data transfer:All data Transfer IN: FREEData Transfer OUT:「RESERVED」 Instance (Yearly contract)Refer to: Amazon EC2 Reserved Instances Pricing「DETICATED HOST」InstanceRefer to: Amazon EC2 Dedicated Hosts Pricing「EBS」Elastic Block Storage (including AMI)Refer to: Amazon EBS PricingRefer to Stackoverflow: Cost of storing AMI ...

January 24, 2019 · 1 min · jiezi

AWS CLI 命令行直接操作AWS控制台

安装(基于Python):$ pip3 install awscli –upgrade –user建议在Virtualenv下安装,因为系统级别安装经过测试经常无法安装上。如同git和docker,awscli分为入口命令和功能命令,入口命令为aws,功能命令各自对应一项aws服务。如aws s3就是针对S3存储的操作。参考官方所有命令:AWS CLI Command Reference配置文件:AWS CLI的配置文件都存在~/.aws目录中,如果没有可以自己创建。具体的每个配置文件,都是ini语法,如同git配置文件一样。登录认证配置:文件是~/.aws/credentials,可以配置多项登录用的key pairs:[default]aws_access_key_id=YourKeyIDaws_secret_access_key=YourSecretCode具体的key pair的值,需要到AWS的权限配置中自己添加IAM账户,然后自动获得key pair。进入官网: IAM - Security Credential 配置好后,就可以直接用aws xxx命令操作了。awscli会自动根据你的登录信息,到你的账户查询相关的信息。S3 静态对象存储参考官方文档:AWS CLI S3参考官方文档:Using High-Level s3 Commands with the AWS Command Line Interface在awscli已经配置好的情况下,直接可以用aws s3命令进行一系列的操作:# 列出当前账户下有哪些Bucket$ aws s3 ls# 列出指定bucket下有哪些文件$ aws s3 ls s3://bucket-name/path# 删除$ aws s3 rm s3://bucket-name/path/to/file同步本地和远程的文件夹(方向可换):# $ aws s3 cp /path/to/local/file s3://bucket-name/path/to/file# 下载# 同步$ aws s3 sync <source> <target> [–options]其中sync同步的选项和网页管理后台中显示的选项一样,有很多需要设置的:–recursive:–delete: 删除目标目录中有而源目录中没有的–exclude: 排除指定的文件和文件夹,语法和.gitignore一样很简单–include: 在排除的文件夹里挑出来包括指定的文件和文件夹同步–storage-class: 存储类型,可以是STANDARD, STANDARD_IA, GLACIER–acl:

January 23, 2019 · 1 min · jiezi

给AWS Lightsail服务器添加额外存储盘

参考官网:Create and attach additional block storage disks to your Linux-based Lightsail instances首先创建网盘并关联到同国同区的服务器上。注意:一定要记住自己的服务器是哪个国家和哪个区域的,如果不是同样的位置,不能挂载。然后SSH连接服务器,连接终端输入命令,准备挂载硬盘。查看新磁盘是否格式化过:# 查看添加的网盘名称和地址(如/dev/xvdf)$ lsblk# 查看网盘的文件系统状况(是否格式化了)$ sudo file -s /dev/xvdf如果显示一大堆磁盘属性,包括磁盘格式,那么它已经格式化过了,不用继续格式化了如果显示/dev/xvdf: data,则证明是空盘,没格式化过,需要我们做一下把刚才的新磁盘格式化为ext4格式:$ sudo mkfs -t ext4 /dev/xvdf如果要确认一下是否格好了,再次输入sudo file -s /dev/xvdf即可。这时就会显示:现在就能开心的挂载磁盘了:# 创建一个空文件夹(用来挂载磁盘),最好在根目录下,而不是用户目录$ mkdir /data# 挂载硬盘$ sudo mount /dev/xvdf /data然后就能正常读写操作了。但是有一点注意,这个挂载的硬盘只能用sudo管理员权限读写,为了方便,可以更改一下磁盘的所有者:$ sudo chown ubuntu:ubuntu /data参考官方:网络文件系统 (NFS) 级别用户、组和权限最后设置每次重启后自动挂载磁盘,编辑/etc/fstab文件,添加如下内容:/dev/xvdf /data ext4 defaults, nofail 0 2

January 23, 2019 · 1 min · jiezi

「AWS Lightsail」 Windows服务器试用感受

Lightsail或EC2都能设置Windows服务器,很简单。创建好后,默认用户是Administrator,但是密码要等后台生成才能登录。Lightsail后台里可以直接在浏览器里打开远程桌面,本地(Mac/Win/Linux)的工具连接也很简单。有问题的地方是AWS生成Windows服务器的密码问题,它会生成一串随机的默认密码,需要你等待。但是经常性的密码会无法生成,总显示:根据网上的经验,如果10-15分钟还没有生成好密码,那等多久也没法生成出来,也就没法登录,需要删除实例再创建,直到能生成密码为止(可以换个windows版本试试)换了几个region,换了个windows(2012),终于可以出来一个有密码的了。如下:然后用administrator用户名,和这个密码,简单顺利登录。桌面很简单,测试,和一般的windows没什么区别,能正常装软件浏览器,看视频。只不过视频很卡就是了。另外,同样水准的Windows,网速只有Linux的1/4。而且Windows只对桌面友好,而桌面和GUI的软件有耗费大量内存等资源,所以低配服务器运行还不如自己的500块钱老台式机。看来低端配置下,果然linux是王道。

January 23, 2019 · 1 min · jiezi

AWS Lightsail/EC2 Ubuntu 安装桌面

低配的EC2服务器,运行桌面的话极其缓慢,打开什么都会卡半分钟,包括文件夹。看视频就更别想了。而且一般也没什么需要桌面的需求,只是玩玩,知道能GUI桌面登录就好了。主要步骤如下:第一步:先在管理后台开启默认的5901端口。第二步:安装VNC服务,如vnc4server第三步:安装桌面(xfce4, ubuntu-desktop等)第四步:配置VNC文件~/.vnc/xstartup,设置开启哪个桌面等参数第五步:重启VNC服务VNC服务:vnc4server注意:vnc4server不支持MacOS自带的vnc连接方法,需要安装RealVNC的VNC Viewer一类软件连接。安装:$ sudo apt-get install vnc4server开启/关闭VNC服务的方法:$ vncserver :1$ vncserver -kill :1另外,在使用前,必须要填写VNC的配置文件~/.vnc/xstartup(比如选择什么桌面之类,根据桌面不同配置也不同),才能正确启动。轻量版桌面:xfce4参考:How to install graphical Desktop in ec2 instance ubuntu16.04 (Linux) and access from mac$ sudo apt-get install xfce4需要配置的VNC文件是~/.vnc/xstartup文件,全部修改如下:#!/bin/sh# Uncomment the following two lines for normal desktop:# unset SESSION_MANAGER# exec /etc/X11/xinit/xinitrc#xrdb $HOME/.Xresources#xsettroot -solid grey#startxfce4&[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresourcesxsetroot -solid greyvncconfig -iconic &x-terminal-emulator -geometry 80x24+10+10 -ls -title “$VNCDESKTOP Desktop” &#x-window-manager &sesion-manager & xfdesktop & xfce4-panel &xfce4-menu-plugin &xfsettingsd &xfconfd &xfwm4 &配置好后,重启VNC服务,即可登录。桌面很清简:默认Ubuntu桌面:ubuntu-desktop参考:阿里云ECS,Ubuntu Server 16.04安装图形界面远程控制$ sudo apt-get install ubuntu-desktop$ sudo apt-get install gnome-panel gnome-settings-daemon metacity nautilus gnome-terminal# 退出登录$ exec sh /etc/X11/xinit/xinitrc.编辑VNC配置~/.vnc/xstartup(包括选择默认桌面等):#!/bin/shexport XKL_XMODMAP_DISABLE=1unset SESSION_MANAGERunset DBUS_SESSION_BUS_ADDRESS[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresourcesxsetroot -solid greyvncconfig -iconic &gnome-panel &gnome-settings-daemon &metacity &nautilus &gnome-terminal &配置好后,重启VNC服务,即可登录。桌面非常丑,而且非常慢。客户端Mac上文件夹里自带的VNC连接,不支持打开vnc4server生成的远程桌面。所以必须要下载第三方客户端。推荐用免费简单的VNCViewer。登录的话直接在地址栏输入类似:34.231.169.129:1即可,注意ip后面有个:1 ...

January 23, 2019 · 1 min · jiezi

AWS S3 静态对象存储

静态对象存储的意思就是,和FTP差不多,只能上传、下载、删除,不能修改、更新,更不能存动态数据库一类的东西。虽然还是有很多差别,但是S3和CDN差不多。为什么不选择可以当硬盘一样随便操作的EBS而是用静态对象存储的S3呢?便宜作为Archive存档还是非常值的作为CDN也是很方便的Cost 花销计算S3一样传承了AWS复杂的Cost Calculation。每月需要上缴的费用主要是这3部分的总和:⓵ 数据所占的容量:Standard标准版是 $2.5/100GB/mo低频率IA Standard是$2.4/100GB/mo最便宜的Glacier是$2.3/100GB/mo⓶ API请求数量:Write写请求(PUT, COPY, POST, or LIST):Standard标准 $0.05/万次,IA低频率和Glacier $0.1/万次Read读请求(Get and all other requests):Standard标准 $0.004/万次,IA低频率和Glacier $0.1/万次Delete删除请求:$0 免费⓷ 数据传输费用:传输到AWS的不相同Region:2 USD/100GB,传输到AWS之外的Internet:月内首次1GB $0免费,之后 $9/100GB传输到AWS相同的Region:$0 免费外界上传到AWS:$0 免费几种个人常见案例(月):标准配置:100GB标准存储 + 1万次读 + 1万次写 + 20G的Internet传输 = $3/mo最低配置:20GB的Glacier存储 + 1万次读 + 1万次写 + 5GB的Internet传输 = $2.5/mo也就是说,API请求非常便宜,数据传输可以通过EC2内部传输的免费额度来省钱,最贵的是数据存储费用。这样来算,个人直接用Glacier最划算。其中比较乱的是传输费用。与AWS的EC2等云服务器的传输:与其它云产品(相当于“与Internet互联网”)传输的费用:与AWS的子产品(不包括在AWS中)Lightsail传输的费用:Cost优化参考:Optimizing Costs for S3参考:10 Things You Might Not Know About Using S3创建Bucket登录AWS进入S3 -> create bucket -> 创建S3全网唯一名称 -> 默认选项 -> 选择公开数据的浏览权限 -> 完成创建Bucket。过程十分简单,就不截图占地方了。之后都可以修改,填错了也没问题。下一步:获取secret_key,用于之后各种访问。进入官网: Security Credential 创建key:选择左侧User -> 为s3创建专门的用户(IAM) -> 输入名称、密码 -> 成功后,获取这个用户独有的key pair -> 记住key pair。用s3fs将S3挂载为本地文件夹 Map S3 as local drive注意:Public access权限必须设置成Everyone,要不然无法从各种程序访问。进入bucket的管理后台,选择Permissions,然后设置Public access. 具体步骤参考:# https://cloud.netapp.com/blog/amazon-s3-as-a-file-systemsudo apt-get install -y s3fs# Change key pairs to yoursecho ACCESS_KEY:SECRET_KEY > ~/.passwd-s3fschmod 600 ~/.passwd-s3fsmkdir ~/s3-drive# Mount the aws S3 bucket (replace your uid and gid)/usr/bin/s3fs Your-Bucket-Name ~/s3-drive -o umask=0007,uid=1000,gid=1000# Show all the mounted devicesmount# Show what’s in the bucketls ~/s3-drives3fs的文件读取权限问题注意,S3的权限问题十分严格。而且每个文件的权限都有可能不一样。如果是网页上传的,有可能和本地s3fs上传的权限不同,这样就不能互通操作。但是一旦用s3fs上传全部的文件,那么权限就都是统一的。一旦文件权限没有统一,那么就会在访问时出现No such file或Permission denied问题。目前解决方案有两种:为文件设置Headers,格式是x-amz-meta-(mode,mtime,uid,gid) (推荐) 在启动s3fs挂载时,明确指定umask, uid, gid。如-o umask=0007,uid=1000,gid=1000有几点需要注意:因为固定权限问题,所以不要在多台设备同时挂载(因为每个用户权限可能不同)。如果要多台使用,建议统一在一台服务器上挂载,然后在服务器上把文件夹分享为Webdav,其它设备再来访问webdav。如何修改header: x-amz-meta-?在后台文件管理界面,批量选择文件,然后点Actions,点change metadata,选择x-ama-meta-,输入对应value。将S3作为Webdav服务器搜遍了全网,都没找到靠谱的S3转Webdav服务器方案,差点就自己写Webdav的protocol实现了。还好,经过各种换词搜索,灵机一动,换了种思路:可不可以先把S3映射为本地drive,然后再正常把本地drive共享为webdav?答案是:可以的。具体做法就是:用s3fs映射到本地文件夹,再用wsgidav或apache或nginx将文件夹共享为webdav服务器。亲测可用,而且十分好用。因为同属AWS资源,同属一个Region区,所以访问速度和访问EBS硬盘感受不到什么区别。 ...

January 23, 2019 · 1 min · jiezi

AWS实战 - S3存储类别

储存类别介绍在S3中储存对象时,可以选择不同的储存类别,对应不同的持久性、可用性及价格等。STANDARD: 用于储存经常访问的对象,默认的标准储存类别,存储费用最高,请求(执行Select/GET/PUT等操作)费用最低;STANDARD_IA: 用于储存不经常访问的对象,存储费用较低,请求费用较高;INTELLIGENT_TIERING: 这种储存类别将对象存储在两个访问层中,一个是频繁访问的层,一个是不频繁访问的层;如果对象30天内未访问,则会被移动至不频繁访问的层,如果不频繁访问层中的对象被访问,则会被移动至频繁访问的层;频繁访问的层的存储费用与STANDARD一样,不频繁访问层的存储费用与STANDARD_IA一样,该储存类别的请求费用与STANDARD一样,该储存类别有额外的监控费用;ONEZONE_IA: 与STANDARD_IA类似,只是只在一个可用区存储对象数据,因此比STANDARD_IA更便宜;GLACIER: 适用于不常访问数据,存储费用最低,存档对象不能实时访问,需要访问时要将存档对象转为RRS,对对象的访问按照RRS价格收费;RRS: 用于冗余的、非关键性可再生数据的存档,AWS不建议用户自己去使用;注:AWS S3服务的定价策略比较复杂,不仅分存储费用、请求费用,还有数据传输费用、检索费用等,以上只是简单的说明一下不同存储类别的大致费用对比,详情可以参考Amazon S3 定价。使用不同的存储类别(控制台操作)登录S3控制台,选择一个储存桶,例如cig-test,单击进入;单击管理,再单击添加生命周期规则;为需要添加的规则起个名字test-lifecycle,第二个文本框可选择输入筛选条件,该条件可以指定前缀(即文件夹)和标签,例如输入derek,选择前缀derek,表示规则适用于derek文件夹;可以添加多条规则;点击下一步,进入存储类转化界面,选择当前版本(如果启用了版本控制,也可以选择先前版本,对老的版本进行存储类转化操作),然后如下图添加转化规则,第一条规则是30天之后将对象的存储类别变为STANDARD_IA,第二条是365天之后变为GLACIER;下一步配置过期暂不需要,再点击下一步,然后保存,此时生命周期规则已经创建好并处于启用的状态,可以随时编辑、删除或者禁用这条规则;

January 8, 2019 · 1 min · jiezi

k8s与aws--如何在cloud-provider=aws的k8s中设置externalTrafficPolicy为local

如何在启用cloud-provider=aws的k8s集群中设置service 的externalTrafficPolicy为local关于externalTrafficPolicy的local和cluster两个值,在之前的文章中,我们已经讲过。大家可以参考从service的externalTrafficPolicy到podAntiAffinity这篇文章。而在aws中,假如你自己部署k8s集群,并且启用了cloud-provider=aws,那么需要做一些其他的工作,否则service 的externalTrafficPolicy为local后,无法访问。首先保证kube-proxy启动参数里加入hostname-override设置 - –hostname-override=$(NODE_NAME) env: - name: NODE_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: spec.nodeName然后需要设置VPC的DHCP domainname 为 .compute.internal。参考资料:当您创建 VPC 时,我们会自动创建 DHCP 选项集,并将它们与 VPC 相关联。此设置包括两个选项:domain-name-servers=AmazonProvidedDNS 和 domain-name=domain-name-for-your-region。

January 7, 2019 · 1 min · jiezi

AWS EC2 实例磁盘空间扩容

AWS Linux 实例磁盘空间扩容大致步骤:调整卷大小调整分区大小调整文件系统大小参考文章:通过给EBS类型的根设备扩容解决AWS磁盘容量已满1. 调整EBS存储卷大小进入控制台,选择 EBS - Volumes -Action - Modify Volume2. 登录实例调整分区首先使用lsblk可以查看附加到实例上的所有存储卷的真实size以及分区情况存储卷已经调整为25G其上只有1个分区 【1】显示为 xvda1并没有占用全部空间下面调整分区【1】使其占用全部卷可用空间sudo growpart /dev/xvda 1分区大小跟EBS大小一样了但文件系统空间还没有识别到这部分新增的空间3. 调整实例的文件系统进行扩容:sudo resize2fs /dev/xvda1Size变为25G,Done注:- 挂载在根目录上的是EBS存储卷上的分区而不是这个卷,而且卷被扩容但是分区大小不变依旧不能扩容- xvda是一个存储卷,xvda1是存储卷上的一个分区,但是发现并不是一个存储卷被挂载到根而是存储卷上的一个分区被挂在跟上- EBS 存储卷视为容器,则分区是卷中的另一个容器,并且数据位于分区上。- EBS 相当于一块外部磁盘,如果实例损坏,无法启动可用挂载到别到实例上读取数据。

January 2, 2019 · 1 min · jiezi

k8s与aws--在ec2中部署高可用k8s1.13.1集群(ipvs,cloud-provider)

前言kubeadm1.13达到了生产可用,利用kubeadm部署一个高可用集群简单不少。但是竟然部署在aws上,就要启用cloud-provider=aws,深度结合iaas层资源。主要是利用aws的elb和ebs等。相关的资料还是比较少的,已经有的一些文档要不是out了,要不就是内容不全,还有很多文章只是弄了一个demo的水平,完全没法上生产,部署过程破费周折。组件版本和集群环境集群组件和版本Kubernetes 1.13.1Docker 18.06.0-ceEtcd 3.2.24Calico 3.4.0 网络集群机器master:172.31.22.208172.31.17.44172.31.22.135node:172.31.29.58PSetcd集群非容器部署,systemd守护三台master主机配置ssh免密登录主机设置关闭防火墙systemctl stop firewalldsystemctl disable firewalld禁用selinux# Set SELinux in permissive mode (effectively disabling it)setenforce 0sed -i ’s/^SELINUX=enforcing$/SELINUX=permissive/’ /etc/selinux/config启用net.bridge.bridge-nf-call-ip6tables和net.bridge.bridge-nf-call-iptablescat <<EOF > /etc/sysctl.d/k8s.confnet.bridge.bridge-nf-call-ip6tables = 1net.bridge.bridge-nf-call-iptables = 1vm.swappiness=0EOFsysctl –system禁用swapswapoff -a修改/etc/fstab 文件,注释掉 SWAP 的自动挂载. 使用free -m确认swap已经关闭。加载ipvs相关模块at > /etc/sysconfig/modules/ipvs.modules <<EOF#!/bin/bashmodprobe – ip_vsmodprobe – ip_vs_rrmodprobe – ip_vs_wrrmodprobe – ip_vs_shmodprobe – nf_conntrack_ipv4EOFchmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4上面脚本创建了的/etc/sysconfig/modules/ipvs.modules文件,保证在节点重启后能自动加载所需模块。 使用lsmod | grep -e ip_vs -e nf_conntrack_ipv4命令查看是否已经正确加载所需的内核模块。接下来还需要确保各个节点上已经安装了ipset软件包yum install ipset。 为了便于查看ipvs的代理规则,最好安装一下管理工具ipvsadm yum install ipvsadm。赋予IAM权限Master Policy { “Version”: “2012-10-17”, “Statement”: [ { “Effect”: “Allow”, “Action”: [ “autoscaling:DescribeAutoScalingGroups”, “autoscaling:DescribeLaunchConfigurations”, “autoscaling:DescribeTags”, “ec2:DescribeInstances”, “ec2:DescribeRegions”, “ec2:DescribeRouteTables”, “ec2:DescribeSecurityGroups”, “ec2:DescribeSubnets”, “ec2:DescribeVolumes”, “ec2:CreateSecurityGroup”, “ec2:CreateTags”, “ec2:CreateVolume”, “ec2:ModifyInstanceAttribute”, “ec2:ModifyVolume”, “ec2:AttachVolume”, “ec2:AuthorizeSecurityGroupIngress”, “ec2:CreateRoute”, “ec2:DeleteRoute”, “ec2:DeleteSecurityGroup”, “ec2:DeleteVolume”, “ec2:DetachVolume”, “ec2:RevokeSecurityGroupIngress”, “ec2:DescribeVpcs”, “elasticloadbalancing:AddTags”, “elasticloadbalancing:AttachLoadBalancerToSubnets”, “elasticloadbalancing:ApplySecurityGroupsToLoadBalancer”, “elasticloadbalancing:CreateLoadBalancer”, “elasticloadbalancing:CreateLoadBalancerPolicy”, “elasticloadbalancing:CreateLoadBalancerListeners”, “elasticloadbalancing:ConfigureHealthCheck”, “elasticloadbalancing:DeleteLoadBalancer”, “elasticloadbalancing:DeleteLoadBalancerListeners”, “elasticloadbalancing:DescribeLoadBalancers”, “elasticloadbalancing:DescribeLoadBalancerAttributes”, “elasticloadbalancing:DetachLoadBalancerFromSubnets”, “elasticloadbalancing:DeregisterInstancesFromLoadBalancer”, “elasticloadbalancing:ModifyLoadBalancerAttributes”, “elasticloadbalancing:RegisterInstancesWithLoadBalancer”, “elasticloadbalancing:SetLoadBalancerPoliciesForBackendServer”, “elasticloadbalancing:AddTags”, “elasticloadbalancing:CreateListener”, “elasticloadbalancing:CreateTargetGroup”, “elasticloadbalancing:DeleteListener”, “elasticloadbalancing:DeleteTargetGroup”, “elasticloadbalancing:DescribeListeners”, “elasticloadbalancing:DescribeLoadBalancerPolicies”, “elasticloadbalancing:DescribeTargetGroups”, “elasticloadbalancing:DescribeTargetHealth”, “elasticloadbalancing:ModifyListener”, “elasticloadbalancing:ModifyTargetGroup”, “elasticloadbalancing:RegisterTargets”, “elasticloadbalancing:SetLoadBalancerPoliciesOfListener”, “iam:CreateServiceLinkedRole”, “kms:DescribeKey” ], “Resource”: [ “” ] }, ]}Node Policy { “Version”: “2012-10-17”, “Statement”: [ { “Effect”: “Allow”, “Action”: [ “ec2:DescribeInstances”, “ec2:DescribeRegions”, “ecr:GetAuthorizationToken”, “ecr:BatchCheckLayerAvailability”, “ecr:GetDownloadUrlForLayer”, “ecr:GetRepositoryPolicy”, “ecr:DescribeRepositories”, “ecr:ListImages”, “ecr:BatchGetImage”, “sts:AssumeRole” ], “Resource”: “” } ] }tag标签需要为ec2实例, route table, subnet,安全组 打下面的标签:kubernetes.io/cluster/<cluster-name>=“owned"cluster-name命名规范:k8s-{region}-{env}-{num}例如:k8s-usa-west-2-test-1安装docker和kubeadm安装指定版本docker安装dockeryum install docker-18.06.1ce-5.amzn2 -ysystemctl enable docker更改docker Root Dir 目录将/var/lib/dokcer 配置到/data/docker,确保/data是另外挂载的数据盘更改 ‘/etc/sysconfig/docker’ 文件:OPTIONS=”–default-ulimit nofile=1024:4096 -g /data/docker" 更改 /etc/docker/daemon.json:cat > /etc/docker/daemon.json <<EOF{ “data-root”: “/data/docker”}EOF验证[root@ip-172-31-22-208 ~]# ls -lrt /var/lib/docker总用量 0[root@ip-172-31-22-208 ~]# ls -lrt /data/docker/总用量 0drwx—— 3 root root 20 12月 11 10:44 containerddrwx—— 2 root root 6 12月 11 10:44 tmpdrwx—— 2 root root 6 12月 11 10:44 runtimesdrwx—— 4 root root 32 12月 11 10:44 pluginsdrwx—— 2 root root 6 12月 11 10:44 containersdrwx—— 2 root root 25 12月 11 10:44 volumesdrwx—— 3 root root 22 12月 11 10:44 imagedrwx—— 2 root root 6 12月 11 10:44 trustdrwxr-x— 3 root root 19 12月 11 10:44 networkdrwx—— 3 root root 40 12月 11 10:44 overlay2drwx—— 2 root root 6 12月 11 10:44 swarmdrwx—— 2 root root 24 12月 11 10:44 builderdrwx—— 4 root root 92 12月 11 10:44 buildkit重启docker 服务systemctl start docker验证docker:root@ip-172-31-22-208 ~]# docker infoContainers: 0 Running: 0 Paused: 0 Stopped: 0Images: 0Server Version: 18.06.1-ceStorage Driver: overlay2 Backing Filesystem: xfs Supports d_type: true Native Overlay Diff: trueLogging Driver: json-fileCgroup Driver: cgroupfsPlugins: Volume: local Network: bridge host macvlan null overlay Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslogSwarm: inactiveRuntimes: runcDefault Runtime: runcInit Binary: docker-initcontainerd version: 468a545b9edcd5932818eb9de8e72413e616e86erunc version: 69663f0bd4b60df09991c08812a60108003fa340init version: fec3683Security Options: seccomp Profile: defaultKernel Version: 4.14.70-72.55.amzn2.x86_64Operating System: Amazon Linux 2OSType: linuxArchitecture: x86_64CPUs: 4Total Memory: 15.67GiBName: ip-172-31-22-208.us-west-2.compute.internalID: CG7S:P5XD:FLU6:MULI:2TSI:OLRY:A6EX:SM3D:FXNB:CMEQ:MU6R:XSCWDocker Root Dir: /data/dockerDebug Mode (client): falseDebug Mode (server): falseRegistry: https://index.docker.io/v1/Labels:Experimental: falseInsecure Registries: 127.0.0.0/8Live Restore Enabled: false安装kubeadm等增加k8s repocat <<EOF > /etc/yum.repos.d/kubernetes.repo[kubernetes]name=Kubernetesbaseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64enabled=1gpgcheck=1repo_gpgcheck=0gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpgexclude=kubeEOF安装kubeadm, kubelet, kubectlyum install -y kubelet kubeadm kubectl –disableexcludes=kubernetessystemctl enable kubelet && systemctl start kubelet验证kubeadm版本[root@ip-172-31-22-208 ~]# kubeadm versionkubeadm version: &version.Info{Major:“1”, Minor:“13”, GitVersion:“v1.13.0”, GitCommit:“ddf47ac13c1a9483ea035a79cd7c10005ff21a6d”, GitTreeState:“clean”, BuildDate:“2018-12-03T21:02:01Z”, GoVersion:“go1.11.2”, Compiler:“gc”, Platform:“linux/amd64”}更新 kubelet config设置节点预留资源 ,同时为了支持 cloud-provider, 首先需要在 kubelet 的配置里做相应修改,为 /etc/sysconfig/kubelet 添加 KUBELET_EXTRA_ARGS:KUBELET_EXTRA_ARGS=–cloud-provider=aws 预留资源设置cgroupsmkdir -p /sys/fs/cgroup/cpu/system.slice/kubelet.servicemkdir -p /sys/fs/cgroup/cpuacct/system.slice/kubelet.servicemkdir -p /sys/fs/cgroup/cpuset/system.slice/kubelet.servicemkdir -p /sys/fs/cgroup/memory/system.slice/kubelet.servicemkdir -p /sys/fs/cgroup/devices/system.slice/kubelet.servicemkdir -p /sys/fs/cgroup/blkio/system.slice/kubelet.servicemkdir -p /sys/fs/cgroup/hugetlb/system.slice/kubelet.servicemkdir -p /sys/fs/cgroup/systemd/system.slice/kubelet.service在/var/lib/kubelet/config.yaml中添加如下:enforceNodeAllocatable:- pods- kube-reserved- system-reservedkubeReservedCgroup: /system.slice/kubelet.servicesystemReservedCgroup: /system.slicesystemReserved: cpu: 500m memory: 1Gi ephemeral-storage: 5GikubeReserved: cpu: 500m memory: 1Gi ephemeral-storage: 5Gi部署高可用 etcd 集群kuberntes 系统使用 etcd 存储所有数据,本文档介绍部署一个三节点高可用 etcd 集群的步骤,这三个节点复用 kubernetes master 机器,分别命名为etcd-host0、etcd-host1、etcd-host2:infra0: 172.31.22.208infra1: 172.31.17.44infra2: 172.31.22.135使用的变量本文档用到的变量定义如下:export NODE_NAME=infra0 # 当前部署的机器名称(随便定义,只要能区分不同机器即可)export NODE_IP=172.31.22.208 # 当前部署的机器 IPexport NODE_IPS=“172.31.22.208 172.31.17.44 172.31.22.135” # etcd 集群所有机器 IP# etcd 集群间通信的IP和端口export ETCD_NODES=infra0=https://172.31.22.208:2380,infra1=https://172.31.17.44:2380,infra2=https://172.31.22.135:2380export NODE_NAME=infra1 # 当前部署的机器名称(随便定义,只要能区分不同机器即可)export NODE_IP=172.31.17.44 # 当前部署的机器 IPexport NODE_IPS=“172.31.22.208 172.31.17.44 172.31.22.135” # etcd 集群所有机器 IP# etcd 集群间通信的IP和端口export ETCD_NODES=infra0=https://172.31.22.208:2380,infra1=https://172.31.17.44:2380,infra2=https://172.31.22.135:2380export NODE_NAME=infra2 # 当前部署的机器名称(随便定义,只要能区分不同机器即可)export NODE_IP=172.31.22.135 # 当前部署的机器 IPexport NODE_IPS=“172.31.22.208 172.31.17.44 172.31.22.135” # etcd 集群所有机器 IP# etcd 集群间通信的IP和端口export ETCD_NODES=infra0=https://172.31.22.208:2380,infra1=https://172.31.17.44:2380,infra2=https://172.31.22.135:2380下载二进制文件到 https://github.com/coreos/etcd/releases 页面下载最新版本的二进制文件:wget https://github.com/coreos/etcd/releases/download/v3.2.24/etcd-v3.2.24-linux-amd64.tar.gztar -xvf etcd-v3.2.24-linux-amd64.tar.gzmv etcd-v3.2.24-linux-amd64/etcd /usr/bin利用kubeadm创建秘钥和证书为kubeadm创建配置文件使用以下脚本为每个将在其上运行etcd成员的主机生成一个kubeadm配置文件。# Update HOST0, HOST1, and HOST2 with the IPs or resolvable names of your hostsexport HOST0=172.31.22.208export HOST1=172.31.17.44export HOST2=172.31.22.135# Create temp directories to store files that will end up on other hosts.mkdir -p /tmp/${HOST0}/ /tmp/${HOST1}/ /tmp/${HOST2}/ETCDHOSTS=(${HOST0} ${HOST1} ${HOST2})NAMES=(“infra0” “infra1” “infra2”)for i in “${!ETCDHOSTS[@]}”; doHOST=${ETCDHOSTS[$i]}NAME=${NAMES[$i]}cat << EOF > /tmp/${HOST}/kubeadmcfg.yamlapiVersion: “kubeadm.k8s.io/v1beta1"kind: ClusterConfigurationetcd: local: serverCertSANs: - “${HOST}” peerCertSANs: - “${HOST}” extraArgs: initial-cluster: infra0=https://${ETCDHOSTS[0]}:2380,infra1=https://${ETCDHOSTS[1]}:2380,infra2=https://${ETCDHOSTS[2]}:2380 initial-cluster-state: new name: ${NAME} listen-peer-urls: https://${HOST}:2380 listen-client-urls: https://${HOST}:2379 advertise-client-urls: https://${HOST}:2379 initial-advertise-peer-urls: https://${HOST}:2380EOFdone生成证书颁发机构执行如下命令:kubeadm init phase certs etcd-ca生成下面两个文件:/etc/kubernetes/pki/etcd/ca.crt/etc/kubernetes/pki/etcd/ca.key为每个成员创建证书kubeadm init phase certs etcd-server –config=/tmp/${HOST2}/kubeadmcfg.yamlkubeadm init phase certs etcd-peer –config=/tmp/${HOST2}/kubeadmcfg.yamlkubeadm init phase certs etcd-healthcheck-client –config=/tmp/${HOST2}/kubeadmcfg.yamlkubeadm init phase certs apiserver-etcd-client –config=/tmp/${HOST2}/kubeadmcfg.yamlcp -R /etc/kubernetes/pki /tmp/${HOST2}/# cleanup non-reusable certificatesfind /etc/kubernetes/pki -not -name ca.crt -not -name ca.key -type f -deletekubeadm init phase certs etcd-server –config=/tmp/${HOST1}/kubeadmcfg.yamlkubeadm init phase certs etcd-peer –config=/tmp/${HOST1}/kubeadmcfg.yamlkubeadm init phase certs etcd-healthcheck-client –config=/tmp/${HOST1}/kubeadmcfg.yamlkubeadm init phase certs apiserver-etcd-client –config=/tmp/${HOST1}/kubeadmcfg.yamlcp -R /etc/kubernetes/pki /tmp/${HOST1}/find /etc/kubernetes/pki -not -name ca.crt -not -name ca.key -type f -deletekubeadm init phase certs etcd-server –config=/tmp/${HOST0}/kubeadmcfg.yamlkubeadm init phase certs etcd-peer –config=/tmp/${HOST0}/kubeadmcfg.yamlkubeadm init phase certs etcd-healthcheck-client –config=/tmp/${HOST0}/kubeadmcfg.yamlkubeadm init phase certs apiserver-etcd-client –config=/tmp/${HOST0}/kubeadmcfg.yaml# No need to move the certs because they are for HOST0# clean up certs that should not be copied off this hostfind /tmp/${HOST2} -name ca.key -type f -deletefind /tmp/${HOST1} -name ca.key -type f -delete拷贝证书到对应的主机上USER=rootCONTROL_PLANE_IPS=“172.31.17.44 172.31.22.135"for host in ${CONTROL_PLANE_IPS}; do scp -r /tmp/${host}/pki “${USER}”@$host:done$ 例如HOST0上所需文件的完整列表是:/etc/kubernetes/pki├── apiserver-etcd-client.crt├── apiserver-etcd-client.key└── etcd ├── ca.crt ├── ca.key ├── healthcheck-client.crt ├── healthcheck-client.key ├── peer.crt ├── peer.key ├── server.crt └── server.key其他两台主机如上。创建 etcd 的 systemd unit 文件mkdir -p /var/lib/etcd # 必须先创建工作目录cat > etcd.service <<EOF[Unit]Description=Etcd ServerAfter=network.targetAfter=network-online.targetWants=network-online.targetDocumentation=https://github.com/coreos[Service]Type=notifyWorkingDirectory=/var/lib/etcd/ExecStart=/usr/bin/etcd \ –name=${NODE_NAME} \ –cert-file=/etc/kubernetes/pki/etcd/server.crt \ –key-file=/etc/kubernetes/pki/etcd/server.key \ –peer-cert-file=/etc/kubernetes/pki/etcd/peer.crt \ –peer-key-file=/etc/kubernetes/pki/etcd/peer.key \ –trusted-ca-file=/etc/kubernetes/pki/etcd/ca.crt \ –peer-trusted-ca-file=/etc/kubernetes/pki/etcd/ca.crt \ –initial-advertise-peer-urls=https://${NODE_IP}:2380 \ –listen-peer-urls=https://${NODE_IP}:2380 \ –listen-client-urls=https://${NODE_IP}:2379,http://127.0.0.1:2379 \ –advertise-client-urls=https://${NODE_IP}:2379 \ –initial-cluster-token=etcd-cluster-0 \ –initial-cluster=${ETCD_NODES} \ –initial-cluster-state=new \ –data-dir=/var/lib/etcd \ –auto-compaction-retention=‘1’ \ –quota-backend-bytes=‘8589934592’Restart=on-failureRestartSec=5LimitNOFILE=65536[Install]WantedBy=multi-user.targetEOF指定 etcd 的工作目录和数据目录为 /var/lib/etcd,需在启动服务前创建这个目录;为了保证通信安全,需要指定 etcd 的公私钥(cert-file和key-file)、Peers 通信的公私钥和 CA 证书(peer-cert-file、peer-key-file、peer-trusted-ca-file)、客户端的CA证书(trusted-ca-file);–initial-cluster-state 值为 new 时,–name 的参数值必须位于 –initial-cluster 列表中;启动 etcd 服务mv etcd.service /etc/systemd/system/systemctl daemon-reloadsystemctl enable etcdsystemctl start etcdsystemctl status etcd$最先启动的 etcd 进程会卡住一段时间,等待其它节点上的 etcd 进程加入集群,为正常现象。在所有的 etcd 节点重复上面的步骤,直到所有机器的 etcd 服务都已启动。验证服务部署完 etcd 集群后,在任一 etcd 集群节点上执行如下命令:for ip in ${NODE_IPS}; do ETCDCTL_API=3 /usr/bin/etcdctl \ –endpoints=https://${ip}:2379 \ –cacert=/etc/kubernetes/pki/etcd/ca.crt \ –cert=/etc/kubernetes/pki/etcd/server.crt \ –key=/etc/kubernetes/pki/etcd/server.key \ endpoint health; done预期结果:https://172.31.22.208:2379 is healthy: successfully committed proposal: took = 1.543275mshttps://172.31.17.44:2379 is healthy: successfully committed proposal: took = 1.883033mshttps://172.31.22.135:2379 is healthy: successfully committed proposal: took = 2.026367ms三台 etcd 的输出均为 healthy 时表示集群服务正常(忽略 warning 信息)。部署高可用 master集群为kube-apiserver创建tcp负载均衡这里选择aws的nlb。具体创建过程不再叙述。创建结果nlb-sgt-k8sapiserver-test-4748f2f556591bb7.elb.us-west-2.amazonaws.com。添加到变量export LOAD_BALANCER_DNS=nlb-sgt-k8sapiserver-test-4748f2f556591bb7.elb.us-west-2.amazonaws.comexport ETCD_0_IP=172.31.22.208export ETCD_1_IP=172.31.17.44export ETCD_2_IP=172.31.22.135创建 启用aws cloud-providercat > kubeadm-config.yaml <<EOFapiVersion: kubeproxy.config.k8s.io/v1alpha1kind: KubeProxyConfigurationmode: “ipvs”—apiVersion: kubeadm.k8s.io/v1beta1kind: ClusterConfigurationkubernetesVersion: stablecontrolPlaneEndpoint: “${LOAD_BALANCER_DNS}:6443"apiServer: extraArgs: cloud-provider: aws certSANs: - “${LOAD_BALANCER_DNS}“controllerManager: extraArgs: cloud-provider: awsetcd: external: endpoints: - https://${ETCD_0_IP}:2379 - https://${ETCD_1_IP}:2379 - https://${ETCD_2_IP}:2379 caFile: /etc/kubernetes/pki/etcd/ca.crt certFile: /etc/kubernetes/pki/apiserver-etcd-client.crt keyFile: /etc/kubernetes/pki/apiserver-etcd-client.keynetworking: podSubnet: “192.168.0.0/16"clusterName: “k8s-us-west-test-1"EOF创建 不启用aws cloud-providercat > kubeadm-config.yaml <<EOFapiVersion: kubeadm.k8s.io/v1beta1kind: ClusterConfigurationkubernetesVersion: stablecontrolPlaneEndpoint: “${LOAD_BALANCER_DNS}:6443"apiServer: certSANs: - “${LOAD_BALANCER_DNS}“etcd: external: endpoints: - https://${ETCD_0_IP}:2379 - https://${ETCD_1_IP}:2379 - https://${ETCD_2_IP}:2379 caFile: /etc/kubernetes/pki/etcd/ca.crt certFile: /etc/kubernetes/pki/apiserver-etcd-client.crt keyFile: /etc/kubernetes/pki/apiserver-etcd-client.keynetworking: podSubnet: “192.168.0.0/16"clusterName: “k8s-us-west-test-1"EOF创建第一个master执行kubeadm init –config=kubeadm-config.yaml出现以下:设置访问证书:mkdir -p $HOME/.kubecp -i /etc/kubernetes/admin.conf $HOME/.kube/configchown $(id -u):$(id -g) $HOME/.kube/config创建剩余master复制证书USER=root # customizableCONTROL_PLANE_IPS=“172.31.17.44 172.31.22.135"for host in ${CONTROL_PLANE_IPS}; do scp /etc/kubernetes/pki/ca.crt “${USER}”@$host: scp /etc/kubernetes/pki/ca.key “${USER}”@$host: scp /etc/kubernetes/pki/sa.key “${USER}”@$host: scp /etc/kubernetes/pki/sa.pub “${USER}”@$host: scp /etc/kubernetes/pki/front-proxy-ca.crt “${USER}”@$host: scp /etc/kubernetes/pki/front-proxy-ca.key “${USER}”@$host: scp /etc/kubernetes/admin.conf “${USER}”@$host:done在剩余主机执行:USER=root # customizablemv /${USER}/ca.crt /etc/kubernetes/pki/mv /${USER}/ca.key /etc/kubernetes/pki/mv /${USER}/sa.pub /etc/kubernetes/pki/mv /${USER}/sa.key /etc/kubernetes/pki/mv /${USER}/front-proxy-ca.crt /etc/kubernetes/pki/mv /${USER}/front-proxy-ca.key /etc/kubernetes/pki/mv /${USER}/admin.conf /etc/kubernetes/admin.conf加入控制节点:kubeadm join nlb-sgt-k8sapiserver-test-4748f2f556591bb7.elb.us-west-2.amazonaws.com:6443 –token u9hmb3.gwfozvsz90k3yt9g –discovery-token-ca-cert-hash sha256:24c354cce46de9c1eb1a8358b9ba064166e87cf6c011fecaae3350c3910c215a –experimental-control-plane忘记discovery-token-ca-cert-hash?openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed ’s/^.* //‘部署calico网络检查aws ec2是否关闭了src/dst checks?配置calicoctl下载calicoctlcurl -O -L https://github.com/projectcalico/calicoctl/releases/download/v3.4.0/calicoctlchmod +x calicoctlmv calicoctl /usr/bin/配置calico config 文件cat > /etc/calico/calicoctl.cfg <<EOFapiVersion: projectcalico.org/v3kind: CalicoAPIConfigmetadata:spec: etcdEndpoints: https://${ETCD_0_IP}:2379,https://${ETCD_1_IP}:2379,https://${ETCD_2_IP}:2379 etcdKeyFile: /etc/kubernetes/pki/etcd/server.key etcdCertFile: /etc/kubernetes/pki/etcd/server.crt etcdCACertFile: /etc/kubernetes/pki/etcd/ca.crtEOF使用到的变量export ETCD_KEY=$(cat /etc/kubernetes/pki/etcd/server.key | base64 | tr -d ‘\n’)export ETCD_CERT=$(cat /etc/kubernetes/pki/etcd/server.crt | base64 | tr -d ‘\n’)export ETCD_CA=$(cat /etc/kubernetes/pki/etcd/ca.crt | base64 | tr -d ‘\n’)创建calico.ymlcat > calico.yml <<EOF# Calico Version v3.4.0# https://docs.projectcalico.org/v3.4/releases#v3.4.0# This manifest includes the following component versions:# calico/node:v3.4.0# calico/cni:v3.4.0# calico/kube-controllers:v3.4.0# This ConfigMap is used to configure a self-hosted Calico installation.kind: ConfigMapapiVersion: v1metadata: name: calico-config namespace: kube-systemdata: # Configure this with the location of your etcd cluster. etcd_endpoints: “https://${ETCD_0_IP}:2379,https://${ETCD_1_IP}:2379,https://${ETCD_2_IP}:2379” # If you’re using TLS enabled etcd uncomment the following. # You must also populate the Secret below with these files. etcd_ca: “/calico-secrets/etcd-ca” etcd_cert: “/calico-secrets/etcd-cert” etcd_key: “/calico-secrets/etcd-key” # Configure the Calico backend to use. calico_backend: “bird” # Configure the MTU to use veth_mtu: “1440” # The CNI network configuration to install on each node. The special # values in this config will be automatically populated. cni_network_config: |- { “name”: “k8s-pod-network”, “cniVersion”: “0.3.0”, “plugins”: [ { “type”: “calico”, “log_level”: “info”, “etcd_endpoints”: “ETCD_ENDPOINTS”, “etcd_key_file”: “ETCD_KEY_FILE”, “etcd_cert_file”: “ETCD_CERT_FILE”, “etcd_ca_cert_file”: “ETCD_CA_CERT_FILE”, “mtu”: CNI_MTU, “ipam”: { “type”: “calico-ipam” }, “policy”: { “type”: “k8s” }, “kubernetes”: { “kubeconfig”: “KUBECONFIG_FILEPATH” } }, { “type”: “portmap”, “snat”: true, “capabilities”: {“portMappings”: true} } ] }—# The following contains k8s Secrets for use with a TLS enabled etcd cluster.# For information on populating Secrets, see http://kubernetes.io/docs/user-guide/secrets/apiVersion: v1kind: Secrettype: Opaquemetadata: name: calico-etcd-secrets namespace: kube-systemdata: # Populate the following with etcd TLS configuration if desired, but leave blank if # not using TLS for etcd. # The keys below should be uncommented and the values populated with the base64 # encoded contents of each file that would be associated with the TLS data. # Example command for encoding a file contents: cat <file> | base64 -w 0 etcd-key: ${ETCD_KEY} etcd-cert: ${ETCD_CERT} etcd-ca: ${ETCD_CA}—# This manifest installs the calico/node container, as well# as the Calico CNI plugins and network config on# each master and worker node in a Kubernetes cluster.kind: DaemonSetapiVersion: extensions/v1beta1metadata: name: calico-node namespace: kube-system labels: k8s-app: calico-nodespec: selector: matchLabels: k8s-app: calico-node updateStrategy: type: RollingUpdate rollingUpdate: maxUnavailable: 1 template: metadata: labels: k8s-app: calico-node annotations: # This, along with the CriticalAddonsOnly toleration below, # marks the pod as a critical add-on, ensuring it gets # priority scheduling and that its resources are reserved # if it ever gets evicted. scheduler.alpha.kubernetes.io/critical-pod: ’’ spec: nodeSelector: beta.kubernetes.io/os: linux hostNetwork: true tolerations: # Make sure calico-node gets scheduled on all nodes. - effect: NoSchedule operator: Exists # Mark the pod as a critical add-on for rescheduling. - key: CriticalAddonsOnly operator: Exists - effect: NoExecute operator: Exists serviceAccountName: calico-node # Minimize downtime during a rolling upgrade or deletion; tell Kubernetes to do a “force # deletion”: https://kubernetes.io/docs/concepts/workloads/pods/pod/#termination-of-pods. terminationGracePeriodSeconds: 0 initContainers: # This container installs the Calico CNI binaries # and CNI network config file on each node. - name: install-cni image: quay.io/calico/cni:v3.4.0 command: ["/install-cni.sh”] env: # Name of the CNI config file to create. - name: CNI_CONF_NAME value: “10-calico.conflist” # The CNI network config to install on each node. - name: CNI_NETWORK_CONFIG valueFrom: configMapKeyRef: name: calico-config key: cni_network_config # The location of the Calico etcd cluster. - name: ETCD_ENDPOINTS valueFrom: configMapKeyRef: name: calico-config key: etcd_endpoints # CNI MTU Config variable - name: CNI_MTU valueFrom: configMapKeyRef: name: calico-config key: veth_mtu # Prevents the container from sleeping forever. - name: SLEEP value: “false” volumeMounts: - mountPath: /host/opt/cni/bin name: cni-bin-dir - mountPath: /host/etc/cni/net.d name: cni-net-dir - mountPath: /calico-secrets name: etcd-certs containers: # Runs calico/node container on each Kubernetes node. This # container programs network policy and routes on each # host. - name: calico-node image: quay.io/calico/node:v3.4.0 env: # The location of the Calico etcd cluster. - name: ETCD_ENDPOINTS valueFrom: configMapKeyRef: name: calico-config key: etcd_endpoints # Location of the CA certificate for etcd. - name: ETCD_CA_CERT_FILE valueFrom: configMapKeyRef: name: calico-config key: etcd_ca # Location of the client key for etcd. - name: ETCD_KEY_FILE valueFrom: configMapKeyRef: name: calico-config key: etcd_key # Location of the client certificate for etcd. - name: ETCD_CERT_FILE valueFrom: configMapKeyRef: name: calico-config key: etcd_cert # Set noderef for node controller. - name: CALICO_K8S_NODE_REF valueFrom: fieldRef: fieldPath: spec.nodeName # Choose the backend to use. - name: CALICO_NETWORKING_BACKEND valueFrom: configMapKeyRef: name: calico-config key: calico_backend # Cluster type to identify the deployment type - name: CLUSTER_TYPE value: “k8s,bgp” # Auto-detect the BGP IP address. - name: IP value: “autodetect” # Enable IPIP - name: CALICO_IPV4POOL_IPIP value: “Always” # Set MTU for tunnel device used if ipip is enabled - name: FELIX_IPINIPMTU valueFrom: configMapKeyRef: name: calico-config key: veth_mtu # The default IPv4 pool to create on startup if none exists. Pod IPs will be # chosen from this range. Changing this value after installation will have # no effect. This should fall within –cluster-cidr. - name: CALICO_IPV4POOL_CIDR value: “192.168.0.0/16” # Disable file logging so kubectl logs works. - name: CALICO_DISABLE_FILE_LOGGING value: “true” # Set Felix endpoint to host default action to ACCEPT. - name: FELIX_DEFAULTENDPOINTTOHOSTACTION value: “ACCEPT” # Disable IPv6 on Kubernetes. - name: FELIX_IPV6SUPPORT value: “false” # Set Felix logging to “info” - name: FELIX_LOGSEVERITYSCREEN value: “info” - name: FELIX_HEALTHENABLED value: “true” securityContext: privileged: true resources: requests: cpu: 250m livenessProbe: httpGet: path: /liveness port: 9099 host: localhost periodSeconds: 10 initialDelaySeconds: 10 failureThreshold: 6 readinessProbe: exec: command: - /bin/calico-node - -bird-ready - -felix-ready periodSeconds: 10 volumeMounts: - mountPath: /lib/modules name: lib-modules readOnly: true - mountPath: /run/xtables.lock name: xtables-lock readOnly: false - mountPath: /var/run/calico name: var-run-calico readOnly: false - mountPath: /var/lib/calico name: var-lib-calico readOnly: false - mountPath: /calico-secrets name: etcd-certs volumes: # Used by calico/node. - name: lib-modules hostPath: path: /lib/modules - name: var-run-calico hostPath: path: /var/run/calico - name: var-lib-calico hostPath: path: /var/lib/calico - name: xtables-lock hostPath: path: /run/xtables.lock type: FileOrCreate # Used to install CNI. - name: cni-bin-dir hostPath: path: /opt/cni/bin - name: cni-net-dir hostPath: path: /etc/cni/net.d # Mount in the etcd TLS secrets with mode 400. # See https://kubernetes.io/docs/concepts/configuration/secret/ - name: etcd-certs secret: secretName: calico-etcd-secrets defaultMode: 0400—apiVersion: v1kind: ServiceAccountmetadata: name: calico-node namespace: kube-system—# This manifest deploys the Calico Kubernetes controllers.# See https://github.com/projectcalico/kube-controllersapiVersion: extensions/v1beta1kind: Deploymentmetadata: name: calico-kube-controllers namespace: kube-system labels: k8s-app: calico-kube-controllers annotations: scheduler.alpha.kubernetes.io/critical-pod: ‘‘spec: # The controllers can only have a single active instance. replicas: 1 strategy: type: Recreate template: metadata: name: calico-kube-controllers namespace: kube-system labels: k8s-app: calico-kube-controllers spec: nodeSelector: beta.kubernetes.io/os: linux # The controllers must run in the host network namespace so that # it isn’t governed by policy that would prevent it from working. hostNetwork: true tolerations: # Mark the pod as a critical add-on for rescheduling. - key: CriticalAddonsOnly operator: Exists - key: node-role.kubernetes.io/master effect: NoSchedule serviceAccountName: calico-kube-controllers containers: - name: calico-kube-controllers image: quay.io/calico/kube-controllers:v3.4.0 env: # The location of the Calico etcd cluster. - name: ETCD_ENDPOINTS valueFrom: configMapKeyRef: name: calico-config key: etcd_endpoints # Location of the CA certificate for etcd. - name: ETCD_CA_CERT_FILE valueFrom: configMapKeyRef: name: calico-config key: etcd_ca # Location of the client key for etcd. - name: ETCD_KEY_FILE valueFrom: configMapKeyRef: name: calico-config key: etcd_key # Location of the client certificate for etcd. - name: ETCD_CERT_FILE valueFrom: configMapKeyRef: name: calico-config key: etcd_cert # Choose which controllers to run. - name: ENABLED_CONTROLLERS value: policy,namespace,serviceaccount,workloadendpoint,node volumeMounts: # Mount in the etcd TLS secrets. - mountPath: /calico-secrets name: etcd-certs readinessProbe: exec: command: - /usr/bin/check-status - -r volumes: # Mount in the etcd TLS secrets with mode 400. # See https://kubernetes.io/docs/concepts/configuration/secret/ - name: etcd-certs secret: secretName: calico-etcd-secrets defaultMode: 0400—apiVersion: v1kind: ServiceAccountmetadata: name: calico-kube-controllers namespace: kube-system—# Include a clusterrole for the kube-controllers component,# and bind it to the calico-kube-controllers serviceaccount.kind: ClusterRoleapiVersion: rbac.authorization.k8s.io/v1beta1metadata: name: calico-kube-controllersrules: # Pods are monitored for changing labels. # The node controller monitors Kubernetes nodes. # Namespace and serviceaccount labels are used for policy. - apiGroups: - "” resources: - pods - nodes - namespaces - serviceaccounts verbs: - watch - list # Watch for changes to Kubernetes NetworkPolicies. - apiGroups: - networking.k8s.io resources: - networkpolicies verbs: - watch - list—kind: ClusterRoleBindingapiVersion: rbac.authorization.k8s.io/v1beta1metadata: name: calico-kube-controllersroleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: calico-kube-controllerssubjects:- kind: ServiceAccount name: calico-kube-controllers namespace: kube-system—# Include a clusterrole for the calico-node DaemonSet,# and bind it to the calico-node serviceaccount.kind: ClusterRoleapiVersion: rbac.authorization.k8s.io/v1beta1metadata: name: calico-noderules: # The CNI plugin needs to get pods, nodes, and namespaces. - apiGroups: [””] resources: - pods - nodes - namespaces verbs: - get - apiGroups: [””] resources: - endpoints - services verbs: # Used to discover service IPs for advertisement. - watch - list - apiGroups: [””] resources: - nodes/status verbs: # Needed for clearing NodeNetworkUnavailable flag. - patch—apiVersion: rbac.authorization.k8s.io/v1beta1kind: ClusterRoleBindingmetadata: name: calico-noderoleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: calico-nodesubjects:- kind: ServiceAccount name: calico-node namespace: kube-system—EOF部署calicokubectl apply -f calico.yml设置ippool执行:calicoctl apply -f - << EOFapiVersion: projectcalico.org/v3kind: IPPoolmetadata: name: default-ipv4-ippoolspec: cidr: 192.168.0.0/16 ipipMode: CrossSubnet natOutgoing: trueEOF部署node节点执行主机设置的所有项。执行加入操作:kubeadm join nlb-sgt-k8sapiserver-test-4748f2f556591bb7.elb.us-west-2.amazonaws.com:6443 –token u9hmb3.gwfozvsz90k3yt9g –discovery-token-ca-cert-hash sha256:24c354cce46de9c1eb1a8358b9ba064166e87cf6c011fecaae3350c3910c215a验证: kubectl get nodesNAME STATUS ROLES AGE VERSIONip-172-31-17-44.us-west-2.compute.internal Ready master 4m2s v1.13.0ip-172-31-22-135.us-west-2.compute.internal Ready master 3m59s v1.13.0ip-172-31-22-208.us-west-2.compute.internal Ready master 16h v1.13.0ip-172-31-29-58.us-west-2.compute.internal Ready <none> 14h v1.13.0部署addon部署aws的stskubectl apply -f https://raw.githubusercontent.com/kubernetes/kubernetes/master/cluster/addons/storage-class/aws/default.yaml创建alb-ingress-controller为subnet打标签标记AWS子网以允许入口控制器自动发现用于ALB的子网。kubernetes.io/cluster/${cluster-name} must be set to owned or sharedkubernetes.io/role/internal-elb must be set to 1 or for internal LoadBalancerskubernetes.io/role/elb must be set to 1 or for internet-facing LoadBalancersrbackubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/v1.0.1/docs/examples/rbac-role.yaml按照如下yaml创建# Application Load Balancer (ALB) Ingress Controller Deployment Manifest.# This manifest details sensible defaults for deploying an ALB Ingress Controller.# GitHub: https://github.com/kubernetes-sigs/aws-alb-ingress-controllerapiVersion: apps/v1kind: Deploymentmetadata: labels: app: alb-ingress-controller name: alb-ingress-controller # Namespace the ALB Ingress Controller should run in. Does not impact which # namespaces it’s able to resolve ingress resource for. For limiting ingress # namespace scope, see –watch-namespace. namespace: kube-system annotations: scheduler.alpha.kubernetes.io/critical-pod: ‘‘spec: replicas: 1 selector: matchLabels: app: alb-ingress-controller strategy: rollingUpdate: maxSurge: 1 maxUnavailable: 1 type: RollingUpdate template: metadata: annotations: iam.amazonaws.com/role: arn:aws:iam::1234567:role/Role-KubernetesIngressController-test labels: app: alb-ingress-controller spec: containers: - args: # Limit the namespace where this ALB Ingress Controller deployment will # resolve ingress resources. If left commented, all namespaces are used. # - –watch-namespace=your-k8s-namespace # Setting the ingress-class flag below ensures that only ingress resources with the # annotation kubernetes.io/ingress.class: “alb” are respected by the controller. You may # choose any class you’d like for this controller to respect. - –ingress-class=alb # Name of your cluster. Used when naming resources created # by the ALB Ingress Controller, providing distinction between # clusters. - –cluster-name=k8s-us-west-test-1 # AWS VPC ID this ingress controller will use to create AWS resources. # If unspecified, it will be discovered from ec2metadata. # - –aws-vpc-id=vpc-xxxxxx # AWS region this ingress controller will operate in. # If unspecified, it will be discovered from ec2metadata. # List of regions: http://docs.aws.amazon.com/general/latest/gr/rande.html#vpc_region # - –aws-region=us-west-1 # Enables logging on all outbound requests sent to the AWS API. # If logging is desired, set to true. # - —aws-api-debug # Maximum number of times to retry the aws calls. # defaults to 10. # - –aws-max-retries=10 env: # AWS key id for authenticating with the AWS API. # This is only here for examples. It’s recommended you instead use # a project like kube2iam for granting access. #- name: AWS_ACCESS_KEY_ID # value: KEYVALUE # AWS key secret for authenticating with the AWS API. # This is only here for examples. It’s recommended you instead use # a project like kube2iam for granting access. #- name: AWS_SECRET_ACCESS_KEY # value: SECRETVALUE # Repository location of the ALB Ingress Controller. image: 894847497797.dkr.ecr.us-west-2.amazonaws.com/aws-alb-ingress-controller:v1.0.1 imagePullPolicy: Always name: server resources: {} terminationMessagePath: /dev/termination-log dnsPolicy: ClusterFirst restartPolicy: Always securityContext: {} terminationGracePeriodSeconds: 30 serviceAccountName: alb-ingress serviceAccount: alb-ingress注意cluster-name 指定集群name。创建dashbordkubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml需要创建一个admin用户并授予admin角色绑定,使用下面的yaml文件创建admin用户并赋予他管理员权限,然后可以通过token登陆dashbaord,该文件见admin-role.yamlkind: ClusterRoleBindingapiVersion: rbac.authorization.k8s.io/v1beta1metadata: name: admin annotations: rbac.authorization.kubernetes.io/autoupdate: “true"roleRef: kind: ClusterRole name: cluster-admin apiGroup: rbac.authorization.k8s.iosubjects:- kind: ServiceAccount name: admin namespace: kube-system—apiVersion: v1kind: ServiceAccountmetadata: name: admin namespace: kube-system labels: kubernetes.io/cluster-service: “true” addonmanager.kubernetes.io/mode: Reconcile获取tokenkubectl -n kube-system get secret|grep admin-tokenadmin-token-cs4gs kubernetes.io/service-account-token 3 10mkubectl describe secret admin-token-cs4gs -n kube-system重新部署操作kubeadm resetiptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -Xipvsadm –clearifconfig tunl0 downip link delete tunl0升级kubeadm等升级kubeadmexport VERSION=$(curl -sSL https://dl.k8s.io/release/stable.txt) # or manually specify a released Kubernetes versionexport ARCH=amd64 # or: arm, arm64, ppc64le, s390xcurl -sSL https://dl.k8s.io/release/${VERSION}/bin/linux/${ARCH}/kubeadm > /usr/bin/kubeadmchmod a+rx /usr/bin/kubeadm升级kubectlexport VERSION=$(curl -sSL https://dl.k8s.io/release/stable.txt) # or manually specify a released Kubernetes versionexport ARCH=amd64 # or: arm, arm64, ppc64le, s390xcurl -sSL https://dl.k8s.io/release/${VERSION}/bin/linux/${ARCH}/kubectl > /usr/bin/kubectlchmod a+rx /usr/bin/kubectl升级kubeletexport VERSION=$(curl -sSL https://dl.k8s.io/release/stable.txt) # or manually specify a released Kubernetes versionexport ARCH=amd64 # or: arm, arm64, ppc64le, s390xcurl -sSL https://dl.k8s.io/release/${VERSION}/bin/linux/${ARCH}/kubelet > /usr/bin/kubeletchmod a+rx /usr/bin/kubelet ...

December 19, 2018 · 15 min · jiezi

AWS实战 - EC2权限控制的简单总结

介绍简单总结EC2的文档发现,对AWS EC2的权限进行控制,包含三层意思:第一是对使用EC2及EC2相关的AWS服务的权限控制,比如创建、运行EC2或者使用EC2相关的AMI,创建VPC等相关操作的权限控制;第二是EC2实例中运行的应用程序访问AWS资源的权限控制,比如授予EC2中的应用程序相应权限以访问S3资源;第三是EC2中的操作系统的不同用户对EC2的访问控制。1.对EC2及相关服务的权限控制这部分与之前的文章AWS实战 - 利用IAM对S3做访问控制中提到的对S3的访问控制原理是一样的,都是通过设定不同权限的IAM用户来达到权限控制的效果。不同之处有两点:S3除了可以使用基于用户的IAM策略,还可以使用基于资源的ACL和储存桶策略,而EC2则没有基于资源的策略,只能使用IAM用户策略;EC2的权限控制更复杂,涉及到的资源更多;例如如果要授予某用户启动EC2实例的权限,还需要授予其使用AMI的权限,创建VPC的权限,创建密钥对的权限等等,完整的权限策略json如下,可以看到涉及到的resource较多:{ “Version”: “2012-10-17”, “Statement”: [{ “Effect”: “Allow”, “Action”: “ec2:RunInstances”, “Resource”: [ “arn:aws:ec2:region::image/”, “arn:aws:ec2:region:account:instance/”, “arn:aws:ec2:region:account:volume/”, “arn:aws:ec2:region:account:key-pair/”, “arn:aws:ec2:region:account:security-group/”, “arn:aws:ec2:region:account:subnet/”, “arn:aws:ec2:region:account:network-interface/*” ] } ]}正是由于EC2权限涉及较多资源,在AWS官方文档中,列举了十几种不同情况下的权限CASE,详情参考使用AWS CLI或AWS SDK的策略示例和用于Amazon EC2控制台的策略示例。2.对EC2中的应用程序的权限控制如果EC2中的应用程序需要访问AWS资源,我们当然可以将相关的用户凭证储存在EC2中供应用程序使用,但如果需要修改、调整用户凭证,可能需要对每一个实例、应用程序都做处理。更推荐的做法是将IAM角色附加给EC2实例,EC2中的应用程序从EC2元数据获取该角色的临时安全凭证,从而取得角色对应的权限。例如,一名开发人员在EC2实例上运行一个应用程序,该应用程序要求访问名为photos的S3存储桶。管理员创建Get-pics服务角色并将该角色附加到EC2实例。在该实例上运行应用程序时,应用程序可以使用该角色的临时凭证访问photos。管理员不必向开发人员授予访问照片存储桶的权限,开发人员完全不必共享或管理证书。具体步骤可参考使用IAM角色向在Amazon EC2实例上运行的应用程序授予权限。3.在Linux实例上管理用户一般来说,每个linux EC2实例的默认用户都是ec2-user,如果有需要也可以增加,这部分与普通的linux系统增加用户没有区别,也与AWS的IAM用户没有任何关联,只是这里的用户只能通过密钥的方式连接ec2,不能使用密码,详情参考在Linux实例上管理用户账户。

December 19, 2018 · 1 min · jiezi

AWS实战 - IAM角色的简单使用

介绍简单来说,IAM角色是一组权限的集合,IAM用户或者AWS服务可以临时性代入这个角色,获得角色所拥有的权限;AWS官方定义如下:IAM角色类似于用户,因为它是一个AWS实体,该实体具有确定其在AWS中可执行和不可执行的操作的权限策略。但是,角色旨在让需要它的任何人代入,而不是唯一地与某个人员关联。此外,角色没有关联的标准长期凭证(密码或访问密钥)。相反,如果用户担任某个角色,则会动态创建临时安全凭证并为用户提供该凭证。实战在AWS实战 - 利用IAM对S3做访问控制中,我们的实战案例里有一个存储桶derek-public2,除了Harp-Admin,其余IAM用户都只有只读权限,现在我们来建立一个拥有写入该存储桶权限的角色,以便在某些特殊情况下,普通IAM用户可以临时代入这个角色来修改存储桶。使用Harp-Admin登录IAM控制台,点击角色,创建角色;在选择受信任实体的类型里,选择其他AWS账户,在账户ID中输入本AWS账号的ID;需要外部ID一般在授权其他AWS账户代入此角色的时候使用,需要MFA验证看情况选择;点击下一步,到了权限策略页面,直接选择创建策略即可,权限策略如下,命名为edit_public2:{ “Version”: “2012-10-17”, “Statement”: [ { “Effect”: “Allow”, “Action”: [ “s3:ListBucket” ], “Resource”: [ “arn:aws:s3:::derek-public2” ] }, { “Effect”: “Allow”, “Action”: [ “s3:PutObject”, “s3:PutObjectAcl”, “s3:GetObject”, “s3:GetObjectAcl”, “s3:DeleteObject” ], “Resource”: [ “arn:aws:s3:::derek-public2/*” ] } ]}策略创建完成,回到创建角色页面,勾选edit_public2,需要注意的是,一个IAM用户切换角色后,它只会拥有角色赋予的权限,不会拥有IAM用户原先自带的权限,因此为了正常访问S3,我们再勾选s3_common_policy;下一步创建tag,再下一步,角色名称填写为Public2_Manager,点击创建,角色创建完成;为了让账户下的普通IAM用户可以正常访问IAM控制面板,我们直接给之前创建的s3_common_group组添加一条AWS托管策略IAMReadOnlyAccess;为了给IAM用户赋予切换角色的权限,我们需要再创建一条策略,附加给s3_common_group,策略json如下:{ “Version”: “2012-10-17”, “Statement”: { “Effect”: “Allow”, “Action”: “sts:AssumeRole”, “Resource”: “arn:aws:iam::712538533226:role/Public2_Manager” }}使用user1登录,进入S3,在derek-public2中创建文件夹,提示失败;点击右上角用户处,点击切换角色,跳转到切换角色页面,账户文本框中输入账户ID,角色输入Public2_Manager,然后点击切换角色;此时在derek-public2存储桶下,已经可以正常建立文件夹了;通过控制台的角色切换在一个小时后自动失效,需要重新切换,也可以手动退出角色;也可以使用cli的方式切换角色,详见切换到IAM角色(AWS CLI);

December 14, 2018 · 1 min · jiezi

一篇文章带你看懂AWS re:Invent 2018大会,揭秘Amazon Aurora

本文由云+社区发表| 本文作者: 刘峰,腾讯云NewSQL数据库产品负责人。曾职于联想研究院,Teradata北京研发中心,从事数据库相关工作8年。2017年加入腾讯数据库产品中心,担任NewSQL数据库产品负责人。云数据库与传统数据库的战争已打响,一个字概括就是“抢”。 如火如茶的 AWS re:Invent 2018大会闭幕了,相信云养鹅的产品经理们又准时打开油管,Recap一年一度的科技盛宴。 据说今年一共发布了140多项产品服务,但是,Amazon Aurora 数据库 仍然位居 “Fastest growing service in AWS history” 即AWS历史上增长最快的服务,所以如果没有时间又不想错过Aurora最精彩的内容的话,浏览下本文就可以了。【背景】Aurora是Amazon在2014 AWS re:Invent大会上推出的一款全新的云原生关系型数据库,为云打造。 性能和可用性与商用数据库相当,成本只有其 1/10。战场1: 抢用户 - 清晰用户画像,做实头部客户 Aurora仍然是AWS史上增长最快的产品,AWS前100的头部客户已经有3/4在使用Aurora. 2014年底推出至今,官方从没有对外披露过运营数据。不论情况是否属实,“AWS史上增长最快的产品“ 造势成功,在公司内部成功的抢到了3/4的头部客户。这次大会官方首次公开描述了Aurora的用户画像,即什么人在用Aurora,从引擎角度将用户分为两类:A. 使用开源引擎的用户 比社区版5倍的性能提升 更高的可用性和持久性 成本减少了60% 易迁移 业务零改动B. 使用商业数据库的用户 1/10的成本,不需购买许可证 可结合整个AWS生态 具备商用数据库级别的性能和可用性 AWS提供了迁移工具和服务战场2: 抢数据 - 向商业数据库开战距 Larry Ellison 回应CNBC采访宣称Amazon不可能在2020年完成去O不到四个月,AWS CEO上周 Jassy发话,到2018年底,AWS 88%的Oralce数据库和97%的核心系统的数据库都会迁移到Aurora 和DynamoDB,并在2019年底前彻底去O。不仅仅是Oracle,AWS的数据迁移服务DMS和模式转换工具SCT 开始支持从Oracle,SQL Server,MongoDB,Cassandra,IBM DB2 到 Aurora的迁移。不仅如此,在功能和用户体验上也下足了功夫:增加了迁移向导(Step by Step), 支持迁移转换的工作量评估,SCT转换率高达90%,还是自动的。支撑原生迁移工具例如 pgdump横向上全面支持“同构”,“异构”以及支持“原生”的迁移能力。纵向上则把产品体验,迁移全流程,核心功能以及生态兼容的配套设施 “面面俱到”。战场3: 抢行业 - 支持各种行业认证和标准有了产品,有了渠道,安全合规性是政府,金融行业上云的最后一公里。AICPA:美国注册会计师协会 (AICPA)旗下IT审计和信息安全管理的权威认证(SOC)ISO9001: ISO9000族标准所包括的一组质量管理体系核心标准之一。用于证实组织具有提供满足顾客要求和适用法规要求的产品的能力,目的在于增进顾客满意ISO27001:提供了一套综合的、由信息安全最佳惯例组成的实施规则,其目的是作为确定工商业信息系统在大多数情况所需控制范围的唯一参考基准 PCI DSS:Payment Card Industry (PCI) Data Security Standard 第三方支付行业(支付卡行业PCI DSS)数据安全标准 HIPPA:Aurora 版本符合 HIPAA 要求,可通过与AWS签署《业务合作协议》(BAA),使用它们构建HIPAA 合规应用程序并存储医疗保健相关信息(包括受保护的健康信息 [PHI] FedRAMP: 美国政府联邦机构在使用 AWS 云服务来处理、存储和传输联邦政府数据。政府层面的安全授权计划。所有美国联邦机构和所有云服务均须落实 FedRAMP战场4: 抢场景 - DBA可以用嘴管理AWS数据库了Alexa: 就是亚马逊的Siri,腾讯的小微,百度的小度,阿里的天猫精灵。没想到AWS合作伙伴Slalom将Alexa和RDS的Performance Insight 集成,DBA可以:语音查询目前Ohio的数据库运行状况;语音查询过去两天北加州数据的运行问题;语音查询导致问题的业务;语音查询业务归属的用户;语音发邮件通知该用户另外,通过Database Activity Monitoring数据库行为监控服务,可以将数据数据库日志通过Amazon Kinesis流数据平台吐给第三方日志/流数据处理软件中例如McAfee,IBM Guardium,Imperva进行定制化分析和可视化展示。战场5: 抢未来 - Aurora Serverless 数据库服务的蓝海Aurora Serverless的使用场景:低频应用:例如个人网站博客不可预测业务:新游戏开发测试环境:临时,半夜,周末需要。多租户SaaS应用 Aurora Serverless的好处:用时开启,不用关闭根据业务自动扩缩容业务端无感知按秒付费,不用不收钱Aurora Serverless符合低频小数据量的IoT场景。用户可以是一个摄像头,一台相机,一双Nike智能鞋,一个GPS,一台游戏机,一副智能眼镜,一部智能手机,一块智能手表,一个蓝牙耳机。此次新发布支持了PG版本,可以在IoT场景更有效发挥PG数据库的优势。Aurora Serverless按使用付费,按计算能力付费,是云计算最终的产品形态。此文已由作者授权腾讯云+社区发布搜索关注公众号「云加社区」,第一时间获取技术干货,关注后回复1024 送你一份技术课程大礼包! ...

December 7, 2018 · 1 min · jiezi