Sep 082021
 

其实用了k8s很久,但是很多概念的理解,有时候真的需要动手,才能真正理解。

官方文档提供的nginx的deployment模版,我修改一下,采用alpine镜像,副本的数量为1

nginx.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  namespace: default
  labels:
    app: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:alpine
        ports:
        - containerPort: 80

有几个地方需要留意

  • deployment 名字是 nginx-deployment, 后续你可以用 kubectl get svc 看到
  • labels, 标签是:nginx,
  • namespace 如果不指定,就是使用default,我这里专门加入,便于理解。
  • 部署pod的数量是1
  • nginx的alpine镜像,小很多,方便试验。
kubectl apply -f nginx.yaml 
kubectl get pod
kubectl get deployment
kubectl get svc
kubectl expose deployment nginx-deployment --type=NodePort --name=hello
kubectl get svc
kubectl describe svc hello
May 172021
 

已经讨论了很久这套组合,这次动手验证一遍。流程还是非常顺利。从0开始,到部署完成kubesphere,基本2个小时可以搞定,主要是考验带宽。后续再慢慢研究离线安装。

青云设置

青云新的Dashboard改动很多,功能也真的比以前增加了很多很多。我也是需要花时间熟悉一下。其实我以前在青云上测试,基本上一个虚拟机来测试,这次至少要用3个虚拟机,需要vpc来玩,整理一下这个过程

  • 创建一个项目,kubeOperOperator and KubeSphere。青云引入了项目的概念,有点类似Azure的资源组,你可以在项目里看到所用到的资源。
  • 创建一个安全组,安全组有一个选项,组内互通,这个我打开的,应该是比较方便。为了方便,我打开所有的端口。
  • 创建vpc,指定网段,192.168.0.0/16, 创建子网,网段 192.168.10.0/16
  • 公网的ip,绑定在vpc上
  • 创建一个。4core,8g内存,60G存储的虚拟机,CentOS 7.9,用来部署kubeoperator。ip地址,指定 192.168.10.10
  • vpc上,进行端口映射,22,80,映射到192.168.10.10 这台虚拟机上。后续还需要映射30880端口到master节点到内网ip,这里是192.168.10.30
  • NFS Server 也部署在kubeoperator机器上。
  • 创建3台机器,master配置:4core,8G,60G存储,work节点,2core,4G,20G存储。

KubeOperator

安装

对于kubeOperator安装,倒是比较简单,一条命令就搞定。

curl -sSL https://github.com/KubeOperator/KubeOperator/releases/latest/download/quick_start.sh | sh

4M带宽,大概需要20分钟下载。组件都是部署在Dcoker里,通过compose来实现部署到机器上。

地址: http://<ko服务器_ip>:80
用户名: admin
密码: kubeoperator@admin123

相关命令

koctl status
koctl --help

设置

如果你是通过手动的方式来安装的话,倒是比较简单。这里就不截图,只是记录一个过程

  • 设置仓库地址,就是kubeoperator的地址
  • 创建凭证,就是节点root的密码
  • 创建项目
  • 添加主机,一台是master,一台是work节点,这两台机器,提前在青云平台创建。
  • 项目把主机添加到项目里
  • 项目里创建集群:这就是一个K8S集群。
  • k8s部署完毕,进入集群,设置存储:NFS
  • 需要通过kubectl,把NFS存储设置成默认存储,这样就可以顺利进行KubeSphere的安装

你可以在访问创建的集群里玩玩k8s。

安装NFS server

mkdir /data/nfs -p
yum install -y nfs-utils
vim /etc/exports
/data/nfs *(rw,sync,no_root_squash)

systemctl enable --now rpcbind.service
systemctl enable --now nfs-server.service

在部署的cluster里,配置nfs存储,查看存储的sc。你需要设置default 的存储。

> kubectl get sc
NAME              PROVISIONER   RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
mynfs (default)   nas           Delete          Immediate           false                  28m

kubectl patch storageclass mynfs -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'

KubeSphere

安装

KubeSphere的安装,也很简单。因为KubeOperator 提供web的kubectl,直接就可以进行kubesphere的安装

kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.1.0/kubesphere-installer.yaml
   
kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.1.0/cluster-configuration.yaml

