Oracle免费云服务-永远免费

云服务现状-ARM与x86

目前提供ARM架构云服务器的厂商,只有amzaon和oracle,谷歌和微软暂时没有计划

  • amazon的AWS采用Graviton处理器
  • oracle cloud采用Ampere架构处理器

ARM是什么

ARM,全称为Advanced RISC Machine,是英国Acorn有限公司设计的一款低功耗、低成本RISC微处理器。1983年ARM架构问世,成本低、功耗小,是轻型便携设备‌理想选择,如手机、笔记本和平板等。

ARM vs x86

X86是Intel研发的一种微处理器体系结构的泛称,它采用的是CISC(全称是Complex Instruction Set Computers,即复杂指令集计算机),以增加处理器本身复杂度作为代价,去换取更高的性能,但集成的指令集数量越来越多,给硬件带来的负荷也就越来越大,无形中增加了功耗和设计难度。

于是,RISC(全称Reduced Instruction Set Computers,即精简指令集计算机)诞生了,其设计初衷便是通过精简指令系统减少硬件设计的复杂程度,提高指令执行速度。在RISC中,无论简单还是复杂的操作,均由简单指令的程序块完成,因此在性能上RISC可能有所不如,但在功耗上RISC却比CISC低很多。

所以,可以这样通俗的理解,CISC的代表为X86架构,而RISC的代表则为ARM架构,ARM与X86的区别就是RISC与CISC的区别。

Ampere A1机型优势

Ampere A1提供每CPU80核的Ampere Altra处理器,所有的核都能够以3.0GHz的最高频率稳定运行,每个核都有自己的64KB L1 指令高速缓存、64KB L1数据高速缓存和高达1MB L2 数据高速缓存,并提供可预测的性能

在基于行业标准的SPECrate2017 Benchmark测试中,Ampere A1实例的性价比是其他ARM服务器实例的2.5倍,而比较起基于x86的英特尔Skylake或AMD Naples实例来说,Ampere A1实例的性价比更是其4倍以上。与OCI的高性能云架构相结合,基于Ampere Altra处理器的Ampere A1在云中提供了最好的性价比。

灵活的CPU和内存配比

OCI为客户提供三种基于ARM的计算选择:灵活虚机、强大裸金属以及专用区域Cloud@Customer,分别适用于有不同需求的客户。

OCI独有的、灵活的CPU和内存配比方式,能支持企业选择任意数量的CPU核数(1-80核)和内存(1-512GB)来满足企业的工作负载需求,而不再局限于选择具有4个、8个或16个核以及每个核的静态内存比率的固定虚机(VM)大小。这种灵活性使客户能够构建更好地匹配工作负载需求的VM,从而在优化成本的同时获得最佳性能。

线性可伸缩性和可预测的性能

性能对于云端的工作负载至关重要。Ampere Altra处理器旨在云中所需的规模下提供可预测的性能,其处理器的单线程核则能确保任何时候资源都不会被抢占。因此,对于特定的云端工作负载,这些基于ARM的CPU并不依赖通过超频来实现更高的性能,其能持续3.0GHz的最大频率并提供可预测的性能。同时,Altra的单线程内核和缓存设计还确保了随着内核数量的增加,性能几乎呈线性增长。这尤其有利于计算密集型工作负载,如媒体编码、加密、AI推断和HPC

永远免费的OCI

All Oracle Cloud Infrastructure accounts (whether free or paid) have a set of resources that are free of charge for the life of the account. These resources display the Always Free label in the Console (for Ampere A1 Compute shapes, see Compute).

Using the Always Free resources, you can provision a virtual machine (VM) instance, an Oracle Autonomous Database, and the networking, load balancing, and storage resources needed to support the applications that you want to build. With these resources, you can do things like run small-scale applications or perform proof-of-concept testing.

选择合适的os镜像和cpu数量/型号

远程无法ping通是被墙了吗

这时候发现直接ping公网地址,是无法ping通的,不管从阿里云还是本地使用vpn的笔记本,这是由于安全列表里没有开通icmp的权限,如下操作后就可以ping通了,不过稍后要删除这条规则。

使用密钥登陆服务器

