Kubernetes精讲之环境搭建

news2024/11/15 10:02:08

目录

一 Kubernetes 简介及部署方法

1.1 应用部署方式演变

1.2 容器编排应用

1.3 kubernetes 简介

1.4 K8S的设计架构

1.4.1 K8S各个组件用途

1.4.2 K8S 各组件之间的调用关系

1.4.3 K8S 的 常用名词感念

1.4.4 k8s的分层架构

二 K8S集群环境搭建

2.1 k8s中容器的管理方式

2.2 k8s 集群部署

2.2.1 k8s 环境部署说明

2.2.2 集群环境初始化

2.2.2.1.所有禁用swap和本地解析

2.2.2.2.所有安装docker

2.2.2.3.所有阶段复制harbor仓库中的证书并启动docker

2.2.2.5 安装K8S部署工具

2.2.2.6 设置kubectl命令补齐功能

2.2.2.7 在所节点安装cri-docker

2.2.2.8 在master节点拉取K8S所需镜像

2.2.2.9 集群初始化

2.2.2.10 安装flannel网络插件

2.2.2.11 节点扩容


一 Kubernetes 简介及部署方法

1.1 应用部署方式演变

在部署应用程序的方式上,主要经历了三个阶段:

传统部署:互联网早期,会直接将应用程序部署在物理机上

·优点:简单,不需要其它技术的参与

·缺点:不能为应用程序定义资源使用边界,很难合理地分配计算资源,而且程序之间容易产生影响

虚拟化部署:可以在一台物理机上运行多个虚拟机,每个虚拟机都是独立的一个环境

·优点:程序环境不会相互产生影响,提供了一定程度的安全性

·缺点:增加了操作系统,浪费了部分资源

容器化部署:与虚拟化类似,但是共享了操作系统

Note

容器化部署方式给带来很多的便利,但是也会出现一些问题,比如说:

·一个容器故障停机了,怎么样让另外一个容器立刻启动去替补停机的容器

·当并发访问量变大的时候,怎么样做到横向扩展容器数量

1.2 容器编排应用

为了解决这些容器编排问题,就产生了一些容器编排的软件!

·Swarm:Docker自己的容器编排工具

·Mesos:Apache的一个资源统一管控的工具,需要和Marathon结合使用

·Kubernetes:Google开源的的容器编排工具

1.3 kubernetes 简介

·在Docker 作为高级容器引擎快速发展的同时,在Google内部,容器技术已经应用了很多年

·Borg系统运行管理着成千上万的容器应用。

·Kubernetes项目来源于Borg,可以说是集结了Borg设计思想的精华,并且吸收了Borg系统中的经验和教训。

·Kubernetes对计算资源进行了更高层次的抽象,通过将容器进行细致的组合,将最终的应用服务交给用户。

kubernetes的本质是一组服务器集群,它可以在集群的每个节点上运行特定的程序,来对节点中的容器

·进行管理。目的是实现资源管理的自动化,主要提供了如下的主要功能:

·自我修复:一旦某一个容器崩溃,能够在1秒中左右迅速启动新的容器

·弹性伸缩:可以根据需要,自动对集群中正在运行的容器数量进行调整

·服务发现:服务可以通过自动发现的形式找到它所依赖的服务

·负载均衡:如果一个服务起动了多个容器,能够自动实现请求的负载均衡

·版本回退:如果发现新发布的程序版本有问题,可以立即回退到原来的版本

·存储编排:可以根据容器自身的需求自动创建存储卷

1.4 K8S的设计架构

1.4.1 K8S各个组件用途

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

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

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

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

·ControllerManager:负责维护集群的状态,比如程序部署安排、故障检测、自动扩展、滚动更新等(看集群是否有问题)

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

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

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

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

·kube-proxy:负责为Service提供cluster内部的服务发现和负载均衡(负责网络,可以暴露端口)

.

1.4.2 K8S 各组件之间的调用关系

当我们要运行一个web服务时

1.kubernetes环境启动之后,master和node都会将自身的信息存储到etcd数据库中

2.web服务的安装请求会首先被发送到master节点的apiServer组件

3.apiServer组件会调用scheduler组件来决定到底应该把这个服务安装到哪个node节点上

在此时,它会从etcd中读取各个node节点的信息,然后按照一定的算法进行选择,并将结果告知apiServer

