K8s集群部署的方法原理

世界职业院校技能大赛商贸赛道项目参考逐字稿一 商贸赛道“智选优品”—基于大数据与AI驱动的跨境电商平台项目参考逐字稿您订阅本专栏后即可`永久享有所有文章的查阅权`,希望我们更新的参考资料能帮助到您。如果您需要我们团队赋能培训可联系我(企业一线工程师及国一获奖选手在线培训支持:每周直播精讲(可回放,支持弹幕答疑)、代码Review+技术售后(拉群随时问,12h内响应)、④路演PPT+答辩话术一对一点评,评委视角提前彩排、适合:中职/高职赛项选手、指导老师带队、校企工作室、整校打包另谈(可开发票)) 阅读详情

一、环境部署

 

主机IP配置角色
harbor172.25.254.250cpu1、mem 1Gharbor仓库
master172.25.254.100cpu4、mem>4Gmaster,k8s集群控制节点
node1172.25.254.10cpu2、mem 2Gk8s集群工作节点
node2172.25.254.20cpu2、mem 2Gk8s集群工作节点
#所有主机关闭swap
[root@harbor harbor]# systemctl disable --now swap.target
                      systemctl mask swap.target
                      sed '/swap/s/^/#/g' -i /etc/fstab

swapon -s  #如果还有输出
swapoff -a #直接关闭

二、构建harbor的镜像仓库

1.部署docker本地仓库

[root@harbor ~]# vim /etc/yum.repos.d/docker.repo

[docker]
name = docker
baseurl = https://mirrors.aliyun.com/docker-ce/linux/rhel/9.6/x86_64/stable/
gpgcheck = 0

[root@harbor ~]# dnf install httpd createrepo -y
[root@harbor ~]# mkdir /var/www/html/docker/ -p
[root@harbor ~]# vim /etc/httpd/conf/httpd.conf 

Listen 4444

[root@harbor ~]# systemctl enable --now httpd
[root@harbor ~]# dnf install docker-ce --downloadonly --destdir /mnt/ -y
[root@harbor ~]# mv /mnt/*.rpm /var/www/html/docker/
[root@harbor ~]# createrepo -v /var/www/html/docker/

[root@harbor ~]# vim /etc/yum.repos.d/docker.repo 

[docker]
name = docker
baseurl = http://172.25.254.250:4444/docker
gpgcheck = 0

[root@harbor ~]# dnf install docker-ce -y

2.安装docker在harbor仓库节点

[root@harbor ~]# echo br_netfilter > /etc/modules-load.d/docker_mod.conf
[root@harbor ~]# modprobe -a br_netfilter 

[root@harbor ~]# vim /etc/sysctl.d/docker.conf

net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1

[root@harbor ~]# systemctl restart systemd-modules-load.service 
[root@harbor ~]# sysctl --system

[root@harbor ~]# vim /lib/systemd/system/docker.service 

ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --iptables=true

[root@harbor ~]# systemctl daemon-reload 
[root@harbor ~]# systemctl enable --now docker

3.生成key

[root@harbor ~]# mkdir /data/certs -p