首先进入私钥存储的目录,修改文件权限为只读

chmod 400 <private_key_file>

然手使用ssh -i命令登陆远程服务器,由于使用了ubuntu的镜像文件,这里的用户名就是ubuntu,如果没有和私钥在同一目录下,也需要把目录地址一起带上

ssh -i <private_key_file> <username>@<public-ip-address>

参考信息
腾讯
Oracle官网
墨天轮介绍OCPU实例开通

初探minikube

  1. dashboard
    使用一条简单命令,就可以启动dashboard服务,不过这个服务是构建在docker里的,所以在os里,使用systemctl 没法显示出来。

    如果要查看k8s管理的服务有哪些,可以使用如下命令
k8s@MDaliyun:~$ kubectl get namespaces

显示所有namespaces

将本地电脑的12345端口映射到远程服务器的对应端口(-L参数–本地,-R参数–远程),执行后需要输入k8s这个用户的密码.
这里需要解释一下:

  • 通用命令是:ssh -L 本地ip:本地端口:目的ip:目的端口 user@server_ip
  • 当源ip就是本机时,可以省略,如果需要绑定同一个局域网的另外一台机器时,就要把源ip写上,例如192.169.1.2.
  • 目的ip,是我们要映射的server的127.0.0.1,也就是localhost,当然,也可以是与映射server同一个局域网的其他机器,例如172.0.0.10,或者域名地址(需要私网域名解析)
  • 当然,这就带来一个非常大的好处,比如我们在远程服务器上,如果有一个docker服务需要暴露8080端口时,如果采用ssh映射方式,就不需要云服务器开通安全组了。
ssh -L 12345:localhost:12345  k8s@server_ip 

执行成功后,打开下面的链接,就可以使用本地浏览器管理dashboard了

http://127.0.0.1:12345/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/#/namespace?namespace=default

如果要暂停dashboard的服务,没有stop之类的命令,可以采用资源降级、删除对应namesapce、

k8s@MDaliyun:~$ kubectl scale deployment kubernetes-dashboard -n kubernetes-dashboard --replicas=0
deployment.apps/kubernetes-dashboard scaled

删除pod相关资源后,本地浏览器的dashboard呈现菊花状态

ssh隧道映射也就失效了

  1. http service

  2. 其他命令
    获取更详细的pod资料

k8s@MDaliyun:~$ kubectl describe pods -n kubernetes-dashboard
Name:             dashboard-metrics-scraper-5dd9cbfd69-tz9xq
Namespace:        kubernetes-dashboard
Priority:         0
Service Account:  kubernetes-dashboard
Node:             minikube/192.168.49.2
Start Time:       Wed, 30 Aug 2023 17:04:26 +0800

从minikube到portainer

下午原计划从b站的“三小时学会k8s”入手,没想掉入portainer的坑,还好一切顺利

portainer

portainer是一个非常轻量化的docker管理工具,图形化界面,支持ubuntu,安装过程如下

  1. 首先建立一个docker的专门目录 docker_project,进入目录
    mkdir portainer

  2. 在portainer目录下,建立一个docker compose可以使用的yml文件:
    nano docker-compose.yml
    文件内容如下,其中8083是宿主机的端口号,需要请云主机管理员帮你打开权限:

    version: '3'
    services:
      portainer:
        image: portainer/portainer-ce
        container_name: portainer
        ports:
          - "8083:9000"
        volumes:
          - /var/run/docker.sock:/var/run/docker.sock
          - portainer_data:/data
    volumes:
      portainer_data:
    
    
  3. 使用如下命令,上面的yml文件相当于定义了portainer service的启动配置,也就是使用‘portainer/portainer-ce’的镜像文件,并绑定到8083端口上(9000是容器的端口),而且创建了portainer data卷。使用docker-compose 命令启动portainer容器
    docker-compose up -d

  4. 好了,使用浏览器进入本地或者你的远程服务器地址:8083,就可以对服务器上的docker进行管理。

