当前位置: 首页> 汽车> 维修 > 房产网站建设公司_博客网络营销方式_优化关键词排名seo软件_东莞seo排名公司

房产网站建设公司_博客网络营销方式_优化关键词排名seo软件_东莞seo排名公司

时间:2025/8/23 7:54:04来源:https://blog.csdn.net/2201_75758583/article/details/142916721 浏览次数: 0次
房产网站建设公司_博客网络营销方式_优化关键词排名seo软件_东莞seo排名公司

一、Kubernetes简介
Kubernetes(简称 K8s)是一个开源的容器编排引擎,用于自动化部署、扩展和管理容器化应用。

核心概念
Pod:K8s 中最小的部署单元,是一组容器的集合,共享网络和存储资源。Pod 中的容器通常是紧密相关的,共同完成一个特定的功能。
Node:是 K8s 中的工作节点,可以是物理机或虚拟机,用于运行 Pod。
Deployment:用于管理 Pod 的副本数量、更新策略等,实现应用的高可用和弹性伸缩。
Service:提供了一种抽象方式,将一组 Pod 暴露为一个稳定的网络服务,实现负载均衡和服务发现。
Namespace:用于隔离不同的用户、项目或环境,确保资源的安全性和独立性。
主要功能
自动化部署:K8s 可以自动将容器部署到集群中的节点上,无需手动操作。通过定义 Deployment 等资源对象,可以指定容器的副本数量、更新策略等,实现应用的快速部署和更新。
弹性伸缩:根据应用的负载情况,K8s 可以自动调整容器的副本数量,实现弹性伸缩。例如,当应用的负载增加时,可以自动增加容器的副本数量,以提高系统的性能和可用性;当负载减少时,可以自动减少容器的副本数量,以节约资源。
负载均衡:K8s 中的 Service 提供了负载均衡功能,可以将请求分发到多个 Pod 上,实现高可用和高性能。Service 可以通过不同的负载均衡策略,如轮询、随机等,将请求分发到不同的 Pod 上。
服务发现:K8s 中的 Service 还提供了服务发现功能,可以让其他应用自动发现和访问服务。通过 Service 的名称和标签,其他应用可以轻松地找到对应的服务,并进行通信。
存储管理:K8s 支持多种存储类型,如本地存储、网络存储等。可以通过 PersistentVolume 和 PersistentVolumeClaim 等资源对象,为应用提供持久化存储。
配置管理:K8s 可以管理应用的配置信息,如环境变量、命令行参数等。可以通过 ConfigMap 和 Secret 等资源对象,将配置信息与应用分离,实现配置的动态更新和管理。

二、8s的架构


一个kubernetes集群主要是由控制节点(master)、工作节点(node)构成,每个节点上都会安装不同的组件

1 master:集群的控制平面,负责集群的决策

ApiServer : 资源操作的唯一入口,接收用户输入的命令,提供认证、授权、API注册和发现等机制

Scheduler : 负责集群资源调度,按照预定的调度策略将Pod调度到相应的node节点上

ControllerManager : 负责维护集群的状态,比如程序部署安排、故障检测、自动扩展、滚动更新等

Etcd :负责存储集群中各种资源对象的信息

2 node:集群的数据平面,负责为容器提供运行环境

kubelet:负责维护容器的生命周期,同时也负责Volume(CVI)和网络(CNI)的管理

Container runtime:负责镜像管理以及Pod和容器的真正运行(CRI)

kube-proxy:负责为Service提供cluster内部的服务发现和负载均衡

三、k8s集群部署

1、部署环境准备:

主机角色IP
master 集群控制节点master 集群控制节点172.25.250.100
k8s-node1.exam.comworker 工作节点172.25.250.10
k8s-node2.exam.comworker 工作节点172.25.250.20
reg.exam.comharbor镜像仓库172.25.250.250

所有的节点要禁用防火墙和selinux

所以节点同步时间和解析

所有节点安装docker和-ce

所有节点禁用swap

2、所有节点禁用swap和本地解析