[root@harbor ~]# openssl req -newkey  rsa:4096 \
> -nodes -sha256 -keyout /data/certs/foldwin.org.key \
> -addext "subjectAltName = DNS:reg.foldwin.org" \
> -x509 -days 365 -out /data/certs/foldwin.org.crt

Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:Shannxi
Locality Name (eg, city) [Default City]:Xi'an
Organization Name (eg, company) [Default Company Ltd]:kubernetes
Organizational Unit Name (eg, section) []:harbor
Common Name (eg, your name or your server's hostname) []:reg.foldwin.org
Email Address []:admin@foldwin.org

4.编辑harbor配置文件

[root@harbor ~]# tar zxf harbor-offline-installer-v2.5.4.tgz -C /opt/
[root@harbor ~]# cd /opt/harbor/
[root@harbor harbor]# cp harbor.yml.tmpl harbor.yml
[root@harbor harbor]# vim harbor.yml

  5 hostname: reg.foldwin.org
 17   certificate: /data/certs/foldwin.org.crt
 18   private_key: /data/certs/foldwin.org.key
 34 harbor_admin_password: 123

[root@harbor harbor]# ./install.sh --with-chartmuseum

[root@harbor harbor]# vim /lib/systemd/system/harbor.service

[Unit]
Description=harbor with Docker Compose
Documentation=https://reg.foldwin.com/compose/
After=docker.service network-online.target
Requires=docker.service

[Service]
Type=oneshot
WorkingDirectory=/opt/harbor
ExecStart=/usr/bin/docker compose up -d
ExecStop=/usr/bin/docker compose down
RemainAfterExit=yesv

[Install]
WantedBy=multi-user.target

[root@harbor harbor]# docker compose down
[root@harbor harbor]# systemctl enable --now harbor
[root@harbor harbor]# docker compose ps 

5.启动并验证

[root@harbor harbor]# mkdir /etc/docker/certs.d/reg.foldwin.org/ -p
[root@harbor harbor]# cp /data/certs/foldwin.org.crt /etc/docker/certs.d/reg.foldwin.org/ca.crt
[root@harbor harbor]# vim /etc/hosts

172.25.254.250  harbor reg.foldwin.org

[root@harbor harbor]# systemctl restart docker
[root@harbor harbor]# docker compose up -d
[root@harbor harbor]# docker login reg.foldwin.org -u admin
Password: 

WARNING! Your credentials are stored unencrypted in '/root/.docker/config.json'.
Configure a credential helper to remove this warning. See
https://docs.docker.com/go/credential-store/

Login Succeeded

三、利用Ansible构建其他主机docker

1.安装ansible

[root@harbor ~]# vim /etc/yum.repos.d/epel.repo   --配置镜像仓库

[epel]
name = epel
baseurl = https://mirrors.aliyun.com/epel/9/Everything/x86_64/
gpgcheck = 0

[root@harbor ~]# dnf install ansible-core.x86_64 ansible.noarch -y --安装核心及扩展包 

2.建立普通用户来运行ansible

        如用root来运行ansible脚本,出现改错文件时,由于权限太高,可能会导致集群直接崩盘,所以采用普通用户,也更贴合企业真实工作环境

[root@harbor ~]# useradd devops
[root@harbor ~]# echo 123 | passwd --stdin devops
更改用户 devops 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@harbor ~]# su - devops
[devops@harbor ~]$ mkdir ansible
[devops@harbor ~]$ cd ansible/
[devops@harbor ansible]$ 

3.生成ansible的临时配置文件并在每个主机上建立普通用户devops

[devops@harbor ansible]$ vim inventory

[servers]
172.25.254.100
172.25.254.20
172.25.254.10

[devops@harbor ansible]$ ssh-keygen -t ed25519
#后面全部回车跳过

[devops@harbor ansible]$ for i in 100 10 20
> do
> ssh-copy-id root@172.25.254.$i
> done

[devops@harbor ansible]$ ansible all -m user -a "name=devops state=present"

[devops@harbor ansible]$ ansible all -m shell -a 'echo "123" | passwd --stdin devops'

[devops@harbor ansible]$ ansible all -m lineinfile -a 'path=/etc/sudoers line="devops  ALL=(ALL)  NOPASSWD:ALL" insertafter=EOF'

4.生成ansible的主配置文件并测试

[defaults]
inventory = /home/devops/ansible/inventory
remote_user = devops
ask_pass = false
host_key_checking = false

[privilege_escalation]
become = true
become_method = sudo
become_user = root
become_ask_pass = false

[devops@harbor ansible]$ ansible all -m shell -a 'whoami'
172.25.254.100 | CHANGED | rc=0 >>
root
172.25.254.20 | CHANGED | rc=0 >>
root
172.25.254.10 | CHANGED | rc=0 >>
root

5.利用ansible剧本部署docker

[devops@harbor ansible]$ vim kubernetes-devops.yml 