等着就可以,可以通过命令,查看安装的进度。

kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-install -o jsonpath='{.items[0].metadata.name}') -f

安装过程,如果看到出现错误,例如我没设置默认存储,你配置完成默认存储后,你需要重启pod,继续安装

kubectl -n kubesphere-system rollout restart deploy

查看登陆地址

kubectl get svc/ks-console -n kubesphere-system

kubesphere web 端口是 30880,并通过 NodePort (IP:30880) 使用默认帐户和密码 (admin/P@88w0rd) 访问 Web 控制台。记得去vpc上做30880的端口映射。

配置

默认的安装,是没有包括devops的相关组件,这个可以通过web方式启用,也可以通过修改配置文件搞定。

Mar 262021
 

这里面其实就是记录一下做一个指定版本的镜像,所需要做的东西。假设DIB和virt已经装好。下面就是一个实际的操作过程。可以参考我上一篇文章。国内目前好像就中科大提供镜像下载。我这里下载的是7.6

https://mirrors.ustc.edu.cn/centos-cloud/centos/7/images/

我习惯就是

mkdir cloud-images
cd cloud-images
curl -O https://mirrors.ustc.edu.cn/centos-cloud/centos/7/images/CentOS-7-x86_64-GenericCloud-1905.qcow2

安装DIB和Virt

yum install centos-release-openstack-train -y
yum install diskimage-builder -y
yum install libguestfs-tools-c libguestfs-tools libguestfs -y

设置环境变量, 如何你希望再build一个centos 7.9 镜像,那么你只需要把 avoid pacage update 这个去掉就可以。

export LIBGUESTFS_BACKEND=direct
export DIB_LOCAL_IMAGE="/root/cloud-images/CentOS-7-x86_64-GenericCloud-1905.qcow2" 
export DIB_RELEASE=7
export DIB_CLOUD_INIT_ALLOW_SSH_PWAUTH="yes"
export DIB_AVOID_PACKAGES_UPDATE=1
export image_name='CentOS-7.6-x86.qcow2'

设置好环境变量,后续就简单了。

openstack平台

DIB_CLOUD_INIT_DATASOURCES="ConfigDrive, OpenStack"  disk-image-create -a amd64 -o $image_name  -x --image-size 40 vm base centos disable-selinux cloud-init cloud-init-datasources dhcp-all-interfaces growroot epel

Zstack

disk-image-create -a amd64 -o  $image_name -x --image-size 40 vm base centos disable-selinux cloud-init dhcp-all-interfaces epel

这样也就几分钟就可以创建出镜像。

# 设置时区

virt-customize -a $image_name --timezone "Asia/Shanghai" 

#安装工具

virt-customize -a $image_name --install epel-release

virt-customize -a $image_name --install net-tools,wget,vim,unzip,qemu-guest-agent,jq,bash-completion

virt-customize -a $image_name --install net-tools,wget,vim,unzip,qemu-guest-agent,jq,bash-completion,yum-utils,device-mapper-persistent-data,lvm2,openssl,socat,conntrack,ebtables,ipset,sysstat,iotop,iftop,nload,bridge-utils,bash-completion,bind-utils,nc,binutils,iscsi-initiator-utils,kmod-xfs,xfsprogs,sg3_utils-devel.x86_64,sg3_utils-libs.x86_64,sg3_utils.x86_64,psmisc

#启动服务
virt-customize -a $image_name --run-command 'systemctl enable qemu-guest-agent' 


#SSH服务
virt-customize -a $image_name --edit '/etc/ssh/sshd_config:s/GSS/#GSS/'
virt-customize -a $image_name --edit '/etc/ssh/sshd_config:s/#UseDNS yes/UseDNS no/'

#vim
virt-customize -a $image_name --append-line '/etc/profile:alias vi=vim'
virt-customize -a $image_name --append-line '/etc/profile:unset MAILCHECK'


#查看修改
virt-cat -a $image_name /etc/ssh/sshd_config 


virt-customize -a $image_name --run-command 'yum clean all'
virt-customize -a $image_name --run-command 'yum makecache'

最后一步,安装zstack的agent