4.apiServer调用controller-manager去调度Node节点安装web服务

5.kubelet接收到指令后,会通知docker,然后由docker来启动一个web服务的pod

6.如果需要访问web服务,就需要通过kube-proxy来对pod产生访问的代理

1.4.3 K8S 的 常用名词感念

·Master:集群控制节点,每个集群需要至少一个master节点负责集群的管控

·Node:工作负载节点,由master分配容器到这些node工作节点上,然后node节点上的

·Pod:kubernetes的最小控制单元,容器都是运行在pod中的,一个pod中可以有1个或者多个容

·Controller:控制器,通过它来实现对pod的管理,比如启动pod、停止pod、伸缩pod的数量等等

·Service:pod对外服务的统一入口,下面可以维护者同一类的多个pod

·Label:标签,用于对pod进行分类,同一类pod会拥有相同的标签

·NameSpace:命名空间,用来隔离pod的运行环境

1.4.4 k8s的分层架构


·核心层:Kubernetes最核心的功能,对外提供API构建高层的应用,对内提供插件式应用执行环境

·应用层:部署(无状态应用、有状态应用、批处理任务、集群应用等)和路由(服务发现、DNS解析等)

·管理层:系统度量(如基础设施、容器和网络的度量),自动化(如自动扩展、动态Provision等)以及策略管理(RBAC、Quota、PSP、NetworkPolicy等)

·接口层:kubectl命令行工具、客户端SDK以及集群联邦

·生态系统:在接口层之上的庞大容器集群管理调度的生态系统,可以划分为两个范畴

·Kubernetes外部:日志、监控、配置管理、C1、CD、Workflow、FaaS、OTS应用、ChatOps等

·Kubernetes内部:CRI、CN1、CV1、镜像仓库、Cloud Provider、集群自身的配置和管理等

二 K8S集群环境搭建

2.1 k8s中容器的管理方式

K8S 集群创建方式有3种:

centainerd

默认情况下,K8S在创建集群时使用的方式

docker

Docker使用的普记录最高,虽然K8S在1.24版本后已经费力了kubelet对docker的支持,但时可以借助cri-docker方式来实现集群创建

cri-0

CRI-0的方式是Kubernetes创建容器最直接的一种方式,在创建集群的时候,需要借助于cri-o插件的方式来实现Kubernetes集群的创建。

docker 和cri-0 这两种方式要对kubelet程序的启动参数进行设置

2.2 k8s 集群部署

2.2.1 k8s 环境部署说明

K8S中文官网:Kubernetes

主机名

ip

角色

harbor

172.25.254.50

harbor仓库

K8s-master

172.25.254.100

master,k8s集群控制节点

K8s-node1

172.25.254.10

worker,k8s集群工作节点

K8s-node2

172.25.254.20

worker,k8s集群工作节点

·所有节点禁用selinux和防火墙

·所有节点同步时间和解析

·所有节点安装docker-ce

·所有节点禁用swap,注意注释掉/etc/fstab文件中的定义

2.2.2 集群环境初始化

所有k8s集群节点执行以下步骤

2.2.2.1.所有禁用swap和本地解析

以下内容:三个主机都要写

[root@K8s-master ~]# vim /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

172.25.254.50   reg.harbor.org
172.25.254.100  K8s-master
172.25.254.10   K8s-node1
172.25.254.20   K8s-node2
#每个主机都要写

#禁用所有swap
[root@K8s-master ~]# systemctl mask swap.target 
Created symlink /etc/systemd/system/swap.target → /dev/null.
#关闭swap
[root@K8s-master ~]# swapoff /dev/dm-1

#注释掉
[root@K8s-master ~]# vim /etc/fstab 
#/dev/mapper/rhel-swap   none                    swap    defaults        0 0

2.2.2.2.所有安装docker

本次使用的是包安装

以下内容:三个主机都要写

#每个都是
[root@K8s-node1 ~]# tar xfz docker.tar.gz
[root@K8s-node1 ~]# yum install *.rpm -y

2.2.2.3.所有阶段复制harbor仓库中的证书并启动docker

以下内容:三个主机都要写

[root@K8s-node1 ~]# mkdir /etc/docker/certs.d/reg.harbor.org/ -p
#将harbor的密钥传过来
[root@harbor harbor]# scp /data/certs/harbor.org.crt  root@172.25.254.10:/etc/docker/certs.d/reg.harbor.org/ca.crt