- name: devops k8s from ansible
  hosts: all
  tasks:
  - name: setup docker repo
    yum_repository:
      name: docker
      description: docker
      baseurl: http://172.25.254.250:4444/docker
      file: docker
      gpgcheck: no

  - name: install docker
    dnf:
      name: docker-ce
      state: present

  - name: setup docker.service
    replace:
      path: /lib/systemd/system/docker.service
      regexp: "ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock"
      replace: "ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock  --iptables=true"

  - name: setup docker registry
    copy:
      content: |
        {
          "registry-mirrors":["https://reg.foldwin.org"]
        }
      dest: /etc/docker/daemon.json

  - name: setup docker certs
    file:
      path: /etc/docker/certs.d/reg.foldwin.org
      state: directory

  - name: cp certs file
    copy:
      src: "{{item.src}}"
      dest: "{{item.dest}}"
    loop:
      - src: /etc/docker/certs.d/reg.foldwin.org/ca.crt
        dest: /etc/docker/certs.d/reg.foldwin.org/ca.crt

      - src: /etc/docker/certs.d/reg.foldwin.org/ca.crt
        dest: /etc/pki/ca-trust/source/anchors/ca.crt

  - name: load module
    copy:
      dest: "{{item.dest}}"
      content: "{{item.value}}"
    loop:
      - dest: /etc/modules-load.d/docker_mod.conf
        value: br_netfilter
      - dest: /etc/sysctl.d/docker.conf
        value: |
          net.bridge.bridge-nf-call-iptables = 1
          net.bridge.bridge-nf-call-ip6tables = 1
          net.ipv4.ip_forward = 1

  - name: update ca cert
    shell: "update-ca-trust extract;sysctl --system"

  - name: start services
    service:
      name: "{{item}}"
      state: restarted
      enabled: yes
    loop:
      - docker
      - systemd-modules-load.service

[devops@harbor ansible]$ ansible-playbook kubernetes-devops.yml 

6.利用ansible安装cri-dockerd

[devops@harbor ansible]$ tar zxf cri-dockerd-0.4.4.amd64.tgz 
[devops@harbor ansible]$ ls
ansible.cfg  cri-dockerd  cri-dockerd-0.4.4.amd64.tgz  inventory  kubernetes-devops.yml

[devops@harbor ansible]$ cd cri-dockerd/
[devops@harbor cri-dockerd]$ ls
cri-dockerd  cri-docker.service  cri-docker.socket

[devops@harbor cri-dockerd]$ vim cri-docker.service
[Service]
Type=notify
ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint fd:// --network-plugin=cni --pod-infra-container-image=reg.foldwin.org/k8s/pause:3.10.1
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always

[devops@harbor ansible]$ vim kubernetes-devops.yml 
  - name: stup cri-dockerd
    copy:
      src: "{{item.src}}"
      dest: "{{item.dest}}"
      mode: '0755'
    loop:
      - src: ./cri-dockerd/cri-dockerd
        dest: /usr/bin/cri-dockerd

      - src: "./cri-dockerd/cri-docker.service"
        dest: "/lib/systemd/system/cri-docker.service"

      - src: "./cri-dockerd/cri-docker.socket"
        dest: "/lib/systemd/system/cri-docker.socket"

  - name: update ca cert
    shell: "update-ca-trust extract;sysctl --system;systemctl daemon-reload"

  - name: start services
    service:
      name: "{{item}}"
      state: restarted
      enabled: yes
    loop:
      - docker
      - systemd-modules-load.service
      - cri-docker


[devops@harbor ansible]$ ansible-playbook kubernetes-devops.yml 

7.利用ansible部署k8s软件

[devops@harbor ansible]$ vim kubernetes-devops.yml

