【云原生、k8s】基于Helm管理Kubernetes应用

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
应用实时监控服务-可观测链路OpenTelemetry版,每月50GB免费额度
应用实时监控服务-用户体验监控,每月100OCU免费额度
简介: k8s搭建、弹性伸缩、dashboard ui,基于Helm管理Kubernetes应用

第四阶段
时 间:2023年8月18日
地 点:2304教室
授课人:李凤海
参加人:全班人员
内 容:
基于Helm管理Kubernetes应用

一、Kubernetes部署方式
二、基于kubeadm部署K8S集群

一、Kubernetes部署方式
官方提供Kubernetes部署3种方式
(一)minikube
Minikube是一个工具,可以在本地快速运行一个单点的Kubernetes,尝试Kubernetes或日常开发的用户使用。不能用于生产环境。
官方文档:https://kubernetes.io/docs/setup/minikube/
(二)二进制包
从官方下载发行版的二进制包,手动部署每个组件,组成Kubernetes集群。目前企业生产环境中主要使用该方式。
下载地址:
https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.11.md#v1113
(三)Kubeadm
Kubeadm 是谷歌推出的一个专门用于快速部署 kubernetes 集群的工具。在集群部署的过程中,可以通过 kubeadm init 来初始化 master 节点,然后使用 kubeadm join 将其他的节点加入到集群中。
1、Kubeadm 通过简单配置可以快速将一个最小可用的集群运行起来。它在设计之初关注点是快速安装并将集群运行起来,而不是一步步关于各节点环境的准备工作。同样的,kubernetes 集群在使用过程中的各种插件也不是 kubeadm 关注的重点,比如 kubernetes集群 WEB Dashboard、prometheus 监控集群业务等。kubeadm 应用的目的是作为所有部署的基础,并通过 kubeadm 使得部署 kubernetes 集群更加容易。
2、Kubeadm 的简单快捷的部署可以应用到如下三方面:
·新用户可以从 kubeadm 开始快速搭建 Kubernete 并了解。
·熟悉 Kubernetes 的用户可以使用 kubeadm 快速搭建集群并测试他们的应用。
·大型的项目可以将 kubeadm 配合其他的安装工具一起使用,形成一个比较复杂的系统。
·官方文档:
https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm/
https://kubernetes.io/docs/setup/independent/install-kubeadm/

二、基于kubeadm部署K8S集群
(一)环境准备

IP地址    主机名    组件
192.168.100.131    k8s-master    kubeadm、kubelet、kubectl、docker-ce
192.168.100.132    k8s-node01    kubeadm、kubelet、kubectl、docker-ce
192.168.100.133    k8s-node02    kubeadm、kubelet、kubectl、docker-ce

注意:所有主机配置推荐CPU:2C+ Memory:2G+
图片.png

1、主机初始化配置
所有主机配置禁用防火墙和selinux

[root@localhost ~]# setenforce 0
[root@localhost ~]# iptables -F
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
[root@localhost ~]# systemctl stop NetworkManager
[root@localhost ~]# systemctl disable NetworkManager
[root@localhost ~]# sed -i '/^SELINUX=/s/enforcing/disabled/' /etc/selinux/config

图片.png

2、配置主机名并绑定hosts,不同主机名称不同

[root@localhost ~]# hostname k8s-master
[root@localhost ~]# bash
[root@k8s-master ~]# cat << EOF >> /etc/hosts
192.168.100.131 k8s-master
192.168.100.132 k8s-node01
192.168.100.133 k8s-node02
EOF

图片.png

[root@localhost ~]# hostname k8s-node01
[root@k8s-node01 ~]# cat /etc/hosts

图片.png

[root@localhost ~]# hostname k8s-node02
[root@k8s-node02 ~]#cat /etc/hosts

图片.png

3、主机配置初始化

[root@k8s-master ~]# yum -y install vim wget net-tools lrzsz

图片.png

[root@k8s-master ~]# swapoff -a
[root@k8s-master ~]# sed -i '/swap/s/^/#/' /etc/fstab
[root@k8s-master ~]# cat << EOF >> /etc/sysctl.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
[root@k8s-master ~]# modprobe br_netfilter
[root@k8s-master ~]# sysctl -p

