当前位置: 首页 > news >正文

在 Linux 上以 All-in-One 模式安装 kubernetes v1.22.12 kubesphere v3.4.1

KubeSphere4.1安装文档

在 Kubernetes 上快速安装 KubeSphere

在 Linux 上以 All-in-One 模式安装 kubernetes v1.22.12 kubesphere v3.4.1

官方文档:在 Linux 上以 All-in-One 模式安装 KubeSphere

  1. 下载文件 KubeKey
    git地址Releases · kubesphere/kubekey
curl -sfL https://get-kk.kubesphere.io | VERSION=v3.1.6 sh -

或者自己下载上传然后解压

tar xvf kubekey-v3.1.6-linux-amd64.tar.gz
  1. kk 添加可执行权限:
chmod +x kk

安装相关依赖

sudo yum install -y conntrack-tools socat
  1. 开始安装
    备注:如果访问 GitHub/Googleapis 受限,请登录任意集群节点,执行以下命令设置下载区域:
    export KKZONE=cn
    

在本快速入门教程中,您只需执行一个命令即可进行安装,其模板如下所示:

./kk create cluster [--with-kubernetes version] [--with-kubesphere version]

若要同时安装 Kubernetes 和 KubeSphere,可参考以下示例命令:

./kk create cluster --with-kubernetes v1.22.12 --with-kubesphere v3.4.1

如果要使用配置文件创建
指定kubesphere版本

./kk create config --with-kubesphere v3.4.1

修改配置文件后根据配置文件开始安装

./kk create cluster -f config-sample.yaml
  1. 验证安装结果
kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l 'app in (ks-install, ks-installer)' -o jsonpath='{.items[0].metadata.name}') -f

输出以下信息则表示安装成功

#####################################################
###              Welcome to KubeSphere!           ###
#####################################################
Console: http://192.168.0.2:30880
Account: admin
Password: P@88w0rd
备注:安装过程中出现可能出现一些镜像拉去不下来等信息,使用kubectl get pod -A查看pod状态,如果有镜像拉取失败则自己手动拉取后重新执行第三步内容,实测2核4G centos7.9执行过程耗时20分钟左右(根据网络情况各不相同)

指定镜像仓库地址