- name: install kubernetes from ansible
  hosts: all
  tasks:
  - name: setup k8s repo
    yum_repository:
      name: kubernetes
      description: kubernetes
      baseurl: https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.35/rpm
      file: kubernetes
      gpgcheck: no

  - name: install software in master
    dnf:
      name: "{{item}}"
      state: present
    loop:
      - kubeadm-1.35.7-150500.1.1
      - kubelet-1.35.7-150500.1.1
      - kubectl-1.35.7-150500.1.1
    when: inventory_hostname == "172.25.254.100"

  - name: install software in work node
    dnf:
      name: "{{item}}"
      state: present
    loop:
      - kubeadm-1.35.7-150500.1.1
      - kubelet-1.35.7-150500.1.1
    when: inventory_hostname == "172.25.254.10" or inventory_hostname == "172.25.254.20"
  
  - name: setup kubectl kubeadm complication
    lineinfile:
      path: /root/.bashrc
      line: |
        source <(kubectl completion bash)
        source <(kubeadm completion bash)
    when: inventory_hostname == "172.25.254.100"

  - name: start kubelet
    service:
      name: kubelet
      state: started
      enabled: yes

[devops@harbor ansible]$ ansible-playbook kubernetes-devops.yml

[root@master ~]# source ~/.bashrc
[root@master ~]# kubectl 

alpha          (Commands for features in alpha)
annotate       (更新一个资源的注解)
api-resources  (Print the supported API resources on the server)
api-versions   (Print the supported API versions on the server, in the form of "group/version")
apply          (Apply a configuration to a resource by file name or stdin)
attach         (挂接到一个运行中的容器)
auth           (Inspect authorization)
autoscale      (Auto-scale a deployment, replica set, stateful set, or replication controller)
certificate    (Modify certificate resources)
cluster-info   (Display cluster information)
completion     (Output shell completion code for the specified shell (bash, zsh, fish, or powershell))
config         (修改 kubeconfig 文件)
cordon         (标记节点为不可调度)
cp             (Copy files and directories to and from containers)
create         (Create a resource from a file or from stdin)
debug          (Create debugging sessions for troubleshooting workloads and nodes)
delete         (Delete resources by file names, stdin, resources and names, or by resources and label…)
describe       (显示特定资源或资源组的详细信息)
diff           (Diff the live version against a would-be applied version)
drain          (清空节点以准备维护)
edit           (编辑服务器上的资源)
events         (List events)
exec           (在某个容器中执行一个命令)
explain        (Get documentation for a resource)
expose         (Take a replication controller, service, deployment or pod and expose it as a new Kube…)
get            (显示一个或多个资源)
help           (Help about any command)
kustomize      (Build a kustomization target from a directory or URL)
label          (更新某资源上的标签)
logs           (打印 Pod 中容器的日志)
options        (输出所有命令的层级关系)
patch          (Update fields of a resource)
plugin         (Provides utilities for interacting with plugins)
port-forward   (将一个或多个本地端口转发到某个 Pod)
proxy          (运行一个指向 Kubernetes API 服务器的代理)
replace        (Replace a resource by file name or stdin)
rollout        (Manage the rollout of a resource)
run            (在集群上运行特定镜像)
scale          (Set a new size for a deployment, replica set, or replication controller)
set            (为对象设置指定特性)
taint          (更新一个或者多个节点上的污点)
top            (Display resource (CPU/memory) usage)
uncordon       (标记节点为可调度)
version        (输出客户端和服务端的版本信息)
wait           (Wait for a specific condition on one or many resources)

[root@master ~]# kubeadm 
certs       config      init        kubeconfig  token       version     
completion  help        join        reset       upgrade 

[root@master ~]# systemctl status kubelet.service

● kubelet.service - kubelet: The Kubernetes Node Agent
     Loaded: loaded (/usr/lib/systemd/system/kubelet.service; enabled; preset: disabled)
    Drop-In: /usr/lib/systemd/system/kubelet.service.d
             └─10-kubeadm.conf
     Active: activating (auto-restart) (Result: exit-code) since Sat 2026-08-22 20:42:57 CST; 4s ago
       Docs: https://kubernetes.io/docs/
    Process: 51855 ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_K>
   Main PID: 51855 (code=exited, status=1/FAILURE)
        CPU: 20ms