图片.png

4、部署docker环境
1)三台主机上分别部署 Docker 环境,因为 Kubernetes 对容器的编排需要 Docker 的支持。

[root@k8s-master ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@k8s-master ~]# yum install -y yum-utils device-mapper-persistent-data lvm2

2)使用 YUM 方式安装 Docker 时,推荐使用阿里的 YUM 源。

[root@k8s-master ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3)清除缓存

[root@k8s-master ~]# yum clean all && yum makecache fast

4)启动docker

[root@k8s-master ~]# yum -y install docker-ce
[root@k8s-master ~]# systemctl start docker
[root@k8s-master ~]# systemctl enable docker

图片.png

5)镜像加速器(所有主机配置)

[root@k8s-master ~]# cat << END > /etc/docker/daemon.json
{     "registry-mirrors":[ "https://nyakyfun.mirror.aliyuncs.com" ]
}
END

6)重启docker

[root@k8s-master ~]# systemctl daemon-reload
[root@k8s-master ~]# systemctl restart docker

图片.png

(二)部署kubernetes集群
1、组件介绍
三个节点都需要安装下面三个组件
kubeadm:安装工具,使所有的组件都会以容器的方式运行
kubectl:客户端连接K8S API工具
kubelet:运行在node节点,用来启动容器的工具
2、配置阿里云yum源
使用 YUM 方式安装 Kubernetes时,推荐使用阿里的 YUM 源。

[root@k8s-master ~]# ls /etc/yum.repos.d/
[root@k8s-master ~]# cat > /etc/yum.repos.d/kubernetes.repo

图片.png

3、安装kubelet kubeadm kubectl
所有主机配置

[root@k8s-master ~]# yum install -y kubelet-1.20.0 kubeadm-1.20.0 kubectl-1.20.0

图片.png

[root@k8s-master ~]# systemctl enable kubelet

图片.png

[root@k8s-master ~]# kubectl version

图片.png

kubelet 刚安装完成后,通过 systemctl start kubelet 方式是无法启动的,需要加入节点或初始化为 master 后才可启动成功。

4、配置init-config.yaml
Kubeadm 提供了很多配置项,Kubeadm 配置在 Kubernetes 集群中是存储在ConfigMap 中的,也可将这些配置写入配置文件,方便管理复杂的配置项。Kubeadm 配内容是通过 kubeadm config 命令写入配置文件的。
在master节点安装,master 定于为192.168.100.131,通过如下指令创建默认的init-config.yaml文件:

[root@k8s-master ~]# kubeadm config print init-defaults > init-config.yaml

图片.png

init-config.yaml配置

[root@k8s-master ~]# cat init-config.yaml

图片.png

5、安装master节点
1)拉取所需镜像

[root@k8s-master ~]# kubeadm config images list --config init-config.yaml

图片.png

[root@k8s-master ~]# kubeadm config images pull --config init-config.yaml

图片.png

2)安装matser节点

[root@k8s-master ~]# kubeadm init --config=init-config.yaml    //初始化安装K8S

图片.png

3)根据提示操作
kubectl 默认会在执行的用户家目录下面的.kube 目录下寻找config 文件。这里是将在初始化时[kubeconfig]步骤生成的admin.conf 拷贝到.kube/config

[root@k8s-master ~]# mkdir -p $HOME/.kube
[root@k8s-master ~]# cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@k8s-master ~]# chown $(id -u):$(id -g) $HOME/.kube/config

图片.png

Kubeadm 通过初始化安装是不包括网络插件的,也就是说初始化之后是不具备相关网络功能的,比如 k8s-master 节点上查看节点信息都是“Not Ready”状态、Pod 的 CoreDNS无法提供服务等。
图片.png

6、安装node节点
1)根据master安装时的提示信息

[root@k8s-node01 ~]# kubeadm join 192.168.100.131:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:78bdd0f01660f4e84355b70aa8807cf1d0d6325b0b28502b29c241563e93b4ae

图片.png