virt-customize -a $image_name --firstboot-command '/bin/bash -c "$(curl -s -S http://169.254.169.254/vm-tools.sh)"'

由于zstack的agent,使用9100端口,如果你也使用普罗米修斯来监控,也必然导致端口冲突,所以我修改端口为9104。当多个启动脚本要运行,需要设置一下他们的优先级,默认是安装字母顺序来运行,所以我把重启agent的改成02。

virt-customize -a $image_name --firstboot-command "sed -i 's/9100/9104/g' /usr/local/zstack/zwatch-vm-agent/conf.yaml

virt-customize -a $image_name --firstboot-command. "/bin/systemctl restart zwatch-vm-agent.service"

virt-customize -a $image_name --run-command 'mv /usr/lib/virt-sysprep/scripts/0001--bin-systemctl-restart-zwatch-vm-agent-service /usr/lib/virt-sysprep/scripts/0002--bin-systemctl-restart-zwatch-vm-agent-service'

查看修改后的结果

virt-ls  -a $image_name  /usr/lib/virt-sysprep/scripts

上传镜像

python -m SimpleHTTPServer 80

如果希望定制内核版本

virt-customize -a $image_name --run-command 'rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org'
virt-customize -a $image_name --run-command 'rpm -Uvh https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm'
virt-customize -a $image_name --run-command 'yum --enablerepo=elrepo-kernel install kernel-lt -y'
virt-customize -a $image_name --run-command 'grub2-set-default 0'
virt-customize -a $image_name --run-command 'grub2-mkconfig -o /boot/grub2/grub.cfg'

elrepo在国外,速度很慢。可以修改使用国内的源

sed -i 's#elrepo.org/linux#mirrors.tuna.tsinghua.edu.cn/elrepo#g' /etc/yum.repos.d/elrepo.repo
sed -i 's|^mirrorlist=|#mirrorlist=|g' /etc/yum.repos.d/elrepo.repo

安装docker

virt-customize -a $image_name --run-command 'yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo'
virt-customize -a $image_name --run-command 'yum install docker-ce-20.10.7 -y'
virt-customize -a $image_name --run-command 'systemctl enable docker'
virt-customize -a $image_name --append-line '/etc/profile:KKZONE=cn'

设置docker代理

virt-customize -a $image_name --run-command 'mkdir -p /etc/docker'
virt-customize -a $image_name --upload /etc/docker/daemon.json:/etc/docker/daemon.json 
sudo sh -c 'echo {\"registry-mirrors\": [\"https://fz1p31b1.mirror.aliyuncs.com\"]} > /etc/docker/daemon.json'
Mar 192021
 

这两个工具,都可以对镜像进行定制,有什么区别呢?DIB功能比较强大,灵活,模块化,通过一个一个Element,来实现镜像的定制。Virt-customize,可以让你不需要写代码,搞定基本你想要的定制。

调整镜像的大小,对于DIB来说,就一个参数,对于Virt来说,还是比较折腾的。下面的操作,写成一个脚本。应该都不难了。把镜像的名字改成变量。基本就没问题的。

这次还是基于CentOS官方镜像,进行整个过程的记录。

准备

设置Repo

cd /etc/yum.repos.d/
mkdir backup
mv *.repo ./backup
curl -O http://mirrors.aliyun.com/repo/Centos-7.repo
curl -O http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all
yum list

下载镜像

mkdir cloud-images
cd cloud-images
curl -O https://mirrors.ustc.edu.cn/centos-cloud/centos/7/images/CentOS-7-x86_64-GenericCloud-2003.qcow2

安装DIB和Virt套件

yum install centos-release-openstack-train
yum install diskimage-builder
yum install libguestfs-tools-c

使用libguestfs前,需要运行

export LIBGUESTFS_BACKEND=direct

检查镜像

确认镜像下载的CentOS版本,这点其实挺重要。

virt-inspector -a CentOS-7-x86_64-GenericCloud-1905.qcow2 > c.txt

输出的内容很多,重定向到文本,打开文本,你就基本可以看到下面的信息。你就可以确定你的镜像的版本。