8月 22 20:42:57 master systemd[1]: kubelet.service: Main process exited, code=exited, status=1/FAILURE
8月 22 20:42:57 master systemd[1]: kubelet.service: Failed with result 'exit-code'.

四、完成初始化kubernetes集群

1.下载kubernetes集群所需镜像

#查看镜像
[root@master ~]# kubeadm config images list
I0822 20:52:23.434259   52150 version.go:260] remote version is much newer: v1.36.4; falling back to: stable-1.35
registry.k8s.io/kube-apiserver:v1.35.8
registry.k8s.io/kube-controller-manager:v1.35.8
registry.k8s.io/kube-scheduler:v1.35.8
registry.k8s.io/kube-proxy:v1.35.8
registry.k8s.io/coredns/coredns:v1.13.1
registry.k8s.io/pause:3.10.1
registry.k8s.io/etcd:3.6.6-0

#下载镜像
[root@master ~]# kubeadm config images pull \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.35.7 \
--cri-socket=unix:///var/run/cri-dockerd.sock
[config/images] Pulled registry.aliyuncs.com/google_containers/kube-apiserver:v1.35.3
[config/images] Pulled registry.aliyuncs.com/google_containers/kube-controller-manager:v1.35.3
[config/images] Pulled registry.aliyuncs.com/google_containers/kube-scheduler:v1.35.3
[config/images] Pulled registry.aliyuncs.com/google_containers/kube-proxy:v1.35.3
[config/images] Pulled registry.aliyuncs.com/google_containers/coredns:v1.13.1
[config/images] Pulled registry.aliyuncs.com/google_containers/pause:3.10.1
[config/images] Pulled registry.aliyuncs.com/google_containers/etcd:3.6.6-0

#上传镜像到本地
[root@master ~]# docker login reg.foldwin.org -u admin
Password: 

WARNING! Your credentials are stored unencrypted in '/root/.docker/config.json'.
Configure a credential helper to remove this warning. See
https://docs.docker.com/go/credential-store/

Login Succeeded

[root@master ~]# docker images  --format  "{{.Repository}}:{{.Tag}}" | awk -F "/" '/google/{system("docker tag "$0" reg.foldwin.org/k8s/"$3)}'
[root@master ~]# docker images  --format  "{{.Repository}}:{{.Tag}}" | awk -F "/" '/foldwin/{system("docker push "$0)}'

2.在master中初始化kubernetes集

[root@master ~]# kubeadm init --pod-network-cidr=10.244.0.0/16 \
--image-repository reg.timinglee.org/k8s \
--kubernetes-version v1.35.7 \
--cri-socket=unix:///var/run/cri-dockerd.sock

#每个人不一样,其他主机加入本集群的凭证
kubeadm join 172.25.254.100:6443 --token 8ug1qv.syb84mf0fckkwge3 \

	--discovery-token-ca-cert-hash sha256:362b85dd22ed50a7cf62b944acb77a33b4b200021f293f7850d843631d976fe7 

#如果忘记
[root@master ~]#  kubeadm token create --print-join-command
kubeadm join 172.25.254.100:6443 --token 71whpo.ieo4x5itivtpahyy --discovery-token-ca-cert-hash sha256:362b85dd22ed50a7cf62b944acb77a33b4b200021f293f7850d843631d976fe7 

#如果初始化出问题
[root@master ~]# kubeadm reset  --cri-socket=unix:///var/run/cri-dockerd.sock #可以重置集群设定


#添加kubernets环境变量到本机
[root@master ~]# echo "export KUBECONFIG=/etc/kubernetes/admin.conf" > ~/.bash_profile
[root@master ~]# source ~/.bash_profile
[root@master ~]# kubectl get nodes
NAME     STATUS     ROLES           AGE     VERSION
master   NotReady   control-plane   2m43s   v1.35.7

