kubernetes學習筆記(一)

kubernetes學習筆記(一)

kubernetes簡介

? Kubernetes是Google開源的一個容器編排引擎,它支持自動化部署、大規模可伸縮、應用容器化管理。在生產環境中部署一個應用程序時,通常要部署該應用的多個實例以便對應用請求進行負載均衡。

? 在Kubernetes中,我們可以創建多個容器,每個容器里面運行一個應用實例,然后通過內置的負載均衡策略,實現對這一組應用實例的管理、發現、訪問,而這些細節都不需要運維人員去進行復雜的手工配置和處理。

官方網站:https://kubernetes.io/

kubernetes特點

**自動化部署和擴展:**Kubernetes可以自動部署容器應用,并根據需要自動擴展或縮減應用實例的數量。

服務發現和負載均衡:Kubernetes提供了服務發現機制,使得容器中的應用可以容易地找到彼此并與之通信。同時,它支持內置的負載均衡,可以將流量分發到多個實例。

存儲編排:Kubernetes支持多種存儲系統,包括本地存儲、網絡存儲(如NFS、Ceph等),以及持久卷(Persistent Volumes),使得存儲的管理更加靈活和高效。

自動回滾和自我修復:如果應用實例失敗,Kubernetes可以自動重啟它們。此外,它還可以根據定義的策略自動回滾應用版本。

密鑰和配置管理:Kubernetes支持配置管理,允許應用以環境變量的形式或通過配置文件的方式獲取所需的配置信息。此外,它還支持密鑰管理,可以安全地存儲和管理敏感信息。

批處理和定時任務:Kubernetes支持批處理作業和定時任務,可以通過Cron Jobs等功能實現。

自我修復能力:Kubernetes能夠監控應用的狀態,并在節點故障或應用故障時自動采取措施(如重啟、替換實例等)。

可擴展性和靈活性:Kubernetes架構設計允許它在不同的基礎設施上運行(如物理機、虛擬機、公有云、私有云等),具有很高的可擴展性和靈活性。

社區和生態系統:Kubernetes擁有一個非常活躍的社區和生態系統,有大量的插件、工具和集成解決方案(如Helm、Istio、Prometheus等),可以滿足各種不同的需求。

安全性:Kubernetes提供了多層次的安全特性,包括網絡策略、角色基礎訪問控制(RBAC)、密鑰管理等,確保容器應用的安全性。

kubernetes安裝

在安裝kubernetes之前需要安裝docker。這里只提供centos安裝方式,其他平臺可以看前面docker的學習筆記。

centos官方安裝

#安裝一些系統必要的工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
#添加軟件源信息
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 查/etc/yum.repos.d/docker-ce.repo 中的ur[地址是不是都是阿里云的]
vi /etc/yum.repos.d/docker-ce.repo
# 如果不是,那么把download-stage.docker.com全部替換為mirrors。aliyun.com/docker-ce/#更新并安裝Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce#使用docker version可以看到client端的信息
docker version#啟動服務器再次使用docker version 就可以看到服務器端和客戶端的docker信息了
systemctl start docker

kubernetes集群規劃

? 這里是使用虛擬機去創建了3個centos7.5的主機。分別為其分配2h2g的資源。按理來說master節點的至少2h4g的資源。work節點至少需要1h2g的資源,但是由于電腦資源有限,所以就為每一個節點包括master節點2h2g的資源。至于磁盤的話20-30G就行了,當然資源肯定是越多越好了,也可以使用阿里云或者是其他云廠商的按需付費的云服務器(搶占式實例),實例按小時收費那種。做完實驗以后就可以回收停止付費,也是一種不錯的選擇,也還比較便宜。

這不介紹master和work的區別,我認為至少需要把集群搭起來,才能更好的學習kubernetes。

這里搭建的測試學習環境有太多的主觀因素,生產環境配置還請斟酌。

1、基礎環境
  • 為每臺主機安裝kubelet、kubeadm、kubectl

  • 節點之中不可以有重復的主機名、MAC 地址或 product_uuid。

  • 開啟機器上的某些端口

  • 禁用交換分區。為了保證 kubelet 正常工作,你必須禁用交換分區。

  • 設置防火墻規則、設置不同的hostname、互信