<?xml version="1.0"?>
<operatingsystems>
  <operatingsystem>
    <root>/dev/sda1</root>
    <name>linux</name>
    <arch>x86_64</arch>
    <distro>centos</distro>
    <product_name>CentOS Linux release 7.6.1810 (Core) </product_name>
    <major_version>7</major_version>
    <minor_version>6</minor_version>
    <package_format>rpm</package_format>
    <package_management>yum</package_management>
    <hostname>localhost.localdomain</hostname>
    <osinfo>centos7.0</osinfo>
    <mountpoints>
      <mountpoint dev="/dev/sda1">/</mountpoint>
    </mountpoints>
    <filesystems>
      <filesystem dev="/dev/sda1">
        <type>xfs</type>
        <uuid>60d67439-baf0-4c8b-94a3-3f10a362e8fe</uuid>
      </filesystem>

DIB

先用DIB,对镜像做一下标准对动作。

设置环境

export DIB_LOCAL_IMAGE="/root/cloud-images/CentOS-7-x86_64-GenericCloud-2003.qcow2"
export DIB_DISTRIBUTION_MIRROR="https://mirrors.ustc.edu.cn/centos"
export DIB_RELEASE=7
export DIB_CLOUD_INIT_ALLOW_SSH_PWAUTH="yes"

有一点你需要注意的,不管你下载的是那个CetnOS 7的镜像,DIB都会将他升级到最新的版本的CentOS,当前是CentOS 7.9。

如果你就只需要一个固定版本的镜像,那么你下载这个版本的镜像回来。加上下面的参数。另外镜像里面的base repo,你也是需要小心处理。需要在repo里指定版本,这样才能避免yum update 或 yum upgrade 升级系统。

export DIB_AVOID_PACKAGES_UPDATE=1

这样就可以开始构建镜像

DIB_CLOUD_INIT_DATASOURCES="ConfigDrive, OpenStack"  disk-image-create -a amd64 -o CentOS_Linux_release_7.8.2003.qcow2  -x --image-size 40 vm base centos disable-selinux cloud-init cloud-init-datasources dhcp-all-interfaces growroot

如果不是OpenStack平台的虚拟机使用,那么这个地方需要注意,例如zstack平台,要注意差异,growroot,这个功能,Zstack平台是不用的。growroot,是创建的时候,调整根分区的大小,Flavor,定义的磁盘大小。

DIB_CLOUD_INIT_DATASOURCES="ConfigDrive, Ec2"  disk-image-create -a amd64 -o CentOS_Linux_release_7.8.2003.qcow2  -x --image-size 40 vm base centos disable-selinux cloud-init cloud-init-datasources dhcp-all-interfaces

都启用EC2和OpenStack,会导致虚拟机启动速度慢。

好好看看这篇文章:https://mp.weixin.qq.com/s/hDe7djVI0ZufkrApoMpWjw

默认虚拟机是才有bios启动,如果你希望改成UEFI启动,那么你可以加入下面参数就可以。

block-device-efi 

应该很快,20分钟,就可以完成第一个镜像的构建。后续再做修改,时间就会短很多。把镜像的大小调整成40G。

# qemu-img info CentOS_Linux_release_7.8.2003.qcow2 
image: CentOS_Linux_release_7.8.2003.qcow2
file format: qcow2
virtual size: 40G (42949672960 bytes)
disk size: 619M
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false
    refcount bits: 16
    corrupt: false

# virt-filesystems -a CentOS_Linux_release_7.8.2003.qcow2 --long --parts --blkdevs -h
Name       Type       MBR  Size  Parent
/dev/sda1  partition  83   40G   /dev/sda
/dev/sda   device     -    40G   -

virt-customize

后续使用这个工具来完成我们对镜像的定制。

# root 密码
#virt-customize -a CentOS_Linux_release_7.8.2003.qcow2 --root-password password:chenshake 

# 设置时区

virt-customize -a CentOS_Linux_release_7.8.2003.qcow2 --timezone "Asia/Shanghai" 

#安装工具

virt-customize -a CentOS_Linux_release_7.8.2003.qcow2 --install [net-tools,wget,vim,unzip,qemu-guest-agent] 

#启动服务
virt-customize -a CentOS_Linux_release_7.8.2003.qcow2 --run-command 'systemctl enable qemu-guest-agent' 