#添加node节点到本集群
[root@node1 ~]# kubeadm join 172.25.254.100:6443 --token 71whpo.ieo4x5itivtpahyy --discovery-token-ca-cert-hash sha256:362b85dd22ed50a7cf62b944acb77a33b4b200021f293f7850d843631d976fe7 --cri-socket=unix:///var/run/cri-dockerd.sock

#查看,因为没有装网络插件所以还是notready
[root@master ~]#  kubectl get nodes     
NAME     STATUS     ROLES           AGE    VERSION
master   NotReady   control-plane   26m    v1.35.7
node1    NotReady   <none>          2m1s   v1.35.7
node2    NotReady   <none>          113s   v1.35.7

3.安装网络插件

[root@master ~]# tar zxf kube-flannel-v0.28.9.tar.gz
[root@master ~]# ls
flannel  kube-flannel-v0.28.9.tar.gz
[root@master ~]# cd flannel/

[root@master flannel]# docker load  -i kube-flannel-v0.28.9.tar
Loaded image: ghcr.io/flannel-io/flannel-cni-plugin:v1.9.1-flannel3
Loaded image: ghcr.io/flannel-io/flannel:v0.28.9


[root@master ~]# docker tag ghcr.io/flannel-io/flannel-cni-plugin:v1.9.1-flannel3 reg.foldwin.org/flannel-io/flannel-cni-plugin:v1.9.1-flannel3
[root@master ~]# docker push  reg.foldwin.org/flannel-io/flannel-cni-plugin:v1.9.1-flannel3
The push refers to repository [reg.foldwin.org/flannel-io/flannel-cni-plugin]
2c8aa52d4746: Pushed
5aa68bbbc67e: Pushed
v1.9.0-flannel1: digest: sha256:b3d30c221113b30fea3e8a7fccb145e929b097d0319b9eeb6b5a591b10b5c671 size: 739

[root@master ~]# docker tag ghcr.io/flannel-io/flannel:v0.28.9 reg.foldwin.org/flannel-io/flannel:v0.28.9
[root@master ~]# docker push reg.foldwin.org/flannel-io/flannel:v0.28.9
The push refers to repository [reg.foldwin.org/flannel-io/flannel]
        
[root@master flannel]# vim kube-flannel.yml  
148:        image: flannel-io/flannel:v0.28.9
175:        image: flannel-io/flannel-cni-plugin:v1.9.1-flannel3
186:        image: flannel-io/flannel:v0.28.9


[root@master ~]# kubectl apply -f kube-flannel.yml
namespace/kube-flannel created
serviceaccount/flannel created
clusterrole.rbac.authorization.k8s.io/flannel created
clusterrolebinding.rbac.authorization.k8s.io/flannel created
configmap/kube-flannel-cfg created
daemonset.apps/kube-flannel-ds created

#测试
[root@master ~]# kubectl get  nodes
NAME     STATUS   ROLES           AGE     VERSION
master   Ready    control-plane   13m     v1.35.7
node1    Ready    <none>          9m44s   v1.35.7
node2    Ready    <none>          9m36s   v1.35.7

MicroCap声学仿真介绍(五)-倒相管扬声器系统仿真 实际倒相管的扬声器单体选择、后腔容积、倒相管的直径和长度都是需要精心挑选的,为了便于演示,随意指定了倒相管的长度和直径,现实中还是不能这么随便的。之前介绍了封闭式扬声器的仿真,今天在封闭式扬声器的基础上,再介绍一下倒相管扬声器系统的仿真。 阅读详情

相关推荐

Alipay 支付唤起 h5 测试

测试地址 https://recharge.apps.oppomobile.com/recharge-center/recharge/?from=message try { //唤起客户端快捷参数 var data = {"requestType":"SafePay","fromAppUrlScheme":"alipays","dataString":"h5_ro...

六桥风月IT随笔 1万+

Kubernetes(K8s)集群部署方法与原理总结

对比二进制部署,不需要手动每台机器写systemd文件;2. cri‑socket参数遗忘:使用cri‑dockerd做CRI,kubeadm init不加`--cri-socket=unix:///var/run/cri‑dockerd.sock`,会默认找containerd,初始化直接报错。4. cri‑docker.socket没有启动**:只启动cri‑docker.service会报错,socket必须enable启动。# =========部署 cri‑dockerd==========