minikube

  1. 首先安装kubectl,这是一个用来管理k8s集群的命令行工具,对于管理部署、services、pods和其他资源非常关键,在ubuntu的默认包里是没有的,所以需要从k8s官方repo里下载最新版本。

    sudo apt install curl
    curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
    chmod +x kubectl
    sudo mv kubectl /usr/local/bin/
    
    

    上述命令下载最新kubectl后,修改其属性为可执行,然后把它移动到path目录以便可以从terminal里执行。
    然后对安装结果进行校验

    kubectl version --client
    

    下面是巨坑时刻,折腾了1个小时,因为dl.k8s.io在google上,总是下载失败,所以按照chatgpt建议打算替换如下国内镜像:

        https://dl.k8s.io
    
    curl -LO "https://mirrors.ustc.edu.cn/kubernetes/apt/dists/kubernetes-jessie/release/$(curl -L -s https://mirrors.ustc.edu.cn/kubernetes/apt/dists/kubernetes-jessie/release/stable.txt)/bin/linux/amd64/kubectl"
    
    curl -LO "https://mirrors.aliyun.com/kubernetes/$(curl -L -s https://mirrors.aliyun.com/kubernetes/stable.txt)/bin/linux/amd64/kubectl"
    
    KUBE_VERSION=$(curl -L -s https://mirrors.cloud.aliyuncs.com/kubernetes/stable.txt)
    curl -LO "https://mirrors.cloud.aliyuncs.com/kubernetes/${KUBE_VERSION}/bin/linux/amd64/kubectl"
    
    curl -L -s https://mirrors.cloud.aliyuncs.com/kubernetes/stable.txt
    
    https://mirrors.aliyun.com/kubernetes/
    https://mirrors.ustc.edu.cn/kubernetes/
    

    当然还是失败,最终多问了几次chatgpt,按照如下方式安装成功

    sudo apt update
    sudo apt install snapd
    

    Once you have snapd installed and the system restarted (if necessary), you can now install kubectl using snap:

    sudo snap install kubectl --classic
    kubectl version --client
    

    minikube start

    What you’ll need
    2 CPUs or more
    2GB of free memory
    20GB of free disk space
    Internet connection
    Container or virtual machine manager, such as: Docker, QEMU,    Hyperkit, Hyper-V, KVM, Parallels, Podman, VirtualBox, or VMware   Fusion/Workstation
    

    都是钱

    尽量不要使用root账号

    这时候要注意,如果从portainer后台启动minikube的容器,实际是没有运行起来的

    使用none root用户启动minikube

    成功!

    docker run -d -p 8081:80 docker/getting-started

参考
https://www.xtuos.com/214719.html
不使用用docker compose来安装portainer:https://www.jianshu.com/p/ce225a5bfbd1

在m1电脑上重新安装brew并更新系统

MacBook使用笔记:安装Homebrew(M1)(https://zhuanlan.zhihu.com/p/372576355)

作者 | 公众号:程序员的一天

一、Homebrew是什么?

Homebrew官网:

英文:
https://brew.sh
中文:
https://brew.sh/index_zh-cn
Homebrew是MacOS(或 Linux)的软件包管理器。

通过它,我们可以方便的对Mac上的各种应用软件进行管理,例如:安装、更新、查看、搜索、卸载等。

Homebrew,可谓是Mac神器,几乎每一位Mac使用者都会安装它。

用Homebrew官网的一句话总结:

Homebrew 使 macOS(或您的 Linux 系统)更完整。

二、Mac上安装Homebrew

Homebrew 3.0.0版开始,正式支持Apple M1芯片,M1用户放心安装!
第一步:

打开终端。不知道如何打开终端的朋友,请参考:

爱码士:MacBook使用笔记:打开终端
45 赞同 · 2 评论文章

第二步:

在终端命令行窗口输入安装命令。

这里需要特别说明几点内容。

下面是Homebrew官方给出的安装命令:(如果没有VPN,不要使用此命令安装!)

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
通常情况下,官网给出的指令会报错:

curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refused
因为这是国外网站,由于GFW(中国长城防火墙)的存在,如果没有vpn,是无法访问的,所以连接被拒绝!

别着急,有办法解决!

只要我们从国内镜像网站安装,就一切OK了。

以下为国内安装Homebrew的正确姿势:(基于gitee上某大神的自动安装脚本)

/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
回车执行指令后,根据提示操作。具体包括以下提示操作:

(1)选择下载镜像

根据需要选择下载源,例如,我这里选择中科大下载源,就输入‘1’,回车。

(2)确认删除旧版本

如果存在旧版本,会弹出删除旧版本提示,输入"Y",回车。

(3)输入开机密码(用于mac确认第三方应用安装)

(4)安装git

如果之前没有安装过git,会终止homebrew安装,弹出git安装提示,点击“安装”。

(5)再次执行homebrew安装指令

耐心等待git安装完成后,再次运行homebrew安装指令,重新根据提示操作即可。

安装需要一段时间,过程中,可以在终端看到脚本执行了那些操作。

(6)验证是否安装成功

安装脚本执行完成后,重启终端。(重启后才生效)

通过在终端输入"brew -v",可以查看homebrew版本。

如果正确输出版本信息,表示成功安装。

虽然叫做’Homebrew’,但实际使用时,命令是’brew’。
qiuxiannv@qiuxiannvdeMBP ~ % brew -v
Homebrew 3.1.7-42-gd45832b
Homebrew/homebrew-core (git revision 09d1a8b385; last commit 2021-05-15)
Homebrew/homebrew-cask (git revision c1dad4a5cf; last commit 2021-05-15)
qiuxiannv@qiuxiannvdeMBP ~ %
在M1芯片上,homebrew的安装路径为:"/opt/Homebrew/"
三、Homebrew卸载

如需卸载,使用指令:

/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/HomebrewUninstall.sh)"
如果有用,点个赞吧~

END
发布于 2021-05-16 01:16

隔壁同事离职留下的痕迹

隔壁同事昨天离职,我恰好去临港见客户,错过了他的last day,他留下了几本书要送给同事们。

刚刚发了微信,简单聊了几句,互相留下对未来的美好祝愿。

从去年9月(22年)开始,公司启动了持续裁员,从最初的n+2,到23年6月n+1,然后恢复到这波n+2。送走了一批又一批同事后,也在默默准备着自己的离开。

18年主动离开上一家公司时,没有索要任何赔偿,43岁的我还觉得精力充沛,这5年的经历也让自己受益良多,只不过不愿意再为其他人拼搏奋斗了。

总想着要好好利用剩下的50年,虽然不明确要做什么,但诚实待己、追寻真相,才是要遵循的原则。

要继续学习,把这个宇宙看的真真切切,才不枉此行

同事离职后的痕迹

石康的新浪微博

以下内容摘录自石康8月2日新浪微博,特别是他的最后一段话,“我的理由是每个人只有一生可过,错过某些重要的信息,就会错失某些本应属于你的人生”


声明:

多年以来,我一直喜欢把新浪微博当成我的草稿本,在上面随便写写画画,记下某种想法,以便以后整理后使用,以免丢失。
最近半年都在写一些与AI相关的事情,好笑的是,现在国产AI终于发力了,竟然令我无法把文章发在我真正的记录本——公众号上。
原因是公众号的AI根本没能力分清谁是原创,谁是摘抄者,明明是有人盗版、摘抄了我的文章,公众号的AI——包括各种管理员及客服,却认为我贴出的旧文与网上的“别的文章相似度过高”,从而不许我发表,我的申诉也被驳回,且只有一次申诉机会。
我现在只好静待腾讯的AI慢慢进步至能分辩出谁是原创谁是抄袭者了——没想到这一点对他们来讲居然是个挑战,可能他们需要雇几个贵一点的工程师了,国产工程师其实是抄袭与盗版的重灾区,这也是我一直为郭敬明辩护的原因,有这些工程师在,郭敬明差不多就算偷盗者的榜样,人家虽然不道歉,但赔偿,仅凭这一点,就让那些品质远比他恶劣的工程师追三代人的。

好了,没办法再使用新浪微博当草稿本了,我需要习惯于使用收费的公众号当我的新草稿本了。也许以后会把它发展成一个档案本,把我从前写的东西整理后慢慢贴上去,我并不认为它们在人类思想这一范围内有什么价值,无论是文学上,还是在戏剧上,或是在其它什么体裁上。
从我得到的回应来看,很清楚,需要这些信息人数极少——但并不是没有。

我的收费策略现在看来挺成功的。
它的主要目的是为了把那些与我发布的信息完全无关的人员赶走,他们至今仍不懂得信息的真正价值,所以不懂得为他们需要的信息付费,他们是被动地接收新浪推送的信息,以为是白来的信息最令他们快乐,为此不惜浪费他们宝贵的生命时间。
事实上,我觉得他们都搞砸了,并且以后仍会继续,因他们没有搞清一些人生在世最基本的东西,而且越是这样, 就越是没有机会去搞清。

对于他们,我认为最好的方式就是不在他们身上花时间。
因为有效的概率不是趋向于零,或是接近零,而就是零。
因为这些人已永远地失去了接受重要信息的能力。
这些信息对他们来讲是全新的,完全无法理解,就像他们完全无法理解数学描述一样——我一直认为这件事居然发生在2023年极为好笑。

我发现,我的发出的信息总是会从某些我完全无法预料的角度伤害他们,令他们反弹,回击我,还有一些感叹也令我觉得好笑,比如有一位叹道:“没用看了没用是真的,糊里糊涂的活着还舒服些。最怕什么都懂了,却逃不出去。”
脑子混乱至如此,就连你告诉他“只要懂得一点点,你当然就能逃出去”他也不会相信。这样的人的自我描述倒是挺准确的:“没用看了没用是真的,糊里糊涂的活着还舒服些。”
不过下面就暴露了智能有问题,我是说,不仅是对自己“什么都懂了”这一假设,还有在前面加上“最怕”,我真的认为大脑混乱如此的人看我发出的信息是一种错误,是我坚持认为”必须被纠正的错误“。

这些情况是信息严重不对称的结果。
更不是我的初衷。
我一再声明,我不想伤害任何人,只是想把我认为重要的信息送至那些需要它们的人手中。
我的理由是每个人只有一生可过,错过某些重要的信息,就会错失某些本应属于你的人生,这种情况就发生在我身上,因此我痛惜之余,才愤然提笔告知相关者。
那些人可以通过付费得到它们,从而令自己得益,同时避免无关者受到伤害或因此感到困扰。

加拿大电工和彭一田的诗

昨天晚上观看了加拿大一个小哥的油管频道(小羽XXX),介绍他从计算机专业转行成为电工的经历。

按照我的情况,真要考虑在异国他乡找工作,就应该多多了解过来人的经历,体会他们的感性认知,结合我的本质需求,然后制定明确的目标和计划。

生存还是一个因素吗?如果通过股票及期权的操作,可以满足日常开支呢?是不是生存问题就不应该是主要考虑的因素了。那么剩下的,就应该是与认识世界、寻找并提升自己有关。否则来到这世上有何意义呢?

修理自行车可以是兴趣,但是以此为生?似乎不是这么一回事。

也许要多看看《狗屁工作》这本书了

下午在pdd上购买了一本彭一田的二手诗集
—————-
彭一田的诗

在眼角
在鼻孔里,在油菜地
在垭口,在坡上
羊肠小道
打谷坪,和天生桥
在黄源冲
坎门
更多微末处
三年了,大片的青草地啊
望不到头
2022.12

在阿里云主机上安装docker并启动服务

#阿里云 #主机维护
• 阿里云的主机os是ubuntu,目前版本20.04.03,今天(20230726)为了安装docker进行了升级,主要是各种老的package的升级,我还没决定是否要把os升级到22.04.2,这个版本跨度有点大了。

在阿里云主机上安装docker并启动一个测试服务的过程
1. 首先确保ubuntu上的各种package是最新的
2. 在ubuntu上安装docker
3. 安装docker的镜像
4. 启动镜像文件

  • 由于镜像文件默认的端口映射是80:80,导致与host上的端口冲突,因此更换为8081
    
    1. 通过域名+端口方式访问服务
  • 不成功,发现原因是阿里云没有开放8081端口
    
  • 去阿里云控制台,ecs云主机-》安全组-〉增加8081-8088端口
    
    1. 可以在本机通过域名方式访问docker的demo 服务了