#SSH服务
virt-sysprep -a CentOS_Linux_release_7.8.2003.qcow2 --edit '/etc/ssh/sshd_config:s/GSS/#GSS/'
virt-sysprep -a CentOS_Linux_release_7.8.2003.qcow2 --edit '/etc/ssh/sshd_config:s/#UseDNS yes/UseDNS no/'


#查看修改
virt-cat -a CentOS_Linux_release_7.8.2003.qcow2 /etc/ssh/sshd_config 


#上传优化脚本和运行

virt-customize -a CentOS_Linux_release_7.8.2003.qcow2 --upload /root/centos.sh:/root/centos.sh 
virt-customize -a CentOS_Linux_release_7.8.2003.qcow2 -chmod 755:/root/centos.sh 
virt-customize -a CentOS_Linux_release_7.8.2003.qcow2 --run '/root/centos.sh'

安装Zstack的agent

virt-customize -a CentOS_Linux_release_7.8.2003.qcow2 --firstboot-command '/bin/bash -c "$(curl -s -S http://169.254.169.254/vm-tools.sh)"'

脚本,逐步完善,目前已经可以满足我使用

!/bin/bash

#yum seting
cd /etc/yum.repos.d/
mkdir backup
mv *.repo ./backup
curl -O http://mirrors.aliyun.com/repo/Centos-7.repo
curl -O http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all
cd -
# only for centos 7.6
#sed -i 's/$releasever/7.6.1810/g' /etc/yum.repos.d/Centos-7.repo
#vim
echo 'alias vi=vim' >> /etc/profile

脚本如果需要指定版本的centos镜像,我们需要考虑在脚本加入一行。

sed -i 's/$releasever/7.6.1810/g' /etc/yum.repos.d/Centos-7.repo

查看修改结果

# virt-ls -a CentOS_Linux_release_7.6.1810.qcow2 /etc/yum.repos.d/
Centos-7.repo
backup
epel-7.repo

上传镜像

启用pyton的http server,简单很多。通过ip地址,就可以访问。

python -m SimpleHTTPServer 8080

参考文章

  • https://cloud.tencent.com/developer/article/1452066
  • https://www.cyberciti.biz/faq/check-running-services-in-rhel-redhat-fedora-centoslinux/
  • https://www.tecmint.com/list-all-running-services-under-systemd-in-linux/
  • https://docs.openstack.org/diskimage-builder/latest/elements/base/README.html
Feb 242021
 

使用阿里云也算是一年,并且还是阿里云的MVP,工作的内容,其实也是和阿里云有关,到目前也算算告一个段落,所以怎么都要从我都角度来评估一下阿里云,也算是对国内对公有云做一个整体评估。

基本服务

公有云的用户,百分之90以上,基本都是使用虚拟机,网络和存储服务,那么这几项阿里云和国外同行,基本上已经基本一样,你运行的虚拟机,负载均衡,防火墙,基本上已经感受不到不稳定。

其实这也是非常不容易,这几年阿里云应该还是下来大功夫在底层,稳定性和可靠性,真的已经非常不错。虚拟机的存储,已经全部是闪存,网络都是必须使用vpc,虚拟机的规格,也基本固定下来,一个cpu对应4G内存。备份,快照,镜像,这些在私有云上很难处理的问题,在阿里云上真的可以说做的很流畅。

表扬完,就要说一下阿里云的不足。

计费

阿里云上的项目已经很多,各个项目的计费周期不一样,按小时,按日,按月,包年,内部对这个也是没有一个统一的要求,估计更多的是KPI考核。

阿里非常希望搞生态圈,对应开发,测试者来说,这样都计费模式,肯定是不友善的,测试一下,你就只能支付一天的费用。

Azure,AWS上,也确实是有某些服务,是如果你使用,是计费方式是按天的,例如那种存档,这种服务,按小时,还是比较不合算。但是这不是主流,真的也不是因为KPI,这样设计计费模式,更多是业务,技术代价导致的。

现在阿里云的IP,带宽的使用,已经改成按天计费,这就是KPI驱动导致的设计,一定能提高收入,但是一定会逐步影响你的生态圈。

我测试阿里云的功能,如果是按小时收费,那么我基本没啥担心费用,如果按天,就很难受,我就基本不去测试。很多新的东西,我也懒得去推荐使用。