2、虛擬機網絡配置

這里使用NAT模式的網絡,為其指定的私網網段是172.31.26.X如下

image-20250620191116061

為master分配IP為172.31.26.3主機域名master,node01的IP為172.31.26.4主機域名node01,node02的IP為172.31.26.5主機域名node02

若是使用云主機以阿里云的ECS為例,可以在一下欄目去創建專有網絡,

image-20250620191231082

在創建專有網絡時選擇IPV4,網段為172.16.0.0/16如下。

image-20250620191521184

由于這個172.16.0.0/16這個網絡范圍太大可以有65536-2個主機地址,所以可以通過交換機進一步去劃分子網如下。

image-20250620191651168

創建實例的時候選擇對應得專有網絡和交換機即可。

3、基礎環境設置

設置各個主機自己的主機名

hostnamectl set-hostname xxxx
#master節點 hostnamectl set-hostname master
#work節點hostnamectl set-hostname node01

將 SELinux 設置為 permissive 模式(SELinux仍然監控和記錄所有的安全違規事件,但不會強制執行任何拒絕操作。這意味著即使某些操作違反了策略,系統也會允許這些操作繼續進行,但是會在日志中記錄下來,但是有的教程說是必須把SELinux設置成disabled。有的說是 permissive就行。這里設置成permissive

sudo setenforce 0  #臨時關閉
sudo vi /etc/selinux/config #修改config如下 需重啟電腦生效
SELINUX=permissive

關閉swap分區,注釋/etc/fstab文件中所有swap分區相關的掛載配置

swapoff -a  
sed -ri 's/.*swap.*/#&/' /etc/fstab

允許 iptables 檢查橋接流量

cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOFcat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sudo sysctl --system

安裝kubelet、kubeadm、kubectl,首先添加kubelet的yum源。

cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpghttp://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
exclude=kubelet kubeadm kubectl
EOFsudo yum install -y kubelet-1.20.9 kubeadm-1.20.9 kubectl-1.20.9 --disableexcludes=kubernetes
systemctl enable --now kubelet#使用systemctl status kubelet查看時每隔幾秒就會重啟,因為它陷入了一個等待 kubeadm 指令的死循環

下載kubelet需要的鏡像,這里的鏡像地址是我阿里云的容器服務的地址,上面已經有kubelet需要的鏡像了,可以直接使用我的,也可以其他。

sudo tee ./images.sh <<-'EOF'
#!/bin/bash
images=(
kube-apiserver:v1.20.9
kube-proxy:v1.20.9
kube-controller-manager:v1.20.9
kube-scheduler:v1.20.9
coredns:1.7.0
etcd:3.4.13-0
pause:3.2
)
for imageName in ${images[@]} ; do
docker pull registry.cn-hangzhou.aliyuncs.com/sxc-k8s-images/$imageName
done
EOFchmod +x ./images.sh && ./images.sh

首先為所有的機器添加主機域名映射如下,這里根據實際情況填寫即可。

vi /etc/hosts
172.31.26.3 cluster-master
172.31.26.4 node01
172.31.26.5 node02

虛擬機的話可以直接關閉防火墻

kubernetes集群安裝

1、master節點初始化。
#在master節點執行以下命令
kubeadm init \
--apiserver-advertise-address=172.31.26.3 \ #apiserver的地址。
--control-plane-endpoint=cluster-master \   #主節點的域名。
--image-repository registry.cn-hangzhou.aliyuncs.com/sxc-k8s-images \ #鏡像地址
--kubernetes-version v1.20.9 \  #kubernetes-version版本
--service-cidr=10.96.0.0/16 \ #k8s為service所分配的私網IP范圍
--pod-network-cidr=192.168.0.0/16 #k8s為pod所分配的私網IP范圍

保證所有網絡范圍不重疊

執行完上訴命令顯示如下表示主節點初始化成功。

#出現以下證明master節點初始化成功
Your Kubernetes control-plane has initialized successfully!To start using your cluster, you need to run the following as a regular user:#執行以下三條命令mkdir -p $HOME/.kube   sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/configAlternatively, if you are the root user, you can run:export KUBECONFIG=/etc/kubernetes/admin.conf  #執行該命令You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:https://kubernetes.io/docs/concepts/cluster-administration/addons/You can now join any number of control-plane nodes by copying certificate authorities
and service account keys on each node and then running the following as root:kubeadm join cluster-master:6443 --token 5qvdjf.ztj534mpyvz4x2aq \--discovery-token-ca-cert-hash sha256:364e66000f1c0d3d9cd168806f01bee8f1456f2585c91737caf4dc6ea6d619c8 \--control-plane Then you can join any number of worker nodes by running the following on each as root:kubeadm join cluster-master:6443 --token 5qvdjf.ztj534mpyvz4x2aq \--discovery-token-ca-cert-hash sha256:364e66000f1c0d3d9cd168806f01bee8f1456f2585c91737caf4dc6ea6d619c8
2、work節點加入

在node01和node02節點執行以下命令,該信息是由初始化master節點成功后直接給出的。

kubeadm join cluster-master:6443 --token 5qvdjf.ztj534mpyvz4x2aq \--discovery-token-ca-cert-hash sha256:364e66000f1c0d3d9cd168806f01bee8f1456f2585c91737caf4dc6ea6d619c8
3、安裝網絡組件calico
curl https://docs.projectcalico.org/v3.20/manifests/calico.yaml -O
kubectl apply -f calico.yaml

該組件是用于節點之間通信的,calico鏡像可能會拉取失敗可以直接通過docker直接拉取。

網絡組件安裝好以后通過如下命令去查看pod,有如下信息

[root@cluster-master ~]# kubectl get pod -A
NAMESPACE     NAME                                       READY   STATUS                  RESTARTS   AGE
kube-system   calico-kube-controllers-577f77cb5c-pl9gh   1/1     Running                 0          55m
kube-system   calico-node-n9t97                          1/1     Running                 0          55m
kube-system   coredns-584db6f4bf-fhg9z                   1/1     Running                 0          58m
kube-system   coredns-584db6f4bf-fmhkx                   1/1     Running                 0          58m
kube-system   etcd-cluster-master                        1/1     Running                 1          58m
kube-system   kube-apiserver-cluster-master              1/1     Running                 1          58m
kube-system   kube-controller-manager-cluster-master     1/1     Running                 4          58m
kube-system   kube-proxy-l89mb                           1/1     Running                 0          9m40s
kube-system   kube-proxy-pm96g                           1/1     Running                 1          58m
kube-system   kube-proxy-z2lh6                           1/1     Running                 0          10m
kube-system   kube-scheduler-cluster-master              1/1     Running                 3          58m
4、查看節點是否就緒

使用以下命令查看,status為Ready表示節點的已經就緒了,若是是有節點掛了,status狀態是NotReady。

[root@cluster-master ~]# kubectl get nodes  
NAME             STATUS   ROLES                  AGE   VERSION
cluster-master   Ready    control-plane,master   67m   v1.20.9
node01           Ready    <none>                 18m   v1.20.9
node02           Ready    <none>     
5、部署一個DashBoard

使用yaml配置的方式去快速部署一個bashboard。

curl https://raw.githubusercontent.com/kubernetes/dashboard/v2.3.1/aio/deploy/recommended.yaml -O
kubectl apply -f recommended.yaml

修改訪問端口

kubectl edit svc kubernetes-dashboard -n kubernetes-dashboard
#將type: ClusterIP 改為 type: NodePort

查看dashboard運行在哪個端口

 kubectl get svc -A |grep kubernetes-dashboard
kubernetes-dashboard   dashboard-metrics-scraper   ClusterIP   10.96.44.83    <none>        8000/TCP                 7m3s
kubernetes-dashboard   kubernetes-dashboard        NodePort    10.96.250.52   <none>        443:30592/TCP            7m4s

云服務器的記得在安全組開放這個端口,通過集群中任意集群的IP加端口都可以訪問。這個端口是隨機分配的,根據實際情況為準。

另外該地址需要通過https方式訪問。

創建訪問賬號,任然是通過yaml的方式去創建

[root@cluster-master ~]# vi dash.yaml
apiVersion: v1
kind: ServiceAccount
metadata:name: admin-usernamespace: kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:name: admin-user
roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: cluster-admin
subjects:
- kind: ServiceAccountname: admin-usernamespace: kubernetes-dashboard

創建令牌訪問

kubectl -n kubernetes-dashboard get secret $(kubectl -n kubernetes-dashboard get sa/admin-user -o jsonpath="{.secrets[0].name}") -o go-template="{{.data.token | base64decode}}"

會的到一個token如下,就可以在dashboard中通過token登錄了。

eyJhbGciOiJSUzI1NiIsImtpZCI6IjVibVBCMTByTjZxcFdkZFlhTFgzV3FtbDdER0xmd1pTelZUN1YwT1pEdUkifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi11c2VyLXRva2VuLTl3NndjIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImFkbWluLXVzZXIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiIxNmYxMDQ3MS00YWVhLTQxMWYtOTM5Yi1mY2JmMGJhNjg4MWIiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZXJuZXRlcy1kYXNoYm9hcmQ6YWRtaW4tdXNlciJ9.aqNjyfbQkTwYKQmT9Uga0rPUfHOH8qDFZyXhGLnmWkTGgfAgESZwJLzXpWcMtEtAQapYY_vehRmHg_cZ0LDTbiHqqsb45gOtjxjuHXSFPV2lDd9Pn2Adeq8ALWOXTwOgHM6xEBjrCCfuT9hdIz1WNfWlSbbb5XugZvM9jhjI6qQ0s2MSkXYP7kb1graeGkgOzaZiM9-qVxoQf0D0wUJIa4yPW-BYlVme_O8ZXArfTss7LgmlAKz14deGbvyY_sKuRJIoZgiojLZtYBu0L1fzci36TXrOckbRlFDpcCf68_CRp0SzI7eyoczxSJ9RxixDKavaqRXMsIeMxHmD8I2TzA

界面如下,輸入token就可以登陸了。

image-20250620201412863

完成上述一個用來學習的kubernetes集群就安裝好了。

kubernetes安裝總結

集群安裝常見問題

1、在安裝calico組件是k8s提示Pod出現Init:ImagePullBackOff

出現這個問題的話是鏡像拉取失敗了,可以通過一下命令查看 pod安裝失敗的原因

kubectl describe pod pod名字 -n 名稱空間

若是鏡像沒有拉取成功,可以使用docker手動拉取鏡像。一般來說是docker的鏡像倉庫配置的問題。

2、work節點加入時報錯如下

error execution phase preflight: couldn't validate the identity of the API Server: Get "https://cluster-master:6443/api/v1/namespaces/kube-public/configmaps/cluster-info?timeout=10s": dial tcp 172.31.26.3:6443: connect: no route to host

存在這個問題的話,虛擬機搭建的集群記得關閉防火墻,若是服務器的話需要在安全組中放行6443端口號。

systemctl disable firewalld --now

setenforce 0

還有可能是token過期了,重新獲取token

kubeadm token create --print-join-command

3、在訪問dashboard時頁面提示

您的連接不是私密連接

攻擊者可能會試圖從 172.31.26.3 竊取您的信息(例如:密碼、消息或信用卡信息)。詳細了解此警告

方法一:添加到Chrome快捷方式標志 --ignore-certificate-errors ,然后重新打開并瀏覽到您的網站。在快捷方式的目標欄目的后面添加上述

方法二:當查看“您的連接不是私密”屏幕時:輸入 thisisunsafe,當Chrome不允許通過點擊設置例外時,例如對于此HSTS案例,這將允許安全例外。(親測有效)

? 完成上面的步驟,就可以搭建一個學習測試的kubernetes集群了。其實很早就接觸了這個東西,但是一直沒去學習,這次就準備好好的去學習一下。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/89154.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/89154.shtml
英文地址,請注明出處:http://en.pswp.cn/web/89154.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Eureka實戰

1.創建父工程SpringCloudTestSpringCloudTest為父工程&#xff0c;用于引入通用依賴&#xff0c;如spring-boot-starter-web、lombok&#xff0c;這樣子工程就可以直接繼承&#xff0c;無需重復引入。在dependencyManagement標簽中引入和springboot版本對應的springcloud&#…

如何把鏡頭對焦在超焦距上

要把鏡頭對焦在超焦距上&#xff0c;可以按照以下步驟操作&#xff1a;1. 計算超焦距 首先需要知道你的鏡頭參數和相機參數&#xff1a; 焦距 f&#xff08;如 24mm、35mm&#xff09;光圈 N&#xff08;如 f/8、f/11&#xff09;容許彌散圓直徑 c&#xff08;與傳感器尺寸有關…

idea docker插件連接docker失敗

報錯org.apache.hc.client5.http.HttpHostConnectException:Connect to http://localhost:2375 [localhost/127.0.0.1, localhost/0:0:0:o:0:0:0:1] failed:Connection refused:getsockopt解決方法&#xff1a;

【后端】.NET Core API框架搭建(6) --配置使用MongoDB

目錄 1.添加包 2. 連接配置 2.1.鏈接字符串 2.2.連接類 3.倉儲配置 3.1.倉儲實現 3.2.倉儲接口 4.獲取配置和注冊 4.1.添加配置獲取方法 4.2.注冊 5.常規使用案例 5.1實體 5.2.實現 5.3.接口 5.4.控制器 NET Core 應用程序中使用 MongoDB 有許多好處&#xff0c;尤其是在…

Spring AI快速入門

文章目錄1 介紹1_大模型對比2_開發框架對比2 快速入門1_引入依賴2 配置模型3 配置客戶端4 測試3 會話日志1_Advisor2 添加日志Advisor4 會話記憶1_定義會話存儲方式2 配置會話記憶Advisor5 會話歷史1_管理會話歷史2 保存會話id3 查詢會話歷史6 后續1 介紹 SpringAI整合了全球&…

Windows下編譯pthreads

本文記錄在Windows下編譯pthreads的流程。 零、環境 操作系統Windows 11VS Code1.92.1Git2.34.1MSYS2msys2-x86_64-20240507Visual StudioVisual Studio Community 2022CMake3.22.1 一、編譯安裝 1.1 下載 git clone https://git.code.sf.net/p/pthreads4w/code 1.2 構建…

WP Force SSL Pro – HTTPS SSL Redirect Boost Your Website‘s Trust in Minutes!

In the vast digital landscape where security and user trust are paramount, ensuring your WordPress site uses HTTPS is not just a recommendation—it’s a necessity. That’s where WP Force SSL Pro – HTTPS SSL Redirect steps in as your silent guardian, makin…

jvm--java代碼對照字節碼圖解

java代碼&#xff1a;無靜態方法&#xff1b;&#xff08;對應字節碼沒有方法&#xff09; 任何一個類&#xff0c;至少有一個構造器&#xff0c;默認是無參構造java代碼包含&#xff1a;靜態方法java代碼包含&#xff1a;靜態方法、顯示構造方法public class ClassInitTest {p…

動態規劃題解_打家劫舍【LeetCode】

198. 打家劫舍 你是一個專業的小偷&#xff0c;計劃偷竊沿街的房屋。每間房內都藏有一定的現金&#xff0c;影響你偷竊的唯一制約因素就是相鄰的房屋裝有相互連通的防盜系統&#xff0c;如果兩間相鄰的房屋在同一晚上被小偷闖入&#xff0c;系統會自動報警。 給定一個代表每個…

電腦安裝 Win10 提示無法在當前分區上安裝Windows的解決辦法

原因&#xff1a; win10系統均添加快速啟動功能&#xff0c;預裝的win10電腦默認都是UEFI引導和GPT硬盤&#xff0c;傳統的引導方式為Legacy引導和MBR硬盤&#xff0c;UEFI必須跟GPT對應&#xff0c;同理Legacy必須跟MBR對應。如果BIOS開啟UEFI&#xff0c;而硬盤分區表格式為M…

大端序與小端序

理解大端序&#xff08;Big-Endian&#xff09;和小端序&#xff08;Little-Endian&#xff09;的關鍵在于數據在內存中存儲時字節的排列順序&#xff0c;特別是在存儲多字節數據類型&#xff08;如整數、浮點數&#xff09;時。以下是清晰易懂的解釋&#xff1a;核心概念 假設…

PyTorch筆記5----------Autograd、nn庫

1.Autograd grad和grad_fn grad&#xff1a;該tensor的梯度值&#xff0c;每次在計算backward時都需要將前一時刻的梯度歸零&#xff0c;否則梯度值會一直累加grad_fn&#xff1a;葉子結點通常為None&#xff0c;只有結果節點的grad_fn才有效&#xff0c;用于只是梯度函數時哪…

Perl 格式化輸出

Perl 格式化輸出 引言 Perl 是一種通用、解釋型、動態編程語言&#xff0c;廣泛應用于文本處理、系統管理、網絡編程等領域。在Perl編程中&#xff0c;格式化輸出是一種常見的需求&#xff0c;它可以幫助開發者更好地展示和打印信息。本文將詳細講解Perl中格式化輸出的方法&…

Python爬蟲實戰:研究markdown2庫相關技術

一、引言 1.1 研究背景與意義 在當今信息爆炸的時代,互聯網上的信息量呈指數級增長。如何高效地獲取和整理這些信息成為了一個重要的研究課題。網絡爬蟲作為一種自動獲取網頁內容的技術,能夠按照一定的規則,自動地抓取萬維網信息,為信息的收集提供了有力手段。 Markdown …

【Linux】基本指令詳解(二) 輸入\輸出重定向、一切皆文件、認識管道、man、cp、mv、echo、cat

文章目錄一、man指令二、輸入/輸出重定向(echo、一切皆文件&#xff09;三、cp指令四、mv指令五、cat指令六、more/less指令七、head/tail指令八、管道初見一、man指令 Linux的指令有很多參數&#xff0c;我們不可能全記住&#xff0c;可以通過查看聯機手冊獲取幫助。 man 指令…

MVC HTML 幫助器

MVC HTML 幫助器 引言 MVC&#xff08;模型-視圖-控制器&#xff09;是一種流行的軟件架構模式&#xff0c;它將應用程序的邏輯分解為三個主要組件&#xff1a;模型&#xff08;Model&#xff09;、視圖&#xff08;View&#xff09;和控制器&#xff08;Controller&#xff09…

linux下手工安裝ollama0.9.6

1、去下載ollama的linux版的壓縮包&#xff1a; 地址&#xff1a;https://github.com/ollama/ollama/releases2、上傳到linux中。3、解壓&#xff1a; tar zxvf ollama-linux-amd64-0.9.6.tgz -C /usr/local/4、如果僅僅是要手工執行&#xff0c;已經可以了&#xff1a; ollama…

kotlin布局交互

將 wrapContentSize() 方法鏈接到 Modifier 對象&#xff0c;然后傳遞 Alignment.Center 作為實參以將組件居中。Alignment.Center 會指定組件同時在水平和垂直方向上居中。 DiceWithButtonAndImage(modifier Modifier.fillMaxSize().wrapContentSize(Alignment.Center) )創建…

50天50個小項目 (Vue3 + Tailwindcss V4) ? | ToastNotification(推送通知)

&#x1f4c5; 我們繼續 50 個小項目挑戰&#xff01;—— ToastNotification組件 倉庫地址&#xff1a;https://github.com/SunACong/50-vue-projects 項目預覽地址&#xff1a;https://50-vue-projects.vercel.app/ 使用 Vue 3 的 Composition API&#xff08;<script s…

學習筆記(34):matplotlib繪制圖表-房價數據分析與可視化

學習筆記(34):matplotlib繪制圖表-房價數據分析與可視化分析房價分布情況&#xff0c;通過直方圖、核密度估計和正態分布擬合來直觀展示房價的分布特征&#xff0c;并進行統計檢驗。一、房價數據分析與可視化&#xff0c;代碼分析1.1、導入必要的庫import pandas as pd import …