[root@k8s-master ~]# kubectl get nodes
[root@k8s-node02 ~]# kubeadm join 192.168.100.131:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:78bdd0f01660f4e84355b70aa8807cf1d0d6325b0b28502b29c241563e93b4ae

图片.png

Master操作:

[root@k8s-master ~]# kubectl get nodes

图片.png

前面已经提到,在初始化 k8s-master 时并没有网络相关配置,所以无法跟 node 节点通信,因此状态都是“NotReady”。但是通过 kubeadm join 加入的 node 节点已经在k8s-master 上可以看到。

7、安装flannel
Master 节点NotReady 的原因就是因为没有使用任何的网络插件,此时Node 和Master的连接还不正常。目前最流行的Kubernetes 网络插件有Flannel、Calico、Canal、Weave 这里选择使用flannel。
所有主机:
master上传kube-flannel.yml,所有主机上传flannel_v0.12.0-amd64.tar,cni-plugins-linux-amd64-v0.8.6.tgz

[root@k8s-master ~]# docker load < flannel_v0.12.0-amd64.tar

图片.png

上传插件:

[root@k8s-master ~]# tar xf cni-plugins-linux-amd64-v0.8.6.tgz 
[root@k8s-master ~]# cp flannel /opt/cni/bin/

图片.png

master上传kube-flannel.yml
master主机配置:

[root@k8s-master ~]# kubectl apply -f kube-flannel.yml

图片.png

[root@k8s-master ~]# kubectl get nodes
[root@k8s-master ~]# kubectl get pods -n kube-system

图片.png

已经是ready状态

(三)安装Dashboard UI
1、部署Dashboard
dashboard的github仓库地址:https://github.com/kubernetes/dashboard
代码仓库当中,有给出安装示例的相关部署文件,我们可以直接获取之后,直接部署即可

[root@k8s-master ~]# wget https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/recommended.yaml

图片.png

默认这个部署文件当中,会单独创建一个名为kubernetes-dashboard的命名空间,并将kubernetes-dashboard部署在该命名空间下。dashboard的镜像来自docker hub官方,所以可不用修改镜像地址,直接从官方获取即可。
2、开放端口设置
在默认情况下,dashboard并不对外开放访问端口,这里简化操作,直接使用nodePort的方式将其端口暴露出来,修改serivce部分的定义:

所有主机下载镜像

[root@k8s-master ~]# docker pull kubernetesui/dashboard:v2.0.0
[root@k8s-master ~]# docker pull kubernetesui/metrics-scraper:v1.0.4

图片.png

[root@k8s-master ~]# vim recommended.yaml
图片.png

3、权限配置
配置一个超级管理员权限
[root@k8s-master ~]# vim recommended.yaml
图片.png

[root@k8s-master ~]# kubectl apply -f recommended.yaml

图片.png

[root@k8s-master ~]# kubectl get pods -n  kubernetes-dashboard
[root@k8s-master ~]# kubectl get pods -A  -o wide

图片.png

4、访问Token配置
使用谷歌浏览器测试访问 https://192.168.100.131:32443
图片.png
图片.png
图片.png

可以看到出现如上图画面,需要我们输入一个kubeconfig文件或者一个token。事实上在安装dashboard时,也为我们默认创建好了一个serviceaccount,为kubernetes-dashboard,并为其生成好了token,

我们可以通过如下指令获取该sa的token:

[root@k8s-master ~]# kubectl describe secret -n kubernetes-dashboard $(kubectl get secret -n kubernetes-dashboard |grep kubernetes-dashboard-token | awk '{print $1}') |grep token | awk '{print $2}'

图片.png

输入获取的token
图片.png

查看集群概况:
图片.png

查看集群roles:
图片.png

查看集群namespaces:
图片.png

查看集群nodes:
图片.png

查看集群pods:
图片.png

(四)metrics-server服务部署
1、在Node节点上下载镜像
heapster已经被metrics-server取代,metrics-server是K8S中的资源指标获取工具
所有node节点上

[root@k8s-node01 ~]# docker pull bluersw/metrics-server-amd64:v0.3.6
[root@k8s-node01 ~]# docker tag bluersw/metrics-server-amd64:v0.3.6 k8s.gcr.io/metrics-server-amd64:v0.3.6