2401_87687398的博客 250

国产信创麒麟操作系统 (kylin v10 x86架构) 离线安装nginx步骤(亲测,超详细步骤)、修改nginx配置文件、启动、重启、关闭nginx记录(亲测有效)

国产信创麒麟操作系统 (kylin v10 x86架构) 离线安装nginx步骤(亲测,超详细步骤)、修改nginx配置文件、启动、重启、关闭nginx记录(亲测有效)

qq445829096的博客 2764

K8s 集群部署方法与原理总结

Kubernetes (k8s) 集群由组成;控制平面负责集群调度管理,工作节点运行业务 Pod。部署本质就是:安装各组件、配置组件间通信、生成 CA 证书、配置 kubelet、网络插件,完成集群初始化。

2503_91343174的博客 159

在 NVIDIA Orin (JetPack 6.0) 上配置 PyTorch 2.4 + Torchvision 0.19 的完整避坑指南

本文提供在NVIDIA Jetson Orin设备上,基于JetPack 6.0系统配置PyTorch 2.4与Torchvision 0.19环境的完整指南。通过使用Miniconda环境隔离、安装特定版本PyTorch夜间构建版、编译匹配的Torchvision源码等步骤,解决版本不匹配、CUDA支持等常见问题,确保AI开发环境稳定可用。

weixin_29179311的博客 364

用Linkboy玩转Arduino:3小时搞定智能倒车雷达(附仿真文件下载)

本文详细介绍了如何利用Linkboy图形化编程工具,在3小时内快速搭建一个基于Arduino的智能倒车雷达项目。通过仿真环境,初学者无需硬件即可学习超声波测距原理、报警逻辑设计,并完成从虚拟仿真到实体硬件的完整流程。文章提供了清晰的步骤、调试技巧及功能扩展思路,并附有仿真文件,是入门Arduino和智能硬件制作的绝佳实践指南。

weixin_29159441的博客 403

k8s集群部署的方法原理

Kubernetes(简称 K8s)是开源容器编排平台,主要用于自动化管理容器化应用,支持应用调度、故障自愈与弹性伸缩,是云原生架构的核心基础设施,可统一管理跨环境的业务集群。Kubernetes项目来源于Google 基于内部 Borg 系统, 取其精华,去其糟粕。Kubernetes对计算资源进行了更高层次的抽象,通过将容器进行细致的组合,把最终的应用服务交给用户。******容器编排工具服务于容器化部署容器化部署与虚拟化相似,但其共享了操作系统。

2301_81073010的博客 329

旗鱼优化算法(SFO)详解:从海洋猎手到智能优化

旗鱼优化算法(SFO)是一种新型群体智能优化算法,灵感来源于旗鱼的群体捕食行为。该算法采用双种群机制,模拟旗鱼(精英个体)与沙丁鱼(普通个体)的交互过程,通过交替攻击策略实现探索与开发的平衡。核心机制包括:基于猎物密度的旗鱼位置更新、随迭代衰减的攻击力度控制、以及捕食替换机制。SFO具有参数少、全局搜索能力强等特点,在高维复杂优化问题中表现优异。算法通过模拟自然界中的群体智能行为,为解决工程优化问题提供了新思路。

qq_42212808的博客 163

kubernetes集群部署的方法原理

在Docker作为高级容器引擎快速发展的同时,在Google内部,容器技术已经应用了很多年Borg系统运行管理着成千上万的容器应用。Kubernetes项目来源于Borg,可以说是集结了Borg设计思想的精华,并且吸收了Borg系统中的经验和教训。Kubernetes对计算资源进行了更高层次的抽象,通过将容器进行细致的组合,将最终的应用服务交 给用户。kubernetes的本质是一组服务器集群,它可以在集群的每个节点上运行特定的程序,来对节点中的容器进行管理。

2402_86241603的博客 189