[root@k8s-master ~]# systemctl list-unit-files | grep swap
#关闭系统中所有的交换空间
[root@k8s-master ~]# swapoff -a
[root@k8s-master ~]# vim /etc/fstab
#
# /etc/fstab
# Created by anaconda on Sun Feb 19 17:38:40 2023
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/rhel-root   /                       xfs     defaults        0 0
UUID=ddb06c77-c9da-4e92-afd7-53cd76e6a94a /boot                   xfs     defaults        0 0
#/dev/mapper/rhel-swap   swap                       
See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info. After editing this file, run 'systemctl daemon-reload' to update systemd units generated from this file. /dev/mapper/rhel-root | | xfs | defaults | | | /dev/mapper/rhel-swap | none | swap | defaults | 0 0 | 

本地解析

[root@k8s-master ~]# vim /etc/hosts
172.25.250.100  k8s-master.exam.com
172.25.250.10   k8s-node1.exam.com
172.25.250.20   k8s-node2.exam.com
172.25.250.250  reg.exam.com


安装docker

[root@k8s-master ~]# vim /etc/yum.repos.d/docker.repo
[docker]
name=docker
baseurl=https://mirrors.aliyun.com/docker-ce/linux/rhel/9/x86_64/stable/
gpgcheck=0
 
[root@k8s-master ~]# dnf install docker-ce -y


设置docker的资源管理器模式为systemd

[root@k8s-master ~]# vim /etc/docker/daemon.json
{
        "registry-mirrors": ["https://reg.westos.org"],
        "exec-opts": ["native.cgroupdriver=systemd"],
        "log-driver": "json-file",
        "log-opts": {
                "max-size": "100m"
        },
        "storage-driver": "overlay2"
}
所有阶段复制harbor仓库中的证书并启动docker

[root@k8s-master ~]# ls -l /etc/docker/certs.d/reg.exam.com/ca.crt
[root@k8s-master ~]# systemctl enable --now docker
 
#登陆harbor仓库
[root@k8s-master ~]# docker login reg.exam.com
[root@k8s-master ~]# docker info
Client: Docker Engine - Community
 Version:    27.1.2
 Context:    default
 Debug Mode: false
 Plugins:
  buildx: Docker Buildx (Docker Inc.)
    Version:  v0.16.2
    Path:     /usr/libexec/docker/cli-plugins/docker-buildx
  compose: Docker Compose (Docker Inc.)
    Version:  v2.29.1
    Path:     /usr/libexec/docker/cli-plugins/docker-compose
 
Server:
 Containers: 0
  Running: 0
  Paused: 0
  Stopped: 0
 Images: 0
 Server Version: 27.1.2
 Storage Driver: overlay2
  Backing Filesystem: xfs
  Supports d_type: true
  Using metacopy: false
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: systemd            #资源管理更改为systemd
 Cgroup Version: 2
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runc.v2 runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 8fc6bcff51318944179630522a095cc9dbf9f353
 runc version: v1.1.13-0-g58aa920
 init version: de40ad0
 Security Options:
  seccomp
   Profile: builtin
  cgroupns
 Kernel Version: 5.14.0-427.13.1.el9_4.x86_64
 Operating System: Red Hat Enterprise Linux 9.4 (Plow)
 OSType: linux
 Architecture: x86_64
 CPUs: 1
 Total Memory: 736.3MiB
 Name: k8s-master.exam.com
 ID: f3c291bf-287d-4cf6-8e69-5f21c79fa7c6
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Registry Mirrors:
  https://reg.exam.com/            #认证harbor仓库
 Live Restore Enabled: false


安装部署k8s工具

#部署harbor软件仓库,添加k8s源
[root@k8s-master ~]# vim /etc/yum.repos.d/k8s.repo
[k8s]
name=k8s
baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.30/rpm
gpgcheck=0
 
#检测网络是否连通
 
#安装软件
[root@k8s-master ~]# dnf install kubelet-1.30.0-150500.1.1 kubeadm-1.30.0-150500.1.1 kubectl-1.30.0-150500.1.1 --downloadonly --downloaddir=/mnt -y
 