图片.png

2、修改 Kubernetes apiserver 启动参数
在kube-apiserver项中添加如下配置选项 修改后apiserver会自动重启

[root@k8s-master ~]# vim /etc/kubernetes/manifests/kube-apiserver.yaml

图片.png

3、Master上进行部署

[root@k8s-master ~]# wget https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.3.6/components.yaml

修改安装脚本:
[root@k8s-master ~]# vim components.yaml
图片.png

[root@k8s-master ~]# kubectl create -f components.yaml
图片.png

等待1-2分钟后查看结果
[root@k8s-master ~]# kubectl top nodes
图片.png

再回到dashboard界面可以看到CPU和内存使用情况了
图片.png

(五)Helm应用包管理器介绍
1、为什么需要Helm?
Kubernetes上部署的应用服务,都是由特定的资源描述组成,包括deployment、service等。每个资源对象都保存在各自文件中或者集中写到一个配置文件。然后通过kubectl apply –f demo.yaml命令进行部署。
图片.png

如果业务系统只由一个或几个这样的服务组成,那么上面部署管理方式足够用了。

而对于一个复杂的业务系统,会有很多类似上面的资源描述文件,例如微服务架构应用,组成应用的服务可能多达十个,几十个。如果有更新或回滚应用的需求,可能要修改和维护所涉及的大量资源对象文件,而这种组织和管理应用的方式就显得力不从心了。

而且由于缺少对发布过的应用版本管理和控制,使Kubernetes上的应用维护和更新等面临诸多的挑战,主要面临以下问题:
如何将这些服务作为一个整体管理
这些资源文件如何高效复用
不支持应用级别的版本管理
2、Helm介绍
Helm是一个Kubernetes的包管理工具,就像Linux下的包管理器,如yum/apt-get等一样,Helm可以很方便的将之前打包好的yaml文件部署到kubernetes上。

Helm有3个重要概念:
helm:一个命令行客户端工具,主要用于Kubernetes应用chart的创建、打包、发布和管理。
Chart:目录或者压缩包,用于应用描述,由一系列用于描述 k8s 资源对象相关文件的集合。
Release:基于Chart的部署实体,一个 chart 被 Helm 运行后将会生成对应的一个 release;将在k8s中创建出真实运行的资源对象。

Helm特点
开发的一个用于kubernetes的包管理器,每个包称为一个Chart,一个Chart是一个目录(一般情况下会将目录进行打包压缩,形成name-version.tar.gz格式的单一文件,方便传输和存储)
对于应用发布者而言,可以通过Helm打包应用, 管理应用依赖关系,管理应用版本并发布应用到软件仓库。
对于使用者而言,使用Helm后不用需要了解Kubernetes的Yaml语法并编写应用部署文件,可以通过Helm下载并在kubernetes上安装需要的应用,
Helm提供了kubernetes上的软件部署,删除,升级, 回滚应用的强大功能

3、Helm V3变化
2019年11月13日, Helm团队发布 Helm v3的第一个稳定版本。该版本主要变化如下:
1)架构变化
最明显的变化是 Tiller的删除
图片.png

2)Release名称可以在不同命名空间重用
3)支持将 Chart 推送至 Docker 镜像仓库Harbor中
4)使用JSONSchema验证chart values
5)其他
为了更好地协调其他包管理者的措辞 Helm CLI个别更名
helm delete 更名为 helm uninstall
helm inspect 更名为 helm show
helm fetch 更名为 helm pull
但以上旧的命令当前仍能使用。
移除了用于本地临时搭建 Chart Repository的 helm serve 命令。

自动创建名称空间
在不存在的命名空间中创建发行版时,Helm 2创建了命名空间。Helm 3遵循其他Kubernetes对象的行为,如果命名空间不存在则返回错误。

不再需要requirements.yaml, 依赖关系是直接在chart.yaml中定义。

(六)Helm应用包管理器部署
1、部署Helm客户端工具
Helm客户端下载地址:https://github.com/helm/helm/releases
将源码包解压并移动到/usr/bin/目录即可。