#编写文件
[root@K8s-node1 ~]# vim /etc/docker/daemon.json
{
  "registry-mirrors":["https://reg.harbor.org"]
}


#启动docker
[root@K8s-node1 ~]# systemctl enable --now docker

#进入仓库
[root@K8s-node1 certs.d]# docker login reg.harbor.org
Username: admin
Password: 
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credential-stores

Login Succeeded

以上操作,三台新建的主机都要做类似操作

拉取镜像测试

[root@K8s-master ~]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
e4fff0779e6d: Pull complete 
2a0cb278fd9f: Pull complete 
7045d6c32ae2: Pull complete 
03de31afb035: Pull complete 
0f17be8dcff2: Pull complete 
14b7e5e8f394: Pull complete 
23fa5a7b99a6: Pull complete 
Digest: sha256:127262f8c4c716652d0e7863bba3b8c45bc9214a57d13786c854272102f7c945
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest


[root@K8s-master ~]# docker images
REPOSITORY                     TAG       IMAGE ID       CREATED       SIZE
reg.harbor.org/library/nginx   <none>    5ef79149e0ec   2 weeks ago   188MB

2.2.2.5 安装K8S部署工具

以下内容:三个主机都要写

#配置仓库
[root@K8s-master ~]# cd /etc/yum.repos.d/
[root@K8s-master yum.repos.d]# vim k8s.repo
[k8s]
name=k8s
baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.30/rpm/
gpgcheck=0

#下载部署工具
[root@K8s-master yum.repos.d]# dnf install kubelet-1.30.0-150500.1.1 kubeadm-1.30.0-150500.1.1 --downloadonly --downloaddir=/mnt -y

[root@K8s-master ~]# cd /mnt
[root@K8s-master mnt]# ls
conntrack-tools-1.4.7-2.el9.x86_64.rpm  kubernetes-cni-1.4.0-150500.1.1.x86_64.rpm
cri-tools-1.30.1-150500.1.1.x86_64.rpm  libnetfilter_cthelper-1.0.0-22.el9.x86_64.rpm
hgfs                                    libnetfilter_cttimeout-1.0.0-19.el9.x86_64.rpm
kubeadm-1.30.0-150500.1.1.x86_64.rpm    libnetfilter_queue-1.0.5-1.el9.x86_64.rpm
kubelet-1.30.0-150500.1.1.x86_64.rpm    socat-1.7.4.1-5.el9.x86_64.rpm
[root@K8s-master mnt]# yum install *.rpm -y

#启动
[root@K8s-master mnt]# systemctl enable --now kubelet.service
Created symlink /etc/systemd/system/multi-user.target.wants/kubelet.service → /usr/lib/systemd/system/kubelet.service.

2.2.2.6 设置kubectl命令补齐功能
[root@K8s-master ~]# dnf install bash-completion -y
[root@K8s-master ~]# echo "source <(kubectl completion bash)">> ~/.bashrc
[root@K8s-master ~]# source ~/.bashrc

2.2.2.7 在所节点安装cri-docker

k8s从1.24版本开始移除了dockershim,所以需要安装cri-docker插件才能使用docker

软件下载:https://github.com/Mirantis/cri-dockerd

以下内容:三个主机都要写

[root@K8s-master ~]# yum install cri-dockerd-0.3.14-3.el8.x86_64.rpm libcgroup-0.41-19.el8.x86_64.rpm -y

#启动
[root@K8s-master ~]# systemctl start cri-docker
[root@K8s-master ~]# systemctl enable --now cri-docker
Created symlink /etc/systemd/system/multi-user.target.wants/cri-docker.service → /usr/lib/systemd/system/cri-docker.service.

2.2.2.8 在master节点拉取K8S所需镜像
#拉取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 