例如阿里云上的对象存储,就可以模拟成一个nas,共享给虚拟机使用,让用户备份啥更加方便,不需要去理解S3的API。我测试一下,按天计费,我就懒得去折腾,很多时候,需要多次来测试。

API

阿里云上线一个产品,服务,有什么基本的要求呢,需要满足那些条件,才能上线呢?我过去一年,其实使用,测试过不少阿里云的产品,只能说,内部还是比较乱的。

2003年,AWS就提出,一切的交付,是用API。到今天阿里云还是没法做到。很多新的服务提供是没有API,这个估计老大销售压力很大,导致变形,有很大关系。

新的服务上线,产品经理考虑的最多的,应该还是KPI,而不是阿里云的长远的发展。

产品,服务要满足什么条件,才合适去上线,其实阿里云内部,我相信也是很清楚的,都是明白人。

曾经和阿里云的朋友探讨过,公有云的收入里,通过外部调用API的比例和通过控制台使用的比例是什么情况,如果是这个指标去对比Azure,AWS,基本就没法看。

账单

我当了一年公司阿里云的管理员,负责管理,协助公司内部各个项目,团队,部门使用阿里云的资源。那么我首先想到的在阿里云上的费用的拆分,逻辑的隔离项目的资源。

如果你今天去问负责你的阿里云的销售,售前,他们给你的答案,应该还是无法实现,要实现,要通过CMP。你再去外面问一圈,都是阿里云的红人,结果都没解决过这样的问题。

这样的需求,难道很变态,不合理吗?大家都认为阿里云肯定就有这个功能,但是很可惜是没有的。

如果让我去帮各个项目创建资源,每个月给他们计算费用,搞定发票,我估计真都啥都不用干。

我都需求就是一个项目需要使用阿里云都资源,我给他们团队一个人开通一个账号,让他负责管理资源,他可以创建资源,创建用户,知道自己都消费是多少。不能超过你申请都费用。如果超过了你申请的费用,你就没法使用资源。

也很感谢阿里云的研发的朋友,把做好的功能,第一时间给我用上,解决了我这个公司阿里云管理员的管理上的重大难题。

通过阿里云的:资源目录,这个功能,是可以很好解决这个问题,用起来后,真的感觉很爽,负责这个产品的弟兄,也是非常有想法,借鉴了AWS,没有闭门造车。这个问题阿里云的最终解决的办法,其实比国内其他厂商都要强。

主账号对各个资源目录,或者说子账号的财务管理,做的还是非常值得夸赞,就是这是不同的team做的东西,很少人全部搞明白。我是折腾了一遍,应用上线,碰上过大坑,通宵折腾阿里云弟兄帮忙解决。

资源组

我是因为折腾这个功能,对阿里云的认识逐步加深。Azure,AWS都有资源组的概念,不过真正好用的,其实是Azure,真的做的非常不错。

资源组,对我来说,我的使用,就是把项目使用,涉及的资源,都放到一个资源组里,用完后,统一删除。Azure解决了一个公有云一个难点:创建资源容易,删除难,在Azure上,你基本可以直接删除资源组,就把下面资源删掉,除非你有备份都设置,估计有点麻烦。

阿里云上都资源组,我测试都时候,出现了很多很有意思都事情。

  • 不支持api在资源组创建资源
  • 很多资源不支持资源组管理
  • 对着阿里云官方都文档进行操作,我居然无法创建出虚拟机。不是我水平的问题,是阿里自己压根就没对着自己的文档测试过。

我专门也问了外面几个生态圈的伙伴,他们都抱怨给阿里都资源组坑过,坑多了,就没有朋友了。

据说2021年,阿里云要重构资源组都功能,上次看阿里云都资源组都产品经理demo演示都视频,其实很不容易,很多坑,不是一个人能搞定,在江湖呆久,看视频演示,也都能看出问题,他有意回避都地方,基本就是一堆问题,没法解决的,例如前端UI在不同资源组切换,资源的显示,缓存,都是麻烦事。

文档