[root@k8s-master ~]# wget https://get.helm.sh/helm-v3.5.2-linux-amd64.tar.gz
[root@k8s-master ~]# tar xf helm-v3.5.2-linux-amd64.tar.gz
[root@k8s-master ~]# cd linux-amd64/
[root@k8s-master linux-amd64]# ls
[root@k8s-master linux-amd64]# mv helm /usr/bin/
[root@k8s-master ~]# helm    #验证helm命令是否可用

图片.png

2、Helm常用命令
命令 描述
create 创建一个chart并指定名字
dependency 管理chart依赖
get 下载一个release。可用子命令:all、hooks、manifest、notes、values
history 获取release历史
install 安装一个chart
list 列出release
package 将chart目录打包到chart存档文件中
pull 从远程仓库中下载chart并解压到本地 # helm pull stable/mysql --untar
repo 添加,列出,移除,更新和索引chart仓库。可用子命令:add、index、list、remove、update
rollback 从之前版本回滚
search 根据关键字搜索chart。可用子命令:hub、repo
show 查看chart详细信息。可用子命令:all、chart、readme、values
status 显示已命名版本的状态
template 本地呈现模板
uninstall 卸载一个release
upgrade 更新一个release
version 查看helm客户端版本
3、配置国内的Chart仓库
微软仓库,这个仓库强烈推荐,基本上官网有的chart这里都有。
阿里云仓库
官方仓库(https://hub.kubeapps.com/charts/incubator)官方chart仓库,国内有点不好使。
添加chart存储库

[root@k8s-master ~]# helm repo add stable http://mirror.azure.cn/kubernetes/charts
[root@k8s-master ~]# helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts 
[root@k8s-master ~]# helm repo update
查看已配置的chart存储库
[root@k8s-master ~]# helm repo list

图片.png

删除存储库:

[root@k8s-master ~]# helm repo remove aliyun
[root@k8s-master ~]# helm repo list

图片.png

4、使用chart部署一个Nginx应用
1)创建chart
[root@k8s-master ~]# helm create nginx
图片.png

[root@k8s-master ~]# tree nginx/

详解:
nginx/
├── charts                #依赖其他包的charts文件
├── Chart.yaml            #该chart的描述文件,包括ip地址,版本信息等
├── templates                #存放k8s模板文件目录
│   ├── deployment.yaml    #创建k8s deployment资源的yaml 模板
│   ├── _helpers.tpl        #下划线开头的文件,可以被其他模板引用
│   ├── hpa.yaml            #配置服务资源CPU 内存
│   ├── ingress.yaml        # ingress 配合service域名访问的配置
│   ├── NOTES.txt            #说明文件,helm install之后展示给用户看的内容
│   ├── serviceaccount.yaml
│   ├── service.yaml        #kubernetes Serivce yaml模板
│   └── tests
│       └── test-connection.yaml
└── values.yaml            #给模板文件使用的变量

图片.png

2)修改values.yaml 里的service的type为 NodePort

[root@k8s-master ~]# cd nginx/
[root@k8s-master nginx]# vim values.yaml

图片.png

3)安装chart任务(注意命令最后的点)
[root@k8s-master nginx]# helm install -f values.yaml
图片.png

4)查看release
[root@k8s-master nginx]# helm ls #或者helm list
图片.png

5)删除release
[root@k8s-master nginx]# helm delete nginx

6)查看pod状态
[root@k8s-master nginx]# kubectl get pod
[root@k8s-master nginx]# kubectl get pod -o wide

7)查看svc状态
[root@k8s-master nginx]# kubectl get svc

图片.png

访问 192.168.100.132:30281

图片.png

5、使用chart部署一个Tomcat应用

[root@k8s-master ~]# helm create tomcat
Creating tomcat
[root@k8s-master ~]# cd tomcat/

图片.png

修改deployment.yaml和service.yaml文件
[root@k8s-master tomcat]# vim templates/deployment.yaml
图片.png

[root@k8s-master tomcat]# vim templates/service.yaml
图片.png