#查看镜像
[root@K8s-master ~]# docker images
REPOSITORY                                                        TAG        IMAGE ID       CREATED         SIZE
reg.harbor.org/library/nginx                                      <none>     5ef79149e0ec   2 weeks ago     188MB
registry.aliyuncs.com/google_containers/kube-apiserver            v1.30.0    c42f13656d0b   4 months ago    117MB
registry.aliyuncs.com/google_containers/kube-controller-manager   v1.30.0    c7aad43836fa   4 months ago    111MB
registry.aliyuncs.com/google_containers/kube-scheduler            v1.30.0    259c8277fcbb   4 months ago    62MB
registry.aliyuncs.com/google_containers/kube-proxy                v1.30.0    a0bf559e280c   4 months ago    84.7MB
registry.aliyuncs.com/google_containers/etcd                      3.5.12-0   3861cfcd7c04   6 months ago    149MB
registry.aliyuncs.com/google_containers/coredns                   v1.11.1    cbb01a7bd410   12 months ago   59.8MB
registry.aliyuncs.com/google_containers/pause                     3.9        e6f181688397   22 months ago   744kB
[root@K8s-master ~]# 


#上传镜像到harbor仓库
[root@K8s-master ~]# docker images | awk '/google/{ print $1":"$2}' | awk -F "/" '{system("docker tag "$0" reg.harbor.org/k8s/"$3)}'
[root@K8s-master ~]# docker images  | awk '/k8s/{system("docker push "$1":"$2)}'