《八》:玩家位置同步(玩家防碰撞)

在VR大空间体验中,由于玩家佩戴头显设备无法直接观察彼此位置,容易发生碰撞。因此,需要将玩家的实时位置信息绘制在虚拟空间中,实现位置可视化。通过获取头显的位置和旋转角度等数据,可以推算出玩家的移动状态和位置。使用可序列化的玩家结构体,通过UDP将玩家数据发送到服务器,服务器接收并反序列化数据后,同步所有玩家的最新信息至各客户端。客户端根据接收到的数据渲染虚拟人物模型,实现动态位置更新。这一过程涉及数据序列化、反序列化、网络通信和实时渲染等技术,确保玩家在虚拟空间中的位置同步和可视化。

unitygroup的博客 413

Python 爬虫实战:亚马逊商品评论 + 评分抓取(情感分析数据预处理)

在电子商务领域,用户评论是了解产品口碑和市场反馈的重要渠道。亚马逊作为全球领先的电商平台,拥有海量的商品评论数据。本文将详细介绍如何使用 Python 编写爬虫程序,从亚马逊网站抓取商品评论和评分数据,并进行情感分析的数据预处理。

yansideyucsdn的博客 769

K8s 集群部署方法及原理

本文将系统性地梳理 K8s 集群的整体架构、核心组件职责、三种主流部署方式,并结合实际实验,带你从零搭建一套可用的 Kubernetes 集群。Docker 的使用普及率最高,虽然 Kubernetes 在 1.24 版本后已经移除了 kubelet 对 Docker 的直接支持(即移除 dockershim),但可以借助 cri-dockerd 插件的方式来实现集群创建。CRI-O 是 Kubernetes 创建容器最直接的一种方式,专门为 K8s 而生,不包含 Docker 的额外功能。

2402_89420592的博客 223

Linux故障排查和性能优化面试题及参考答案

在 Linux 系统中,负载(Load Average)是衡量系统繁忙程度的一个重要指标,它表示系统在特定时间间隔内运行队列中的平均进程数。负载值反映了系统当前的工作压力,主要包括 CPU 等待运行的进程数量和处于不可中断睡眠状态(通常是等待 I/O 操作完成)的进程数量。负载平均值通常有三个数值,分别代表过去 1 分钟、5 分钟和 15 分钟内的系统平均负载。例如,在使用uptime命令或查看文件时,会看到类似这样的输出,这三个数值依次表示过去 1 分钟、5 分钟和 15 分钟的负载平均值。

大模型大数据攻城狮的专栏 1082

K8S集群部署的方法原理

作用:集群的控制平面,负责集群的决策ApiServer : 资源操作的唯一入口,接收用户输入的命令,提供认证、授权、API注册和发现等机制Scheduler : 负责集群资源调度,按照预定的调度策略将Pod调度到相应的node节点上ControllerManager : 负责维护集群的状态,比如程序部署安排、故障检测、自动扩展、滚动更新等Etcd :负责存储集群中各种资源对象的信息。

Nowakne的博客 199

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

总结k8s集群部署的方法原理

本次实验完成了多节点Kubernetes集群部署前期环境准备与cri‑dockerd容器运行时搭建,对四台主机完成关闭swap、安装Docker、配置Harbor私有仓库证书、配置hosts解析与K8s软件源等统一预处理,通过rpm包或二进制两种方式部署cri‑dockerd,修改服务配置指定CNI插件与私有仓库pause镜像,实现K8s通过CRI接口对接Docker;实验过程中遇到部分常见问题,如swap未彻底关闭导致集群初始化报错,需要同时执行命令关闭并修改/etc/fstab永久注释swap条目;

2402_88968251的博客 224

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

总结K8s集群部署的方法原理

私有镜像仓库 reg.timinglee.org,k8s域名解析指向172.25.254.254。

c22786558_4557的博客 153
上一篇: Apache
下一篇: K8s pod管理
FoldWinCard
博客等级 码龄3年 48粉丝 47原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值