创建release
[root@k8s-master tomcat]# helm install tomcat .
图片.png

查看release
[root@k8s-master tomcat]# helm ls
图片.png

查看pod和svc
[root@k8s-master tomcat]# kubectl get pod
[root@k8s-master tomcat]# kubectl get pod -o wide
[root@k8s-master tomcat]# kubectl get svc
图片.png

准备测试页
[root@k8s-master tomcat]# kubectl exec -it tomcat-67df6cd4d6-s7qxl /bin/bash
root@tomcat-67df6cd4d6-s7qxl:/usr/local/tomcat# mkdir webapps/ROOT
root@tomcat-67df6cd4d6-s7qxl:/usr/local/tomcat# echo "helm test1" > webapps/ROOT/index.jsp
图片.png

[root@k8s-master tomcat]# kubectl exec -it tomcat-67df6cd4d6-tkp95 /bin/bash
root@tomcat-67df6cd4d6-tkp95:/usr/local/tomcat# mkdir webapps/ROOT
root@tomcat-67df6cd4d6-tkp95:/usr/local/tomcat# echo "helm test2" > webapps/ROOT/index.jsp
图片.png

访问测试:
图片.png

访问 192.168.100.132:32092
访问 192.168.100.133:32092
图片.png

删除
[root@k8s-master tomcat]# helm delete tomcat
[root@k8s-master tomcat]# helm ls
图片.png

升级(改完yaml文件之后重新应用)

[root@k8s-master tomcat]# helm install tomcat . 
[root@k8s-master tomcat]# helm ls
[root@k8s-master tomcat]# kubectl get pod

图片.png

[root@k8s-master tomcat]# vim templates/deployment.yaml
图片.png

[root@k8s-master tomcat]# helm upgrade tomcat .
[root@k8s-master tomcat]# kubectl get pod
[root@k8s-master tomcat]# helm ls

图片.png

回滚
[root@k8s-master tomcat]# helm rollback tomcat 1
[root@k8s-master tomcat]# helm ls
[root@k8s-master tomcat]# kubectl get pod
图片.png

6、用变量渲染模板
测试模板是否正常
[root@k8s-master tomcat]# helm install --dry-run tomcat .
图片.png

在values.yaml文件中定义变量
[root@k8s-master tomcat]# cat values.yaml
图片.png

[root@k8s-master tomcat]# cat templates/deployment.yaml
图片.png

[root@k8s-master tomcat]# cat templates/service.yaml
图片.png

deployment.yaml 和service.yaml两个文件的变量都是预先在values.yaml里面定义过引用过来的值。
Release.Name 代表helm install 后面的那个名字

[root@k8s-master tomcat]# helm delete tomcat
将templates目录中多余的文件都删除,只保留两个测试文件
[root@k8s-master tomcat]# ls templates/
图片.png

[root@k8s-master tomcat]# helm install -f values.yaml
图片.png

[root@k8s-master tomcat]# helm ls
图片.png

查看发布状态
[root@k8s-master tomcat]# helm status tomcat
[root@k8s-master tomcat]# kubectl get pod
图片.png

查看pod详细信息
[root@k8s-master tomcat]# kubectl describe pod tomcat-dp-67df6cd4d6-78pxc