2.2.2.9 集群初始化
#指定网络插件名称及基础容器镜像
[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

#指定网络插件名称及基础容器镜像
ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint fd:// --network-plugin=cni --pod-infra-container-image=reg.harbor.org/k8s/pause:3.9

ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always

[root@K8s-master ~]# systemctl daemon-reload
[root@K8s-master ~]# systemctl restart cri-docker
#以上内容三个主机都要设置


#以下内容marster配置
#启动kubelet服务
[root@K8s-master ~]# systemctl status kubelet.service

#执行初始化命令
[root@K8s-master ~]# kubeadm init --pod-network-cidr=10.244.0.0/16 \
> --image-repository reg.harbor.org/k8s \
> --kubernetes-version v1.30.0 \
> --cri-socket=unix:///var/run/cri-dockerd.sock

#如果初始化出了问题:解决方法,清理缓存
[root@K8s-master ~]# kubeadm reset --cri-socket=unix:///var/run/cri-dockerd.sock


#指定集群配置文件变量
[root@K8s-master ~]# export KUBECONFIG=/etc/kubernetes/admin.conf
[root@K8s-master ~]# echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
[root@K8s-master ~]# source ~/.bash_profile



#当前节点没有就绪,因为还没有安装网络插件,容器没有运行
[root@K8s-master ~]# kubectl get node
NAME         STATUS     ROLES           AGE     VERSION
k8s-master   NotReady   control-plane   6m40s   v1.30.0

[root@K8s-master ~]#  kubectl get pod -A
NAMESPACE     NAME                                 READY   STATUS    RESTARTS   AGE
kube-system   coredns-655496747-5jj64              0/1     Pending   0          7m19s
kube-system   coredns-655496747-wxsgk              0/1     Pending   0          7m19s
kube-system   etcd-k8s-master                      1/1     Running   0          7m34s
kube-system   kube-apiserver-k8s-master            1/1     Running   0          7m34s
kube-system   kube-controller-manager-k8s-master   1/1     Running   0          7m34s
kube-system   kube-proxy-4qkv8                     1/1     Running   0          7m19s
kube-system   kube-scheduler-k8s-master            1/1     Running   0          7m34s

在此阶段如果生成的集群token找不到了可以重新生成

[root@k8s-master ~]#   kubeadm token create --print-join-command
kubeadm join 172.25.254.100:6443 --token 5hwptm.zwn7epa6pvatbpwf --discovery-token-ca-cert-hash sha256:52f1a83b70ffc8744db5570288ab51987ef2b563bf906ba4244a300f61e9db23
2.2.2.10 安装flannel网络插件

官方网站:https://github.com/flannel-io/flannel

#master配置
#导入镜像
[root@K8s-master ~]# docker load -i flannel-0.25.5.tag.gz 
ef7a14b43c43: Loading layer  8.079MB/8.079MB
1d9375ff0a15: Loading layer  9.222MB/9.222MB
4af63c5dc42d: Loading layer  16.61MB/16.61MB
2b1d26302574: Loading layer  1.544MB/1.544MB
d3dd49a2e686: Loading layer  42.11MB/42.11MB
7278dc615b95: Loading layer  5.632kB/5.632kB
c09744fc6e92: Loading layer  6.144kB/6.144kB
0a2b46a5555f: Loading layer  1.923MB/1.923MB
5f70bf18a086: Loading layer  1.024kB/1.024kB
601effcb7aab: Loading layer  1.928MB/1.928MB
Loaded image: flannel/flannel:v0.25.5
21692b7dc30c: Loading layer  2.634MB/2.634MB
Loaded image: flannel/flannel-cni-plugin:v1.5.1-flannel1
#harbor中创建一个flannel仓库

#上传镜像
[root@K8s-master ~]# docker tag flannel/flannel:v0.25.5 reg.harbor.org/flannel/flannel:v0.25.5
[root@K8s-master ~]# docker tag flannel/flannel-cni-plugin:v1.5.1-flannel1 reg.harbor.org/flannel/flannel-cni-plugin:v1.5.1-flannel1
[root@K8s-master ~]# docker push reg.harbor.org/flannel/flannel:v0.25.5
[root@K8s-master ~]# docker push reg.harbor.org/flannel/flannel-cni-plugin:v1.5.1-flannel1


#编辑kube-flannel.yml 修改镜像下载位置,使用/image查找做以下修改
[root@K8s-master ~]# vim kube-flannel.yml
image: flannel/flannel:v0.25.5
....
image: flannel/flannel-cni-plugin:v1.5.1-flannel1
....
image: flannel/flannel:v0.25.5

#修改一下几行
[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

#查看节点运行情况
[root@K8s-master ~]#  kubectl get node
NAME         STATUS   ROLES           AGE   VERSION
k8s-master   Ready    control-plane   19m   v1.30.0

2.2.2.11 节点扩容

在所有的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

5 启动服务

·kubelet.service

·cri-docker.service

以上信息确认完毕后即可加入集群

#node1和node2配置
#如果生成的集群token找不到了可以重新生成
[root@K8s-master ~]# kubeadm token create --print-join-command
kubeadm join 172.25.254.100:6443 --token ht0ad5.bj28mruvkis43v49 --discovery-token-ca-cert-hash sha256:517082dd67ee501ee85028f49569ae1c24e1644a70d0c89648a0f7a2b9829eba

#将node1和node2添加入节点
[root@K8s-node1 ~]# kubeadm join 172.25.254.100:6443 --token 1vk02e.2h8gzm00t943josx --discovery-token-ca-cert-hash sha256:517082dd67ee501ee85028f49569ae1c24e1644a70d0c89648a0f7a2b9829eba --cri-socket=unix:///var/run/cri-dockerd.sock
[preflight] Running pre-flight checks
[preflight] Reading configuration from the cluster...
[preflight] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -o yaml'
[kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
[kubelet-start] Writing kubelet environment file with flags to file "/var/lib/kubelet/kubeadm-flags.env"
[kubelet-start] Starting the kubelet
[kubelet-check] Waiting for a healthy kubelet. This can take up to 4m0s
[kubelet-check] The kubelet is healthy after 501.895944ms
[kubelet-start] Waiting for the kubelet to perform the TLS Bootstrap

This node has joined the cluster:
* Certificate signing request was sent to apiserver and a response was received.
* The Kubelet was informed of the new secure connection details.

Run 'kubectl get nodes' on the control-plane to see this node join the cluster.


[root@K8s-node2 ~]# kubeadm join 172.25.254.100:6443 --token 1vk02e.2h8gzm00t943josx --discovery-token-ca-cert-hash sha256:517082dd67ee501ee85028f49569ae1c24e1644a70d0c89648a0f7a2b9829eba --cri-socket=unix:///var/run/cri-dockerd.sock
[preflight] Running pre-flight checks
[preflight] Reading configuration from the cluster...
[preflight] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -o yaml'
[kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
[kubelet-start] Writing kubelet environment file with flags to file "/var/lib/kubelet/kubeadm-flags.env"
[kubelet-start] Starting the kubelet
[kubelet-check] Waiting for a healthy kubelet. This can take up to 4m0s
[kubelet-check] The kubelet is healthy after 501.749259ms
[kubelet-start] Waiting for the kubelet to perform the TLS Bootstrap

This node has joined the cluster:
* Certificate signing request was sent to apiserver and a response was received.
* The Kubelet was informed of the new secure connection details.

Run 'kubectl get nodes' on the control-plane to see this node join the cluster.

在master阶段中查看所有node的状态

#等一会查看
[root@K8s-master ~]# kubectl get nodes 
NAME         STATUS   ROLES           AGE     VERSION
k8s-master   Ready    control-plane   58m     v1.30.0
k8s-node1    Ready    <none>          4m24s   v1.30.0
k8s-node2    Ready    <none>          4m37s   v1.30.0

[root@K8s-master ~]# kubectl -n kube-flannel get pods  
NAME                    READY   STATUS    RESTARTS   AGE
kube-flannel-ds-7kwg8   1/1     Running   0          20s
kube-flannel-ds-dcg9j   1/1     Running   0          20s
kube-flannel-ds-zgt8j   1/1     Running   0          20s

所有阶段的STATUS为Ready状态,那么恭喜你,你的kubernetes就装好了!!

测试集群运行情况

#建立一个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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2107325.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

每日一题,力扣leetcode Hot100之118.杨辉三角

解题思路就是动态规划&#xff0c;确定好边界值和要动态传递的值 边界值就是每一排的第一个和最后一个肯定是1 动态传递值就是除了边界值每一个都等于他的左上加右上 class Solution:def generate(self, numRows: int) -> List[List[int]]:ret list()for i in range(num…

ES之三:springboot集成ES

一.选择版本很重要&#xff0c;不然会找不到好多方法 明明有Timeout方法&#xff0c;不报红&#xff0c;运行时&#xff0c;报错&#xff0c;找不到该类 ClassNotFoundException 为了避免使用的Elasticsearch版本和SpringBoot采用的版本不一致导致的问题&#xff0c;尽量使用…

web群集--nginx常见的几种负载均衡调度算法的配置过程和效果展示

文章目录 前言环境前置配置httpd主机tomcat主机 负载均衡调度算法1.轮询配置过程效果展示 2.加权轮询配置过程效果展示 3. IP哈希&#xff08;IP Hash&#xff09;配置过程效果展示 4. 最少连接&#xff08;Least Connections&#xff09;配置过程效果展示 5.加权最小连接这个在…

实时备份工具

实时同步工具 1. 常用实时同步工具1.1 sersync1.2 inotify-tools1.3 ‌lsync‌ 2. 工具对比2.1 常用实时同步工具对比2.2 ‌sersync和lsyncd对比 3. 实践3.1 sersync1. 简易架构2. 服务器3. 搭建简易web服务器4. 配置NFS服务器5. 配置备份服务器6. 实时同步部分7. 验证 1. 常用…

穿越机的应用行业!!!

1. 军事领域 侦察与目标搜索&#xff1a;穿越机能够快速穿越危险区域&#xff0c;执行侦察任务&#xff0c;实时获取战场信息&#xff0c;对敌方目标进行精确搜索和定位。其灵活性和机动性使其成为战场上的重要侦察工具。 目标摧毁&#xff1a;经过改装的穿越机可挂载火箭弹或…

重磅活动!南开大学赵宏教授倾情分享AI挑战下的教育教学新理念与新方法

人工智能是科技发展的前沿领域&#xff0c;也是推动新质生产力形成的关键动力。当前&#xff0c;各个高校正积极探索人工智能对高等教育的改革&#xff0c;以培养适应未来社会发展需求的新型人才。 本次活动旨在传播 AI 挑战下的教育教学新理念与新方法&#xff0c;推动人才培养…

常见echart图表 返回数据与Java实体类

返回数据示例详见 Examples - Apache ECharts 一、折线图 实体类 public class LineChart {String name;List<BaseSeries> series;List<String> xAxis; }public class BaseSeries {String name;Double[] data; } 二、柱状图 实体类 public class Chart {String…

深度解析Linux系统的基本概念及优缺点和原理

目录 基本概念 操作系统简介 架构组成 多任务处理 安全性与开放性 发行版本 使用场景 学习资源 优点 缺点 1. 软件兼容性问题 2. 图形界面应用程序较少 3. 安装和配置复杂 4. 学习曲线陡峭 5. 缺乏技术支持 6. 硬件兼容性问题 7. 安全风险 8. 性能问题 9. 游…

数据结构代码集训day16(适合考研、自学、期末和专升本)

本题来自B站up&#xff1a;白话拆解数据结构 今日题目就一个&#xff1a;约瑟夫环问题。 一个圈共有N个人&#xff08;N为不确定的数字&#xff09;&#xff0c;第一个人的编号为0或者1&#xff08;两个都可以&#xff0c;看你的程序如何编写&#xff09;&#xff0c;假设这边我…

提升App推广效果,从精准获取下载数据开始

在App推广的过程中&#xff0c;获取准确的下载数据一直是一个令人头疼的问题。你知道吗&#xff1f;无法精确追踪用户来源和下载量&#xff0c;就像是在黑暗中摸索&#xff0c;让推广效果大打折扣。今天&#xff0c;我们就来揭秘如何轻松获取App下载数据&#xff0c;优化你的推…

解题--有关动态内存开辟 几道经典的笔试题

文章目录 前言 一、题目一 二、题目二 三、题目三 四、题目四 总结 前言 路漫漫其修远兮&#xff0c;吾将上下而求索。 一、题目一 运行Test 函数会出现什么样的结果&#xff1f; 在Test函数之中&#xff0c;首先创建了一个指针变量 str , 并将其赋值为NULL&#xff1b; …

查看HBA卡是否支持FC协议

cat /sys/class/fc_host/host*/port_name lspci | grep -i fibre # 看有无fibre channel控制器 官网查询 Emulex Lpe32000 https://docs.broadcom.com/doc/12357773 https://cn.genuinemodules.com/image/catalog/pdf/18/LPe32000.pdf

Python【2】问题

目录 模块与包是什么&#xff1f; 赋值、浅拷贝和深拷贝的区别&#xff1f; Python中如何生成随机数&#xff1f; Python中的os模块常用方法&#xff1f;□ os.path和sys.path分别表示什么意思&#xff1f;□ 赋值 read、readline和readlines的区别&#xff1f; 介绍一…

vTESTstudio系列13--vTESTstudio中的动态函数库介绍3

在上一篇文章中&#xff08;vTESTstudio系列12--vTESTstudio中的动态函数库介绍2&#xff09;&#xff0c;给大家介绍了如何通过osek_tp.dll的接口去发送诊断指令&#xff0c;本篇文章给大家介绍如何去处理诊断回复内容&#xff0c;确保实际的诊断回复是符合需求。Lets Go!!! …

Java项目: 基于SpringBoot+mysql在线文档管理系统(含源码+数据库+开题报告+答辩PPT+毕业论文)

一、项目简介 本项目是一套基于SpringBootmysql在线文档管理系统 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;eclipse或者idea 确保可以运行&#xff01; 该系统功能完善、界面美观、操作简单、功…

VScode:前端开发中的常用快捷键和技巧

1.菜单栏 2.内容相关&#xff1a; 格式化文档 搜索文件名

海外盲盒APP系统开发,盲盒全球化发展机遇

盲盒全球化 近几年&#xff0c;盲盒在海外市场中迎来了爆发式增长&#xff0c;成为了一种新的潮流&#xff0c;拥有极高的人气&#xff0c;盲盒出海也已经成为了一个大风口&#xff0c;为我国盲盒市场带来了商业机遇&#xff01;在盲盒出海的热潮下&#xff0c;海外盲盒APP系统…

相亲交友系统开发中的关键要素

相亲交友系统开发旨在构建一个在线平台&#xff0c;专为单身人士设计&#xff0c;以促进他们寻找合适的伴侣或朋友。以下是该系统开发的关键要素&#xff1a; 用户账户管理&#xff1a;允许用户创建账户&#xff0c;进行注册和登录&#xff0c;以便他们能够建立个人资料并参与…

01:【铁头山羊stm32-HAL库】对GPIO的操作

对GPIO的操作 1、LED闪烁2、按键控制LED3、芯片调试接口被锁死导致无法下载程序 1、LED闪烁 使用的是STM32CubeMXKeilv5进行HAL库的开发。 开发的步骤&#xff1a; 第一步&#xff1a;新建工程 第二步&#xff1a;选择芯片 第三步&#xff1a;如下图哈哈 第四步&#xff1a;…

图像去噪实验:基于全变分(TV)模型的MATLAB实现

一、背景 全变分模型在图像处理领域中被广泛用于去除噪声&#xff0c;同时保持图像边缘的清晰度。 二、实验步骤 图像的读取、噪声添加、去噪处理以及结果的显示。 三、实验仿真结果图 四、结论 全变分模型是一种有效的图像去噪方法&#xff0c;它能够在去除噪声的同时&#…