对于公有云来说,文档的重要性,超出你的想象。AWS上,其实是没有客服,你了解一切,都只能是通过文档,不会出现文档更新不及时都情况。AWS,我都理解真都一切交付是API和文档,你看文档来用API。

如果你开发都过程,没把文档搞定,指望产品上线后,再去更新文档,注定是悲剧。

如何开发过程,自动生成api文档,做到完全同步,业界应该已经很多实践,还是看领导层的意识。

培训认证

微软玩培训认证,搞生态圈是高手,微软自己的培训,肯定不是为了挣钱,微软的培训都是第三方,合作伙伴来进行,考试也是让第三方来搞。

阿里云上的培训,认证,都是自己搞,据说他们还有收入的KPI。为了挣点培训,考试费用,对于阿里云来说,真的比较low。

疫情期间,我看了Azure,AWS,Google cloud的培训视频,基本都是免费,放到油管上,真的已经非常完善,讲师通过公开的视频,能获得收益,持续的更新,这就是一个很好的生态圈。

培训是生态的关键环节,你的产品,应该如何使用,是需要依靠培训去洗脑。

安全合规

安全和合规,这是私有云最后一根稻草,阿里云也开始意识到这个问题,这这方面发力,解决企业在安全合规上的担心。

阿里云是互联网基因,满足互联网客户,没有问题,但是企业的基因,2B方面比较欠缺,这方面,就要好好跟Azure学习。

企业合同流程

一般企业内部的财务的流程,都是签订合同,合同完成,验收结束,给发票,90天后付款。你现在和阿里,微软做业务,基本都是这样的一个流程。

对于企业来说,如果按照这个流程来使用公有云,就会遇到麻烦,根本走不通。如果阿里集团要采购阿里云的服务,也肯定是没法进行。我专门去看了一下Azure是怎么解决这种问题的。

Azure 不愧是有企业基因,设计了一套合同支付的流程,是可以满足企业目前的流程的。

对于很多外企来说,企业的管理,都是依靠流程,修改流程,是一件不可完成的事情。流程的设计其实也有他合理的地方,我们需要在流程下,完成自己的工作。

目前我其实还是没解决这个企业的流程问题。

省钱

云平台都是希望增加收入,但是如何增加收入?帮助用户省钱,用好阿里云,长远来看,实现盈利呢?