图片.png

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
26天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
84 2
|
6天前
|
Cloud Native 持续交付 开发者
云原生技术在现代企业中的应用与实践####
本文深入探讨了云原生技术的核心概念及其在现代企业IT架构转型中的关键作用,通过具体案例分析展示了云原生如何促进企业的敏捷开发、高效运维及成本优化。不同于传统摘要仅概述内容,本部分旨在激发读者对云原生领域的兴趣,强调其在加速数字化转型过程中的不可或缺性,为后续详细论述奠定基础。 ####
|
1天前
|
人工智能 缓存 异构计算
云原生AI加速生成式人工智能应用的部署构建
本文探讨了云原生技术背景下,尤其是Kubernetes和容器技术的发展,对模型推理服务带来的挑战与优化策略。文中详细介绍了Knative的弹性扩展机制,包括HPA和CronHPA,以及针对传统弹性扩展“滞后”问题提出的AHPA(高级弹性预测)。此外,文章重点介绍了Fluid项目,它通过分布式缓存优化了模型加载的I/O操作,显著缩短了推理服务的冷启动时间,特别是在处理大规模并发请求时表现出色。通过实际案例,展示了Fluid在vLLM和Qwen模型推理中的应用效果,证明了其在提高模型推理效率和响应速度方面的优势。
云原生AI加速生成式人工智能应用的部署构建
|
1天前
|
存储 Kubernetes 关系型数据库
阿里云ACK备份中心,K8s集群业务应用数据的一站式灾备方案
本文源自2024云栖大会苏雅诗的演讲,探讨了K8s集群业务为何需要灾备及其重要性。文中强调了集群与业务高可用配置对稳定性的重要性,并指出人为误操作等风险,建议实施周期性和特定情况下的灾备措施。针对容器化业务,提出了灾备的新特性与需求,包括工作负载为核心、云资源信息的备份,以及有状态应用的数据保护。介绍了ACK推出的备份中心解决方案,支持命名空间、标签、资源类型等维度的备份,并具备存储卷数据保护功能,能够满足GitOps流程企业的特定需求。此外,还详细描述了备份中心的使用流程、控制台展示、灾备难点及解决方案等内容,展示了备份中心如何有效应对K8s集群资源和存储卷数据的灾备挑战。
|
15天前
|
Kubernetes Cloud Native 微服务
云原生入门与实践:Kubernetes的简易部署
云原生技术正改变着现代应用的开发和部署方式。本文将引导你了解云原生的基础概念,并重点介绍如何使用Kubernetes进行容器编排。我们将通过一个简易的示例来展示如何快速启动一个Kubernetes集群,并在其上运行一个简单的应用。无论你是云原生新手还是希望扩展现有知识,本文都将为你提供实用的信息和启发性的见解。
|
13天前
|
消息中间件 Cloud Native 持续交付
云原生技术在现代企业中的应用与优势###
本文深入探讨了云原生技术在现代企业中的具体应用及其带来的显著优势。随着云计算的普及,云原生作为一种新兴的技术架构,正逐渐成为企业数字化转型的关键驱动力。文章将详细介绍云原生的核心概念、主要技术组件以及在实际业务场景中的成功案例,旨在为读者提供一个全面且实用的参考框架,以便更好地理解和应用云原生技术。 ###
|
20天前
|
监控 Cloud Native 持续交付
云原生技术在现代企业中的应用与实践
本文将深入探讨云原生技术如何改变现代企业的运作模式,提升业务灵活性和创新能力。通过实际案例分析,我们将揭示云原生架构的关键要素、实施步骤以及面临的挑战,为读者提供一套清晰的云原生转型指南。
|
22天前
|
Kubernetes Cloud Native 开发者
云原生入门:Kubernetes的简易指南
【10月更文挑战第41天】本文将带你进入云原生的世界,特别是Kubernetes——一个强大的容器编排平台。我们将一起探索它的基本概念和操作,让你能够轻松管理和部署应用。无论你是新手还是有经验的开发者,这篇文章都能让你对Kubernetes有更深入的理解。
|
20天前
|
边缘计算 运维 Cloud Native
阿里云基于云原生的大规模云边协同关键技术及应用荣获浙江省科学技术进步一等奖
11月22日, 2023年度浙江省科学技术奖获奖成果公布,阿里云与浙江大学、支付宝、谐云科技联合完成的基于云原生的大规模云边协同关键技术及应用获得浙江省科学技术进步一等奖。
|
20天前
|
运维 Kubernetes Cloud Native
云原生技术入门:Kubernetes和Docker的协同工作
【10月更文挑战第43天】在云计算时代,云原生技术成为推动现代软件部署和运行的关键力量。本篇文章将带你了解云原生的基本概念,重点探讨Kubernetes和Docker如何协同工作以支持容器化应用的生命周期管理。通过实际代码示例,我们将展示如何在Kubernetes集群中部署和管理Docker容器,从而为初学者提供一条清晰的学习路径。

相关产品

  • 容器服务Kubernetes版