apiVersion: kubekey.kubesphere.io/v1alpha2
kind: Cluster
metadata:name: sample
spec:hosts:- {name: node1, address: 192.168.21.232, internalAddress: 192.168.21.232, user: root, password: "123456"}- {name: node2, address: 192.168.21.233, internalAddress: 192.168.21.233, user: root, password: "123456"}roleGroups:etcd:- node1control-plane: - node1worker:- node1- node2controlPlaneEndpoint:## Internal loadbalancer for apiservers # internalLoadbalancer: haproxydomain: lb.kubesphere.localaddress: ""port: 6443kubernetes:version: v1.23.17clusterName: cluster.localautoRenewCerts: truecontainerManager: dockeretcd:type: kubekeynetwork:plugin: calicokubePodsCIDR: 10.233.64.0/18kubeServiceCIDR: 10.233.0.0/18## multus support. https://github.com/k8snetworkplumbingwg/multus-cnimultusCNI:enabled: falseregistry:privateRegistry: "registry.cn-beijing.aliyuncs.com" # 使用阿里云镜像namespaceOverride: "kubesphereio" # 阿里云镜像 KubeSphere 官方 namespaceregistryMirrors: []insecureRegistries: []addons: []
---
apiVersion: installer.kubesphere.io/v1alpha1
kind: ClusterConfiguration
metadata:name: ks-installernamespace: kubesphere-systemlabels:version: 3.4.1
spec:persistence:storageClass: ""authentication:jwtSecret: ""local_registry: ""# dev_tag: ""etcd:monitoring: falseendpointIps: localhostport: 2379tlsEnable: truecommon:core:console:enableMultiLogin: trueport: 30880type: NodePort# apiserver:#  resources: {}# controllerManager:#  resources: {}redis:enabled: falseenableHA: falsevolumeSize: 2Giopenldap:enabled: falsevolumeSize: 2Giminio:volumeSize: 20Gimonitoring:# type: externalendpoint: http://prometheus-operated.kubesphere-monitoring-system.svc:9090GPUMonitoring:enabled: falsegpu:kinds:- resourceName: "nvidia.com/gpu"resourceType: "GPU"default: truees:# master:#   volumeSize: 4Gi#   replicas: 1#   resources: {}# data:#   volumeSize: 20Gi#   replicas: 1#   resources: {}enabled: falselogMaxAge: 7elkPrefix: logstashbasicAuth:enabled: falseusername: ""password: ""externalElasticsearchHost: ""externalElasticsearchPort: ""opensearch:# master:#   volumeSize: 4Gi#   replicas: 1#   resources: {}# data:#   volumeSize: 20Gi#   replicas: 1#   resources: {}enabled: truelogMaxAge: 7opensearchPrefix: whizardbasicAuth:enabled: trueusername: "admin"password: "admin"externalOpensearchHost: ""externalOpensearchPort: ""dashboard:enabled: falsealerting:enabled: false# thanosruler:#   replicas: 1#   resources: {}auditing:enabled: false# operator:#   resources: {}# webhook:#   resources: {}devops:enabled: falsejenkinsCpuReq: 0.5jenkinsCpuLim: 1jenkinsMemoryReq: 4GijenkinsMemoryLim: 4GijenkinsVolumeSize: 16Gievents:enabled: false# operator:#   resources: {}# exporter:#   resources: {}ruler:enabled: truereplicas: 2#   resources: {}logging:enabled: falselogsidecar:enabled: truereplicas: 2# resources: {}metrics_server:enabled: falsemonitoring:storageClass: ""node_exporter:port: 9100# resources: {}# kube_rbac_proxy:#   resources: {}# kube_state_metrics:#   resources: {}# prometheus:#   replicas: 1#   volumeSize: 20Gi#   resources: {}#   operator:#     resources: {}# alertmanager:#   replicas: 1#   resources: {}# notification_manager:#   resources: {}#   operator:#     resources: {}#   proxy:#     resources: {}gpu:nvidia_dcgm_exporter:enabled: false# resources: {}multicluster:clusterRole: nonenetwork:networkpolicy:enabled: falseippool:type: nonetopology:type: noneopenpitrix:store:enabled: falseservicemesh:enabled: falseistio:components:ingressGateways:- name: istio-ingressgatewayenabled: falsecni:enabled: falseedgeruntime:enabled: falsekubeedge:enabled: falsecloudCore:cloudHub:advertiseAddress:- ""service:cloudhubNodePort: "30000"cloudhubQuicNodePort: "30001"cloudhubHttpsNodePort: "30002"cloudstreamNodePort: "30003"tunnelNodePort: "30004"# resources: {}# hostNetWork: falseiptables-manager:enabled: truemode: "external"# resources: {}# edgeService:#   resources: {}gatekeeper:enabled: false# controller_manager:#   resources: {}# audit:#   resources: {}terminal:timeout: 600zone: ""

开启DevOps项目管理(使用流水线)

官方文档:KubeSphere DevOps 系统

我是all-in-one部署所以需要再安装后启用
  1. admin 用户登录控制台,点击左上角的平台管理,选择集群管理

  2. 点击定制资源定义,在搜索栏中输入 clusterconfiguration,点击搜索结果查看其详细页面。

  3. 自定义资源中,点击 ks-installer 右侧的 ,选择编辑 YAML

  4. 在该 YAML 文件中,搜索 devops,将 enabledfalse 改为 true。完成后,点击右下角的确定,保存配置。

    devops:enabled: true # 将“false”更改为“true”。
    
  5. 在 kubectl 中执行以下命令检查安装过程:

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

流水线示例