[root@k8s-master mnt]# dnf install *.rpm -y
设置kubectl命令补齐功能

[root@k8s-master ~]# dnf install bash-completion -y
[root@k8s-master ~]# echo "source <(kubectl completion bash)" >> ~/.bashrc 
[root@k8s-master ~]# source ~/.bashrc 


 在所节点安装cri-docker

[root@k8s-master ~]# dnf install libcgroup-0.41-19.el8.x86_64.rpm cri-dockerd-0.3.14-3.el8.x86_64.rpm -y
 
[root@k8s-master ~]# vim /lib/systemd/system/cri-docker.service
[Unit]
Description=CRI Interface for Docker Application Container Engine
Documentation=https://docs.mirantis.com
After=network-online.target firewalld.service docker.service
Wants=network-online.target
Requires=cri-docker.socket
 
[Service]
Type=notify


指定网络插件名称及基础容器镜像

[root@k8s-master ~]# vim /lib/systemd/system/cri-docker.service 
#指定网络插件名称及基础容器镜像
...
ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint fd:// --network-plugin=cni --pod-infra-container-image=reg.exam.com/k8s/pause:3.9
...
--network-plugin=cni --pod-infra-container-image=reg.timinglee.org/k8s/pause:3.9
 
[root@k8s-master ~]# systemctl daemon-reload
[root@k8s-master ~]# systemctl start cri-docker
[root@k8s-master ~]# ll /var/run/cri-dockerd.sock
srw-rw---- 1 root docker 0  8月 26 22:14 /var/run/cri-dockerd.sock        #cri-dockerd的套接字文件
 

 在master节点拉取K8S所需镜像

[root@k8s-master ~]# kubeadm config images pull \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.30.0 \
--cri-socket=unix:///var/run/cri-dockerd.sock
上传镜像到harbor仓库

[root@k8s-master ~]# docker images | awk '/google/{ print $1":"$2}' \
| awk -F "/" '{system("docker tag "$0" reg.exam.com/k8s/"$3)}'
[root@k8s-master ~]# docker images  | awk '/k8s/{system("docker push "$1":"$2)}'


集群初始化

启动kubelet服务
[root@k8s-master ~]# systemctl status kubelet.service
[root@k8s-master docker]# systemctl start kubelet.service 
 
执行初始化命令
[root@k8s-master ~]# kubeadm init --pod-network-cidr=10.244.0.0/16 \
--image-repository=reg.exam.com/k8s \
--kubernetes-version v1.30.0 \
--cri-socket=unix:///var/run/cri-dockerd.sock
 
kubeadm init --pod-network-cidr=10.244.0.0/16 --image-repository=reg.exam.com/k8s --kubernetes-version v1.30.0 --cri-socket=unix:///var/run/cri-dockerd.sock
#初始化报错 重新初始化
一定注意IP使用默认10.244.0.0
kubeadm reset --cri-socket=unix:///var/run/cri-dockerd.sock
--------------------------------------------------
指定集群配置文件变量
[root@k8s-master ~]# echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
[root@k8s-master ~]# source ~/.bash_profile
当前节点没有就绪,因为还没有安装网络插件,容器没有运行
[root@k8s-master ~]# kubectl get nodes
[root@k8s-master ~]# kubectl get pod -A

安装flannel网络插件

#下载flannel的yaml部署文件
[root@k8s-master ~]# wget https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
 
[root@k8s-master ~]# curl -L -o kube-flannel.yml https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
 
#下载镜像:
[root@k8s-master ~]# docker pull docker.io/flannel/flannel:v0.25.5
[root@k8s-master ~]# docker pull docker.io/flannel/flannel-cni-plugin:v1.5.1-flannel1
 
##新建仓库并上传到仓库
[root@k8s-master ~]# docker tag flannel/flannel:v0.25.5 \
reg.exam.com/flannel/flannel:v0.25.5
 
[root@k8s-master ~]# docker push reg.exam.com/flannel/flannel:v0.25.5
 