同事让我介绍一下,如何使用阿里云,我这里就做一个总结。假设你上第一次登陆账号,应该如何处理。

  • 使用资源组来管理项目到资源,默认到资源组Default,如果你不指定资源组,就会创建在这个Default资源组。一个账号里,日后都会有不同到项目在运行,所以建议才有资源组来管理,当然资源创建后,也是可以修改资源组
  • 选择region,根据你需要到资源,选择区域,要注意,你需要到资源,可能不会在一个区域里,可能是分布在多个区域。
  • 创建vpc,规划好ip地址段,不同区域,一个子网。这个玩一下,就明白。可以数据库在一个子网,web在两位一个子网。甚至你可以一个vpc跑数据库,另外一个vpc跑web,通过vpc互联来实现web访问数据库。我个人倾向一个vpc,不同的子网。阿里云的网段可以自己指定,虚拟机的ip地址,你也可以指定。
  • 创建安全组,设置好自己要开放的端口。规则。这个比以前使用的防火墙方便多来。
  • 申请floating ip,一定要注意,公网IP,单独申请,不要在创建虚拟机的时候申请,这是不一样的,导致后续很麻烦。创建虚拟机时候申请的公网ip,和虚拟机是紧密绑定,会导致你删除虚拟机后,公网ip就给删掉,收费必须和虚拟机一致。
  • NAT网关:可选,当你的虚拟机超过10个,公网的ip地址超过5个,这个时候,你可以考虑通过NAT网关来提高灵活性,降低带宽成本。如果你只是2,3个ip地址,那么就没必要使用。
  • 创建虚拟机,需要注意:虚拟机的规格,磁盘大小,都是成本的关键。记得关掉快照。记得上面提到的,不要选择申请公网的IP。计费模式,选择按需,后续确定满足需求,再转成包月。从包月转按需,或者包月后,调整配置,都是很麻烦的事情。虚拟机的规格,2core,8G,基本可以满足企业的百分之90以上的需求的,目前的虚拟机的cpu。
  • 应用部署完成后,不要使用快照来做备份,要使用镜像,这个最便宜的。虚拟机关机,成本仅仅是减少cpu的成本,存储的成本,带宽还是在的。
  • 根据实际情况,可以先把虚拟机转成包月,带宽观察一段时间,再决定。
  • 数据库,尽量使用RDS,不过要测试,应用的数据库可能用到的某些功能,RDS是禁用的,这个需要测试,否则比较麻烦。数据库的迁移,就把备份放到对象存储上,可以直接倒入到RDS。
  • 公有云的虚拟机后续的运维,基本都是磁盘满了,所以要用心处理应用的日志,虚拟机要装上agent,才能监控到磁盘的使用情况。这个比较关键。
  • 安装的文件,就放对象存储上,上线后,可以考虑把虚拟机做一个镜像,这样成本很低,完全可以忽略。
  • 备案,目前哪怕用ip地址访问,日后都会有麻烦。所以你还是注册一个域名,备案。这个需要提前准备,提工单来解决。流程不同时候,不同区域是不一样的。
  • 安全,就是安全组尽量少开端口。很多时候,可以登陆阿里云的后台,web登陆console来维护,尤其windows,这样是最安全的。平衡一下,大部分时候,你都是不需要公网访问3389端口,22 ssh端口。
  • ssl证书,这个就用免费就可以,需要注意的是免费的证书,我的理解,3个月,需要update一下,这个实际场景,需要留意,用脚本,工具来实现自动更新。ip地址访问,其实也是可以考虑自己签发证书,来加强安全。http:// 是明文传输,都要改成https。
  • 阿里云上镜像跨账号,跨区域共享,做的还是非常不错。你对一个虚拟机做镜像,镜像的内容会包括你的系统盘,数据盘,你可以通过镜像创建出来,非常方便。可以考虑测试的时候,测试通过的虚拟机,通过这种方式,迁移到生产环境的账号里。
  • 阿里云上,资源大部分都是收费的,要搞清楚那些是收费,那些是免费。资源不使用就删掉。ssh的密钥,公钥都是要收费的。对象存储,免费的额度,估计就足够你使用。
  • 快照,在应用的升级的时候,可以考虑使用,确认没问题就删除快照就可以。日常你的数据库备份,如果你没使用RDS,就通过脚本进行备份到对象存储上。web应用,上面基本是没数据,做一个镜像就可以。

操作记录

你接手一个账号,你最想知道的是什么,反正我是想搞清楚,上面的虚拟机是谁创建的。很遗憾,你只能提交工单,让他们后台查询,用户自己搞不定。

一般的web应用,对用户的修改,创建的操作,都会记录,这样方便解决问题,阿里云上,这样的功能,都希望引导用户使用付费的服务。

阿里云对控制台的操作的记录,是出过问题,我对账号里的财务的一个设置,阿里云平台升级,导致我这个设置给修改。那么这个时候,是平台升级修改,还是我自己修改的呢?

我最终是靠自己证明清白,我那天没人登陆过后台。最终证明是升级导致。

升级出现小问题,我是可以理解的,不过你修改数据,没做任何的记录,这是很危险的。当时是因为升级,我马上发现,如果这种问题,拖几天,估计排查就更加困难。

Feb 062021
 

最近测试厂商的系统,部署完成后,通过IP地址登录,是HTTP的方式,其实这就是一个安全隐患,你登录输入的密码,其实都是明文传输。怎么解决这个问题呢?

这种情况下,我测试过用工具拦截过同事的密码的。

公司内网的设备,交换机,存储,都是通过ip访问,那么他们如何解决安全的问题呢?

基于的IP地址的证书:

https://ip

如果你是公网的ip地址,,你是可以通过花钱,拿到签发的证书,在公网使用。但是不会给私有的网段签发证书。如果私有的网络要使用证书,那么你就只能用自己签发证书的方式,来实现加密。

https://github.com/antelle/generate-ip-cert

一键搞定。

curl -sS https://raw.githubusercontent.com/antelle/generate-ip-cert/master/generate-ip-cert.sh | \
bash -s 23.105.203.97

一键签发ip地址证书

最后的是你的ip地址,记得更换。