//这个当本是推送到私有镜像仓库,可以配置为凭证或者机器人进行验证,这里为了方便直接写的明文
//如果不需要推送 直接移除中间的步骤去掉环境变量相关内容即可
//不同项目直接替换项目名称即可
pipeline {agent {node {label 'maven'}}environment{REGISTRY='10.168.1.170:81'HARBOR_NAMESPACE='k8s'APP_NAME="gateway-${BRANCH_NAME}-${BUILD_ID}:${GIT_COMMIT}"}stages {stage('镜像构建') {agent nonesteps {container('maven') {sh 'env'sh 'docker build -t $APP_NAME .'}}}stage('镜像推送') {agent nonesteps {container('maven') {sh "docker tag $APP_NAME $REGISTRY/$HARBOR_NAMESPACE/$APP_NAME"sh 'docker login -u admin -p 123456 $REGISTRY'sh "docker push $REGISTRY/$HARBOR_NAMESPACE/$APP_NAME"sh 'docker rmi $APP_NAME'}}}stage('k8s部署'){agent nonesteps {container('maven') {sh "envsubst < ./deployment.yaml > ./deployment-substituted.yaml"sh "cat ./deployment-substituted.yaml"sh "kubectl apply -f ./deployment-substituted.yaml"}}}// stage('镜像清理'){//   agent none//   steps {//     container('maven') {//       dir('VueFront') {//         sh '''//         if docker images | grep "$GIT_PREVIOUS_COMMIT"; then//           docker rmi vuefront-$BRANCH_NAME:$GIT_PREVIOUS_COMMIT//         else//           echo "镜像 vuefront-$BRANCH_NAME:$GIT_PREVIOUS_COMMIT 不存在,跳过删除"//         fi//         '''//       }//     }//   }// }}
}

工作负载、服务、路由 示例

从上到下分别是  工作负载、服务、路由  三个模板示例
工作负载中的images与上边流水线的示例相同即可,如果使用私有镜像仓库不用修改,如果使用本地镜像则移除$REGISTRY/$HARBOR_NAMESPACE/
apiVersion: apps/v1
kind: Deployment
metadata:name: gatewaynamespace: giteelabels:app: gatewayversion: v1
spec:replicas: 1selector:matchLabels:app: gatewayversion: v1template:metadata:labels:app: gatewayversion: v1spec:containers:- name: gatewayimage: $REGISTRY/$HARBOR_NAMESPACE/$APP_NAMEports:- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:name: gatewaynamespace: giteelabels:app: gatewayservice: gateway
spec:ports:- port: 80name: httpselector:app: gateway
---
kind: Ingress
apiVersion: networking.k8s.io/v1
metadata:name: gatewaynamespace: giteeannotations:kubernetes.io/ingress.class: nginx
spec:rules: - host: k8s.gateway.comhttp:paths:- path: /pathType: Prefixbackend:service:name: gatewayport:number: 80

流水线中k8s权限问题

提示:

+ kubectl apply -f deployment-substituted.yaml
Error from server (Forbidden): error when retrieving current configuration of:
Resource: "apps/v1, Resource=deployments", GroupVersionKind: "apps/v1, Kind=Deployment"
Name: "gateway", Namespace: "gitee"
from server for: "deployment-substituted.yaml": deployments.apps "gateway" is forbidden: User "system:serviceaccount:kubesphere-devops-worker:default" cannot get resource "deployments" in API group "apps" in the namespace "gitee"
Error from server (Forbidden): error when retrieving current configuration of:
Resource: "/v1, Resource=services", GroupVersionKind: "/v1, Kind=Service"
Name: "gateway", Namespace: "gitee"
from server for: "deployment-substituted.yaml": services "gateway" is forbidden: User "system:serviceaccount:kubesphere-devops-worker:default" cannot get resource "services" in API group "" in the namespace "gitee"
Error from server (Forbidden): error when retrieving current configuration of:
Resource: "networking.k8s.io/v1, Resource=ingresses", GroupVersionKind: "networking.k8s.io/v1, Kind=Ingress"
Name: "gateway", Namespace: "gitee"
from server for: "deployment-substituted.yaml": ingresses.networking.k8s.io "gateway" is forbidden: User "system:serviceaccount:kubesphere-devops-worker:default" cannot get resource "ingresses" in API group "networking.k8s.io" in the namespace "gitee"
script returned exit code 1

在任意节点中将下边的保存为account.yaml,执行

kubectl apply -f account.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:name: kubesphere-devops-worker-installer-binding
roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: ks-installer
subjects:
- kind: ServiceAccountname: defaultnamespace: kubesphere-devops-worker

卸载 KubeSphere 和 Kubernetes

如需删除集群,请执行以下命令
如果是按照快速入门 (All-in-One) 安装的 KubeSphere:

./kk delete cluster

如果是使用高级模式安装的 KubeSphere(使用配置文件创建):

./kk delete cluster [-f config-sample.yaml]

相关文章:

在 Linux 上以 All-in-One 模式安装 kubernetes v1.22.12 kubesphere v3.4.1

KubeSphere4.1安装文档 在 Kubernetes 上快速安装 KubeSphere 在 Linux 上以 All-in-One 模式安装 kubernetes v1.22.12 kubesphere v3.4.1 官方文档&#xff1a;在 Linux 上以 All-in-One 模式安装 KubeSphere 下载文件 KubeKey git地址Releases kubesphere/kubekey 或 …...

网络安全自学是一项需要耐心和恒心的任务

网络安全自学是一项需要耐心和恒心的任务&#xff0c;但只要你按照正确的学习路线图去努力&#xff0c;就能够逐步掌握这一领域的知识和技能。下面是一份详细的学习路线图&#xff0c;它将帮助你从零基础开始&#xff0c;逐步成为网络安全领域的专家。 第一阶段&#xff1a;基…...

Python+OpenCV系列:图像的几何变换

Python OpenCV 系列&#xff1a;图像的几何变换 引言 在图像处理领域&#xff0c;几何变换是一个非常重要的操作&#xff0c;它可以改变图像的位置、大小、方向或形状。在计算机视觉中&#xff0c;这些操作对于图像预处理、特征提取和图像增强至关重要。本文将介绍如何利用 …...

第P1周:Pytorch实现mnist手写数字识别

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 目标 1. 实现pytorch环境配置 2. 实现mnist手写数字识别 3. 自己写几个数字识别试试具体实现 &#xff08;一&#xff09;环境 语言环境&#xff1a;Python…...

使用EventLog Analyzer进行Apache日志监控和日志分析

一、什么是Apache日志分析 Apache日志分析是网站管理和维护的重要部分&#xff0c;通过分析Apache服务器生成的日志文件&#xff0c;可以了解网站的访问情况、识别潜在的安全问题、优化网站性能等。 二、Apache日志类型 Apache日志主要有两种类型&#xff1a;访问日志&a…...

PaddleOCR模型ch_PP-OCRv3文本检测模型研究(二)颈部网络

上节研究了PaddleOCR文本检测v3模型的骨干网&#xff0c;本文接着研究其颈部网络。 文章目录 研究起点残注层颈部网络代码实验小结 研究起点 摘取开源yml配置文件&#xff0c;摘取网络架构Architecture中颈部网络的配置如下 Neck:name: RSEFPNout_channels: 96shortcut: True可…...

360极速浏览器不支持看PDF

360安全浏览器采用的是基于IE内核和Chrome内核的双核浏览器。360极速浏览器是源自Chromium开源项目的浏览器&#xff0c;不但完美融合了IE内核引擎&#xff0c;而且实现了双核引擎的无缝切换。因此在速度上&#xff0c;360极速浏览器的极速体验感更佳。 展示自己的时候要在有优…...

【深度学习】深刻理解ViT

ViT&#xff08;Vision Transformer&#xff09;是谷歌研究团队于2020年提出的一种新型图像识别模型&#xff0c;首次将Transformer架构成功应用于计算机视觉任务中。Transformer最初应用于自然语言处理&#xff08;如BERT和GPT&#xff09;&#xff0c;而ViT展示了其在视觉任务…...

解决vue2中更新列表数据,页面dom没有重新渲染的问题

在 Vue 2 中&#xff0c;直接修改数组的某个项可能不会触发视图的更新。这是因为 Vue 不能检测到数组的索引变化或对象属性的直接赋值。为了确保 Vue 能够正确地响应数据变化&#xff0c;你可以使用以下几种方法&#xff1a; 1. 使用 Vue.set() 使用 Vue.set() 方法可以确保 …...

vscode通过ssh连接远程服务器(实习心得)

一、连接ssh服务器 1.打开Visual Studio Code&#xff0c;进入拓展市场(CtrlShiftX)&#xff0c;下载拓展Remote - SSH 2. 点击远程资源管理器选项卡&#xff0c;并选择远程(隧道/SSH)类别 3. 点击ssh配置&#xff1a;输入你的账号主机ip地址 4.在弹出的选择配置文件中&#xf…...

知识图谱9:知识图谱的展示

1、知识图谱的展示有很多工具 Neo4j Browser - - - - 浏览器版本 Neo4j Desktop - - - - 桌面版本 graphX - - - - 可以集成到Neo4j Desktop Neo4j 提供的 Neo4j Bloom 是用户友好的可视化工具&#xff0c;适合非技术用户直观地浏览图数据。Cypher 是其核心查询语言&#x…...

leetcode 面试经典 150 题:验证回文串

链接验证回文串题序号125类型字符串解题方法双指针法难度简单 题目 如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后&#xff0c;短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。 字母和数字都属于字母数字字符。 给你一个字符串 s&#xf…...

【0363】Postgres内核 从 XLogReaderState readBuf 解析 XLOG Record( 8 )

上一篇: 【0362】Postgres内核 XLogReaderState readBuf 有完整 XLOG page header 信息 ? ( 7 ) 直接相关: 【0341】Postgres内核 读取单个 xlog page (2 - 2 ) 文章目录 1. readBuf 获取 page header 大小1.1 XLOG record 跨 page ?1.2 获取 XLOG Record 的 长度(xl…...

docker tdengine windows快速体验

#拉取镜像 docker pull tdengine/tdengine:2.6.0.34#容器运行 docker run -d --name td2.6 --restartalways -p 6030:6030 -p 6041:6041 -p 6043:6043 -p 6044-6049:6044-6049 -p 6044-6045:6044-6045/udp -p 6060:6060 tdengine/tdengine:2.6.0.34#容器数据持久化到本地 #/va…...

详解RabbitMQ在Ubuntu上的安装

​​​​​​​ 目录 Ubuntu 环境安装 安装Erlang 查看Erlang版本 退出命令 ​编辑安装RabbitMQ 确认安装结果 安装RabbitMQ管理界面 启动服务 查看服务状态 通过IP:port访问 添加管理员用户 给用户添加权限 再次访问 Ubuntu 环境安装 安装Erlang RabbitMq需要…...

Python的3D可视化库【vedo】2-2 (plotter模块) 访问绘制器信息、操作渲染器

文章目录 4 Plotter类的方法4.1 访问Plotter信息4.1.1 实例信息4.1.2 演员对象列表 4.2 渲染器操作4.2.1 选择渲染器4.2.2 更新渲染场景 4.3 控制渲染效果4.3.1 渲染窗格的背景色4.3.2 深度剥离效果4.3.3 隐藏线框的线条4.3.4 改为平行投影模式4.3.5 添加阴影4.3.6 环境光遮蔽4…...

【vue2】文本自动省略组件,支持单行和多行省略,超出显示tooltip

代码见文末 vue3实现 最开始就用的vue3实现&#xff0c;如下 Vue3实现方式 vue2开发和使用文档 组件功能 TooltipText 是一个文字展示组件&#xff0c;具有以下功能&#xff1a; 文本显示&#xff1a;支持单行和多行文本显示。自动判断溢出&#xff1a;判断文本是否溢出…...

网络安全产品之认识防病毒软件

随着计算机技术的不断发展&#xff0c;防病毒软件已成为企业和个人计算机系统中不可或缺的一部分。防病毒软件是网络安全产品中的一种&#xff0c;主要用于检测、清除计算机病毒&#xff0c;以及预防病毒的传播。本文我们一起来认识一下防病毒软件。 一、什么是计算机病毒 计算…...

游戏引擎学习第42天

仓库: https://gitee.com/mrxiao_com/2d_game 简介 目前我们正在研究的内容是如何构建一个基本的游戏引擎。我们将深入了解游戏开发的每一个环节&#xff0c;从最基础的技术实现到高级的游戏编程。 角色移动代码 我们主要讨论的是角色的移动代码。我一直希望能够使用一些基…...

区块链智能合约( solidity) 安全编程

引言&#xff1a;本文由天玄链开源开发者提供&#xff0c;欢迎报名公益天玄链训练营 https://blockchain.163.com/trainingCamp 一、重入和竞态 重入和竞态在solidity 编程安全中会多次提及&#xff0c;历史上也造成了重大的损失。 1.1 问题分析 竞态的描述不严格&#xf…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

uniapp 对接腾讯云IM群组成员管理(增删改查)

UniApp 实战&#xff1a;腾讯云IM群组成员管理&#xff08;增删改查&#xff09; 一、前言 在社交类App开发中&#xff0c;群组成员管理是核心功能之一。本文将基于UniApp框架&#xff0c;结合腾讯云IM SDK&#xff0c;详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析

一、变量声明设计&#xff1a;let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性&#xff0c;这种设计体现了语言的核心哲学。以下是深度解析&#xff1a; 1.1 设计理念剖析 安全优先原则&#xff1a;默认不可变强制开发者明确声明意图 let x 5; …...

大数据零基础学习day1之环境准备和大数据初步理解

学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 &#xff08;1&#xff09;设置网关 打开VMware虚拟机&#xff0c;点击编辑…...

基础测试工具使用经验

背景 vtune&#xff0c;perf, nsight system等基础测试工具&#xff0c;都是用过的&#xff0c;但是没有记录&#xff0c;都逐渐忘了。所以写这篇博客总结记录一下&#xff0c;只要以后发现新的用法&#xff0c;就记得来编辑补充一下 perf 比较基础的用法&#xff1a; 先改这…...

JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案

JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停​​ 1. ​​安全点(Safepoint)阻塞​​ ​​现象​​:JVM暂停但无GC日志,日志显示No GCs detected。​​原因​​:JVM等待所有线程进入安全点(如…...

Device Mapper 机制

Device Mapper 机制详解 Device Mapper&#xff08;简称 DM&#xff09;是 Linux 内核中的一套通用块设备映射框架&#xff0c;为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程&#xff0c;并配以详细的…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难&#xff0c;相信大家会学的很愉快&#xff0c;当然对于有后端基础的朋友来说&#xff0c;本期内容更加容易了解&#xff0c;当然没有基础的也别担心&#xff0c;本期内容会详细解释有关内容 本期用到的软件&#xff1a;yakit&#xff08;因为经过之前好多期…...

Android第十三次面试总结(四大 组件基础)

Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成&#xff0c;用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机&#xff1a; ​onCreate()​​ ​调用时机​&#xff1a;Activity 首次创建时调用。​…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek

文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama&#xff08;有网络的电脑&#xff09;2.2.3 安装Ollama&#xff08;无网络的电脑&#xff09;2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...