[root@k8s-master ~]# docker tag flannel/flannel-cni-plugin:v1.5.1-flannel1 \
reg.exam.com/flannel/flannel-cni-plugin:v1.5.1-flannel1
 
[root@k8s-master ~]# docker push reg.exam.com/flannel/flannel-cni-plugin:v1.5.1-flannel1
 
 
#编辑kube-flannel.yml 修改镜像下载位置
[root@k8s-master ~]# vim kube-flannel.yml
 
#需要修改以下几行 
[root@k8s-master ~]# grep -n image kube-flannel.yml
146:        image: flannel/flannel:v0.25.5
173:        image: flannel/flannel-cni-plugin:v1.5.1-flannel1
184:        image: flannel/flannel:v0.25.5
 
#安装flannel网络插件
[root@k8s-master ~]# kubectl apply -f kube-flannel.yml
 

节点扩容

在所有的worker节点中

1 确认部署好以下内容

2 禁用swap

3 安装:

kubelet-1.30.0

kubeadm-1.30.0

kubectl-1.30.0

docker-ce

cri-dockerd

4 修改cri-dockerd启动文件添加

–network-plugin=cni

–pod-infra-container-image=reg.timinglee.org/k8s/pause:3.9

启动服务

kubelet.service

cri-docker.service


[root@k8s-node1 & 2  ~]# kubeadm join 172.25.250.100:6443 --token pvtgvf.dgrw07jzfyykyxwr --discovery-token-ca-cert-hash sha256:b4b3d322be5d756177f4b38755b753393a81d9cd266370d193cbd610d32b4a28 --cri-socket=unix:///var/run/cri-dockerd.sock

可能会遇到插件问题
[root@k8s-master ~]# kubectl get  pods --all-namespaces 
NAMESPACE      NAME                                          READY   STATUS                  RESTARTS   AGE
kube-flannel   kube-flannel-ds-4dkn8                         0/1     Init:ImagePullBackOff   0          9m29s
kube-flannel   kube-flannel-ds-6bg6b                         0/1     Init:ImagePullBackOff   0          54m
kube-flannel   kube-flannel-ds-xbjlk                         0/1     Init:ImagePullBackOff   0          9m29s
 
重新初始化
[root@k8s-master ~]# kubeadm reset --cri-socket=unix:///var/run/cri-dockerd.sock 
 
kubeadm init --pod-network-cidr=10.244.0.0/16 --image-repository reg.exam.com/k8s --kubernetes-version v1.30.0 --cri-socket=unix:///var/run/cri-dockerd.sock
 
[root@k8s-master ~]# vim kube-flannel.yml
146: image: flannel/flannel:v0.25.5
173: image: flannel/flannel-cni-plugin:v1.5.1-flannel1
184: image: flannel/flannel:v0.25.5
 
[root@k8s-master ~]# kubectl apply -f kube-flannel.yml 
 
[root@k8s-master ~]# kubectl get nodes
NAME                  STATUS   ROLES           AGE   VERSION
k8s-master.exam.com   Ready    control-plane   38s   v1.30.0
 
 
#重新初始化
[root@k8s-node1,2 ~]# kubeadm reset --cri-socket=unix:///var/run/cri-dockerd.sock 
 
kubeadm join 172.25.250.100:6443 --token 8mstsi.kvb94ivl2pivcjvr \
    --discovery-token-ca-cert-hash sha256:1ccb1ee51389bdcff6356a6bacf982578b41cc023689a03b7cf69424e2929557 --cri-socket=unix:///var/run/cri-dockerd.sock
 
[root@k8s-master ~]# kubectl -n kube-flannel get pods 


3、测试

建立一个pod
[root@k8s-master ~]# kubectl run test --image nginx
查看pod状态
[root@k8s-master ~]# kubectl get pods
NAME   READY   STATUS    RESTARTS   AGE
test   1/1     Running   0          6m29s
删除pod
[root@k8s-master ~]# kubectl delete pod test 
pod "test" deleted

 

关键字:房产网站建设公司_博客网络营销方式_优化关键词排名seo软件_东莞seo排名公司

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: