Kubernetes-1

news2024/9/23 15:21:37

学习Kubernetes第一天

  • k8s-1
    • 1、什么是Kubernetes
    • 2、配置Kubernetes
      • 2.1、准备三台全新的虚拟机
      • 2.2、关闭防火墙和SElinux
      • 2.3、修改主机名
      • 2.4、升级操作系统(三台一起操作)
      • 2.5、配置主机hosts文件,相互之间通过主机名互相访问
      • 2.6、配置master和node之间的免密通道
      • 2.7、关闭交换分区swap,提升性能(三台一起操作)
      • 2.8、为什么要关闭swap交换分区?
      • 2.9、修改机器内核参数(三台一起操作)
      • 2.10、配置阿里云的repo源(三台一起)
      • 2.11、配置时间同步(三台一起)
    • 3、安装docker服务(三台一起)
      • 3.1、安装docker的最新版本
      • 3.2、配置镜像加速器
    • 4、继续配置Kubernetes
      • 4.1、安装初始化k8s需要的软件包(三台一起)
      • 4.2、kubeadm初始化k8s集群
      • 4.3、基于kubeadm.yaml文件初始化k8s
      • 4.4、改一下node的角色为worker
      • 4.5、安装网络插件
    • 5、一些基本的命令
      • 5.1、kubectl get namespace (命名空间)
      • kubectl get node
      • 5.2、kubectl get pod
    • 6、pod是什么?
    • 7、k8s中的组件
      • 7.1、在master上跑哪些组件--->运行哪些程序
      • 7.2、在node上跑哪些组件--->运行哪些程序
    • 8、启动nginx的pod

k8s-1

1、什么是Kubernetes

Kubernetes, also known as K8s, is an open-source system for automating deployment, scaling, and management of containerized applications.

Kubernetes,也称为 K8s,是一个用于自动化部署扩展管理容器化应用程序的开源系统。

docker中也有一个容器编排工具: compose

2、配置Kubernetes

2.1、准备三台全新的虚拟机

控制节点master192.168.182.133
工作节点node1192.168.182.134
工作节点node2192.168.182.135

把ip地址都改为静态的

2.2、关闭防火墙和SElinux

[root@localhost ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
[root@localhost ~]# service firewalld stop
Redirecting to /bin/systemctl stop firewalld.service
[root@localhost ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@localhost ~]# reboot

2.3、修改主机名

[root@localhost ~]# hostnamectl set-hostname master && bash
[root@master ~]# 
[root@localhost ~]# hostnamectl set-hostname node-1 && bash
[root@node-1 ~]# 
[root@localhost ~]# hostnamectl set-hostname node-2 && bash
[root@node-2 ~]# 

2.4、升级操作系统(三台一起操作)

[root@master ~]# yum update -y

2.5、配置主机hosts文件,相互之间通过主机名互相访问

修改每台机器的/etc/hosts文件,增加如下三行:

192.168.182.133 master
192.168.182.134 node-1
192.168.182.135 node-2

'看一下'
[root@master ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.182.133 master
192.168.182.134 node-1
192.168.182.135 node-2
[root@master ~]# 

2.6、配置master和node之间的免密通道

ssh-keygen
cd /root/.ssh/
ssh-copy-id -i id_rsa.pub root@node-1
ssh-copy-id -i id_rsa.pub root@node-2
[root@master ~]# ssh-keygen   #生成密钥对,一路回车
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:DoRBMmIAstd0QrtKG0QB2+VVkRAnppI35KRV4RQvQJc root@master
The key's randomart image is:
+---[RSA 2048]----+
|Oo==&.&B+o       |
|o* # #E+.        |
|o B X + .        |
| o o + .         |
|  o . . S        |
| . +   o         |
|  o     .        |
|                 |
|                 |
+----[SHA256]-----+

[root@master ~]# cd /root/.ssh/	#进入 /root/.ssh/目录
[root@master .ssh]# ls
id_rsa  id_rsa.pub
[root@master .ssh]# ssh-copy-id -i id_rsa.pub root@node-1	
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "id_rsa.pub"
The authenticity of host 'node-1 (192.168.182.134)' can't be established.
ECDSA key fingerprint is SHA256:VAXkY+ru3rBQHrgs94AB7LO819O7DBzXdUTGTLpNAak.
ECDSA key fingerprint is MD5:ab:bd:54:33:73:df:6b:16:48:59:15:05:c9:24:af:07.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@node-1's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@node-1'"
and check to make sure that only the key(s) you wanted were added.

[root@master .ssh]# ssh-copy-id -i id_rsa.pub root@node-2
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "id_rsa.pub"
The authenticity of host 'node-2 (192.168.182.135)' can't be established.
ECDSA key fingerprint is SHA256:9MHFCfV2pm4w8bdJKG/bPKZ543YQ/LwQQAYMnEbGE18.
ECDSA key fingerprint is MD5:2a:e4:f6:73:8e:21:02:88:1b:6d:e3:e9:89:df:de:5f.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@node-2's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@node-2'"
and check to make sure that only the key(s) you wanted were added.

[root@master .ssh]# 

2.7、关闭交换分区swap,提升性能(三台一起操作)

[root@master .ssh]# swapoff -a

永久关闭:注释``swap挂载,给swap`这行开头加一下注释

[root@master .ssh]# vim /etc/fstab
#/dev/mapper/centos-swap swap      swap    defaults        0 0

2.8、为什么要关闭swap交换分区?

Swap是交换分区,如果机器内存不够,会使用swap分区,但是swap分区的性能较低,k8s设计的时候为了能提升性能,默认是不允许使用交换分区的。``Kubeadm`初始化的时候会检测swap是否关闭,如果没关闭,那就初始化失败。如果不想要关闭交换分区,安装k8s的时候可以指定–ignore-preflight-errors=Swap来解决。

2.9、修改机器内核参数(三台一起操作)

[root@master .ssh]# modprobe br_netfilter
[root@master .ssh]# echo "modprobe br_netfilter" >> /etc/profile
[root@master .ssh]# cat > /etc/sysctl.d/k8s.conf <<EOF
> net.bridge.bridge-nf-call-ip6tables = 1
> net.bridge.bridge-nf-call-iptables = 1
> net.ipv4.ip_forward = 1
> EOF
[root@master .ssh]# sysctl -p /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
[root@master .ssh]# 

2.10、配置阿里云的repo源(三台一起)

yum install -y yum-utils
 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo


 yum install -y yum-utils device-mapper-persistent-data lvm2 wget net-tools nfs-utils lrzsz gcc gcc-c++ make cmake libxml2-devel openssl-devel curl curl-devel unzip sudo ntp libaio-devel wget vim ncurses-devel autoconf automake zlib-devel python-devel epel-release openssh-server socat ipvsadm conntrack ntpdate telnet ipvsadm

 配置安装k8s组件需要的阿里云的repo源
 vim  /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0

2.11、配置时间同步(三台一起)

[root@master ~]# yum install ntpdate -y
[root@master ~]# ntpdate cn.pool.ntp.org
 3 Mar 10:15:12 ntpdate[73056]: adjust time server 84.16.67.12 offset 0.007718 sec
[root@master ~]# 

加入计划任务

[root@master ~]# crontab -e
no crontab for root - using an empty one
crontab: installing new crontab
[root@master ~]# crontab -l
* */1 * * * /usr/sbin/ntpdate   cn.pool.ntp.org
[root@master ~]# 
[root@master ~]# service crond restart
Redirecting to /bin/systemctl restart crond.service
[root@master ~]# 

3、安装docker服务(三台一起)

3.1、安装docker的最新版本

[root@master ~]# sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
[root@master ~]# systemctl start docker && systemctl enable docker.service
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
您在 /var/spool/mail/root 中有新邮件
[root@master ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@master ~]# 

3.2、配置镜像加速器

[root@master ~]# vim  /etc/docker/daemon.json
{
 "registry-mirrors":["https://rsbud4vc.mirror.aliyuncs.com","https://registry.docker-cn.com","https://docker.mirrors.ustc.edu.cn","https://dockerhub.azk8s.cn","http://hub-mirror.c.163.com"],
  "exec-opts": ["native.cgroupdriver=systemd"]
} 

[root@master ~]# 
[root@master ~]# systemctl daemon-reload
您在 /var/spool/mail/root 中有新邮件
[root@master ~]# systemctl restart docker
[root@master ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@master ~]# 

4、继续配置Kubernetes

4.1、安装初始化k8s需要的软件包(三台一起)

k8s 1.24开始就不再使用``docker作为底层的容器运行时软件,采用containerd`作为底层的容器运行时软件

[root@master ~]# yum install -y kubelet-1.20.6 kubeadm-1.20.6 kubectl-1.20.6

Kubeadm: kubeadm是一个工具,用来初始化k8s集群的

kubelet: 安装在集群所有节点上,用于启动Pod的

kubectl: 通过kubectl可以部署和管理应用,查看各种资源,创建、删除和更新各种组件

[root@master ~]# systemctl enable kubelet
Created symlink from /etc/systemd/system/multi-user.target.wants/kubelet.service to /usr/lib/systemd/system/kubelet.service.
您在 /var/spool/mail/root 中有新邮件
[root@master ~]# 

4.2、kubeadm初始化k8s集群

把初始化k8s集群需要的离线镜像包上传到master、node-1、node-2机器上,手动解压

image-20240303105401715

利用xftp传到master上的root用户的家目录下

再利用``scp`传递到node-1和node-2上(之前建立过免密通道)

[root@master ~]# scp k8simage-1-20-6.tar.gz root@node-1:/root
k8simage-1-20-6.tar.gz                                100% 1033MB 129.0MB/s   00:08    
[root@master ~]# scp k8simage-1-20-6.tar.gz root@node-2:/root
k8simage-1-20-6.tar.gz                                100% 1033MB 141.8MB/s   00:07    
[root@master ~]# 

导入镜像(三台一起)

[root@master ~]# docker load -i k8simage-1-20-6.tar.gz

生成一个yml文件(在master上操作)

[root@master ~]# kubeadm config print init-defaults > kubeadm.yaml
您在 /var/spool/mail/root 中有新邮件
[root@master ~]# ls
anaconda-ks.cfg  k8simage-1-20-6.tar.gz  kubeadm.yaml
[root@master ~]# cat kubeadm.yaml 
apiVersion: kubeadm.k8s.io/v1beta2
bootstrapTokens:
- groups:
  - system:bootstrappers:kubeadm:default-node-token
  token: abcdef.0123456789abcdef
  ttl: 24h0m0s
  usages:
  - signing
  - authentication
kind: InitConfiguration
localAPIEndpoint:
  advertiseAddress: 1.2.3.4
  bindPort: 6443
nodeRegistration:
  criSocket: /var/run/dockershim.sock
  name: master
  taints:
  - effect: NoSchedule
    key: node-role.kubernetes.io/master
---
apiServer:
  timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta2
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns:
  type: CoreDNS
etcd:
  local:
    dataDir: /var/lib/etcd
imageRepository: k8s.gcr.io
kind: ClusterConfiguration
kubernetesVersion: v1.20.0
networking:
  dnsDomain: cluster.local
  serviceSubnet: 10.96.0.0/12
scheduler: {}
[root@master ~]# 
'修改内容'
[root@master ~]# cat kubeadm.yaml 
apiVersion: kubeadm.k8s.io/v1beta2
bootstrapTokens:
- groups:
  - system:bootstrappers:kubeadm:default-node-token
  token: abcdef.0123456789abcdef
  ttl: 24h0m0s
  usages:
  - signing
  - authentication
kind: InitConfiguration
localAPIEndpoint:
  advertiseAddress: 192.168.182.133
  bindPort: 6443
nodeRegistration:
  criSocket: /var/run/dockershim.sock
  name: master
  taints:
  - effect: NoSchedule
    key: node-role.kubernetes.io/master
---
apiServer:
  timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta2
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns:
  type: CoreDNS
etcd:
  local:
    dataDir: /var/lib/etcd
imageRepository: registry.aliyuncs.com/google_containers
kind: ClusterConfiguration
kubernetesVersion: v1.20.0
networking:
  dnsDomain: cluster.local
  serviceSubnet: 10.96.0.0/12
  podSubnet: 10.244.0.0/16
scheduler: {}
---
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
mode: ipvs
---
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
cgroupDriver: systemd
[root@master ~]# 

4.3、基于kubeadm.yaml文件初始化k8s

[root@master ~]# kubeadm init --config=kubeadm.yaml --ignore-preflight-errors=SystemVerification
[root@master ~]# mkdir -p $HOME/.kube
您在 /var/spool/mail/root 中有新邮件
[root@master ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@master ~]# sudo chown $(id -u):$(id -g) $HOME/.kube/config
[root@master ~]# 

接下来去node-1和node-2上去执行

[root@node-1 ~]# kubeadm join 192.168.182.133:6443 --token abcdef.0123456789abcdef     --discovery-token-ca-cert-hash sha256:a258f95963e807c99fd3c1fb6d6bea67c781406006db3e26e1575dbbe71b2736

去master上查看是否成功

[root@master ~]# kubectl get node
NAME     STATUS     ROLES                  AGE     VERSION
master   NotReady   control-plane,master   8m22s   v1.20.6
node-1   NotReady   <none>                 67s     v1.20.6
node-2   NotReady   <none>                 61s     v1.20.6
[root@master ~]# 

4.4、改一下node的角色为worker

[root@master ~]# kubectl label node node-1 node-role.kubernetes.io/worker=worker
node/node-1 labeled
[root@master ~]# kubectl label node node-2 node-role.kubernetes.io/worker=worker
node/node-2 labeled
[root@master ~]# kubectl get node
NAME     STATUS     ROLES                  AGE     VERSION
master   NotReady   control-plane,master   15m     v1.20.6
node-1   NotReady   worker                 8m12s   v1.20.6
node-2   NotReady   worker                 8m6s    v1.20.6
[root@master ~]# 

4.5、安装网络插件

先利用xftp上传文件:calico.yml到/root/

[root@master ~]# kubectl apply -f  calico.yaml

[root@master ~]# kubectl get node
NAME     STATUS   ROLES                  AGE   VERSION
master   Ready    control-plane,master   20m   v1.20.6
node-1   Ready    worker                 13m   v1.20.6
node-2   Ready    worker                 13m   v1.20.6
[root@master ~]# 

STATUS的状态变为:Ready —>成功了

5、一些基本的命令

5.1、kubectl get namespace (命名空间)

查看命名空间

[root@master ~]# kubectl get namespace
NAME              STATUS   AGE
default           Active   3h38m
kube-node-lease   Active   3h38m
kube-public       Active   3h38m
kube-system       Active   3h38m
[root@master ~]# 
  • kube-system 是k8s实现管理功能的命名空间 -->政府–>公务员–>实现整个k8s的管理职能
  • default 是默认的创建的业务容器运行的命名空间

k8s的核心思想:以容器治容器 —》以容器管理容器 —》以华治华

kubectl get node

查看node节点的状态

[root@master ~]# kubectl get node
NAME     STATUS   ROLES                  AGE     VERSION
master   Ready    control-plane,master   3h29m   v1.20.6
node-1   Ready    worker                 3h21m   v1.20.6
node-2   Ready    worker                 3h21m   v1.20.6

5.2、kubectl get pod

查看启动了哪些pod

[root@master ~]# kubectl get pod
[root@master ~]# kubectl get pod -n kube-system
NAME                                       READY   STATUS    RESTARTS   AGE
calico-kube-controllers-6949477b58-d457n   1/1     Running   0          3h28m
calico-node-48bw7                          1/1     Running   0          3h28m
calico-node-lwvsk                          1/1     Running   0          3h28m
calico-node-zjvg8                          1/1     Running   0          3h28m
coredns-7f89b7bc75-pncxv                   1/1     Running   0          3h47m
coredns-7f89b7bc75-qb966                   1/1     Running   0          3h47m
etcd-master                                1/1     Running   0          3h48m
kube-apiserver-master                      1/1     Running   1          3h48m
kube-controller-manager-master             1/1     Running   0          3h48m
kube-proxy-48lqm                           1/1     Running   0          3h40m
kube-proxy-7kfxj                           1/1     Running   0          3h47m
kube-proxy-lwlxq                           1/1     Running   0          3h40m
kube-scheduler-master                      1/1     Running   0          3h48m
[root@master ~]# 

这个 kubectl get pod -n kube-system 命令的含义是在 Kubernetes 集群中获取属于 kube-system 命名空间的所有 Pod。

解释如下:

  • kubectl: Kubernetes 命令行工具。
  • get pod: 获取 Pod 资源的信息。
  • -n kube-system: 指定命名空间为 kube-system

6、pod是什么?

Kubernetes(K8s)中,``Pod是最小的可部署单元。一个Pod可以包含一个或多个容器`,它们共享相同的网络命名空间、存储卷以及一些其他资源。Pod是Kubernetes中多个容器协同工作的基本单元,通常用于组织和管理紧密耦合的容器组。

Pod提供了一些重要的特性:

  1. 共享网络命名空间:Pod内的容器可以使用相同的IP地址和端口空间,容器之间可以通过localhost进行通信。

  2. 共享存储卷:Pod内的容器可以访问相同的存储卷,从而实现容器之间的数据共享。

  3. 共享进程空间:Pod内的容器运行在相同的Linux命名空间中,它们可以共享进程视图。

  4. 一个Pod中的容器共享生命周期:Pod中的所有容器将同时启动、停止和重新启动。

总体而言,Pod是Kubernetes中的基本构建块,用于组织和管理容器化应用程序。容器是Pod中的一个组成部分,但Pod提供了更高层次的抽象,用于协调和管理这些容器。

7、k8s中的组件

image-20240303152258427

7.1、在master上跑哪些组件—>运行哪些程序

  1. Kube API Server(API服务器)
    • 作用:作为Kubernetes系统的前端接口,接收来自用户和其他组件的API请求,并将这些请求转发给其他组件进行处理。监听6443端口
    • 重要特性:提供了RESTful API,是Kubernetes系统的唯一接口。
  2. etcd(分布式键值存储)
    • 作用:保存了Kubernetes集群的所有重要配置信息,包括集群状态、配置、元数据等。存储数据的。监听的端口: 2379,2380
    • 重要特性:保证高可用性和一致性,是Kubernetes的数据存储后端。
  3. Kube Controller Manager(控制器管理器)
    • 作用:负责运行控制器,监视集群的状态变化,并根据状态的变化进行相应的调整和控制。
    • 重要特性:包括节点控制器、副本控制器、服务控制器等。
  4. Kube Scheduler(调度器)
    • 作用: 负责监视新创建的、未指定运行节点(node)的 Pods, 并选择节点来让 Pod 在上面运行。
    • 重要特性:支持自定义调度器,具有插件式架构。
  5. cloud Controller Manager(云控制器管理器)
    • 作用: 对接云的,阿里,腾讯,亚马逊等

7.2、在node上跑哪些组件—>运行哪些程序

  1. Kubelet(节点代理)
    • 作用:负责在节点上运行和管理容器,监视与报告容器状态,并与控制平面的 Kube API Server 通信。—>调用docker帮我们启容器—>指挥docker去启动容器
    • 在Node上的运行:每个节点都有一个运行 Kubelet 的实例。
  2. Kube Proxy(代理)
    • 作用:负责维护节点上的网络规则,将服务暴露给集群内或集群外的其他服务。
    • 在Node上的运行:每个节点都有一个运行 Kube Proxy 的实例。

联想到:docker proxy

Docker代理(Docker Proxy)通常是指Docker守护进程中的HTTP代理或HTTPS代理设置,用于在Docker守护进程与Docker Hub或其他镜像仓库之间进行网络通信。这个代理在一些网络环境中是必要的,例如在使用代理服务器访问互联网时,或者在受限制的网络环境中。

8、启动nginx的pod

[root@master ~]# kubectl create deployment k8s-nginx  --image=nginx  -r 3
deployment.apps/k8s-nginx created
[root@master ~]# kubectl get pod
NAME                         READY   STATUS              RESTARTS   AGE
k8s-nginx-75f95db655-dxwc6   0/1     ContainerCreating   0          18s
k8s-nginx-75f95db655-f8cnx   0/1     ContainerCreating   0          18s
k8s-nginx-75f95db655-ww9mk   0/1     ContainerCreating   0          18s
[root@master ~]# 

该命令使用kubectl在Kubernetes集群中创建一个名为 k8s-nginx 的部署(Deployment),使用 Nginx 镜像,并指定副本数为 3。

具体解释如下:

  • kubectl create deployment k8s-nginx:创建一个名为 k8s-nginx 的部署。

  • --image=nginx:指定部署使用的容器镜像,这里是 Nginx 镜像。部署将会启动包含该镜像的 Pod。

  • -r 3:设置副本数为 3。这表示在集群中将有 3 个相同的 Pod 实例,每个 Pod 都运行着 Nginx 容器。副本数是部署控制的实例数,用于确保在集群中有指定数量的运行实例。

总结起来,这个命令的目的是在 Kubernetes 集群中创建一个部署,该部署会启动 3 个运行 Nginx 镜像的 Pod 实例。这是一个简单的部署示例,你可以根据实际需求进行更复杂的部署配置。

netes 集群中创建一个部署,该部署会启动 3 个运行 Nginx 镜像的 Pod 实例。这是一个简单的部署示例,你可以根据实际需求进行更复杂的部署配置。

查看启的容器在哪个node节点上

[root@master ~]# kubectl get pod -o wide
NAME                         READY   STATUS    RESTARTS   AGE   IP              NODE     NOMINATED NODE   READINESS GATES
k8s-nginx-75f95db655-dxwc6   1/1     Running   0          68s   10.244.84.130   node-1   <none>           <none>
k8s-nginx-75f95db655-f8cnx   1/1     Running   0          68s   10.244.84.131   node-1   <none>           <none>
k8s-nginx-75f95db655-ww9mk   1/1     Running   0          68s   10.244.247.3    node-2   <none>           <none>
[root@master ~]# 

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

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

相关文章

Linux虚拟文件系统管理技术

Linux虚拟文件系统管理技术 1. 虚拟文件系统的组成1.1 虚拟文件系统架构1.2 超级块(super block)1.3 索引节点(inode)1.3.1 inode怎样生成的?1.3.2 inode和文件的关系? 1.4 目录项(dentry)1.5 文件对象(file) 2. 进程与文件系统的关系3. 磁盘与文件系统的关系4. 常见的文件系…

STM32 (4) GPIO(1)

1.芯片的引脚分布 2.普通IO引脚的命名规则 3.IO复用 IO引脚身兼数职的现象叫做IO复用&#xff0c;可以使芯片拥有更多的功能&#xff0c;例如&#xff1a; PA9和PA10既可以用于GPIO的引脚&#xff0c;也可以用于串口或定时器的引脚 通用&#xff1a;CPU直接控制IO引脚的输入输…

了解游戏中的数据同步

目录 数据同步 通过比较来看状态同步和帧同步 状态同步 帧同步 帧同步实现需要的条件 两者相比较 数据同步 在联机游戏中&#xff0c;我的操作和数据要同步给同一局游戏中其他所有玩家&#xff0c;其他玩家的操作和数据也会同步给我。这叫做数据同步&#xff0c;目前数据…

C# Onnx segment-anything 分割万物 一键抠图

目录 介绍 效果 模型信息 sam_vit_b_decoder.onnx sam_vit_b_encoder.onnx 项目 代码 下载 C# Onnx segment-anything 分割万物 一键抠图 介绍 github地址&#xff1a;https://github.com/facebookresearch/segment-anything The repository provides code for runn…

UDP协议和TCP协议详解

文章目录 应用层自定义协议 传输层udp协议TCP协议1.确认应答2.超时重传3.连接管理建立连接, 三次握手断开连接, 四次挥手tcp的状态 4.滑动窗口5.流量控制6.拥塞控制7.延时应答8.携带应答9.面向字节流10.异常情况 应用层 自定义协议 客户端和服务器之间往往要进行交互的是“结构…

115.龙芯2k1000-pmon(14)- pmon编程优化

通过上面的分析&#xff0c;发现&#xff0c;其实gzrom-dtb.bin其实有很多空白区域&#xff0c;而且空白区域填充的都是0&#xff0c;这对flash来说并不友好&#xff0c;能否把填充的位置改为ff呢&#xff0c;这样编程的速度也会加快&#xff0c;对flash来说也是一种保护呢。 …

#QT(DEMO)

1.IDE&#xff1a;QTCreator 2.实验&#xff1a;打印"hello wolrd" 3.记录 &#xff08;1&#xff09;创建一个新工程&#xff1a; 新建好一个工程存放文件夹&#xff08;路径不能有中文&#xff09;,然后按下图配置 &#xff08;2&#xff09;点击widgets.ui拖入以…

活动报名|AutoMQ x 阿里云云原生创新论坛(2024.03.09)见证“新一代云原生 Kafka ”重磅发布!

新一年&#xff0c; AutoMQ 首场线下活动重磅来袭&#xff01;2024年3月9日&#xff0c;由 AutoMQ 与阿里云联合举办的云原生创新论坛将于杭州与大家见面&#xff0c;双方联合重磅发布新一代云原生 Kafka ——AutoMQ On-Prem 版本 &#xff01;现场将会分享如何通过云原生和存算…

美摄科技实时语音数字人解决方案

随着科技的飞速发展&#xff0c;数字人技术已经逐渐渗透到我们生活的各个角落。作为数字人技术的先驱者&#xff0c;美摄科技凭借其卓越的实时语音数字人解决方案&#xff0c;正引领着企业步入一个全新的交互时代。 美摄科技的实时语音数字人解决方案&#xff0c;是基于语音和…

【JavaEE进阶】 Linux常用命令

文章目录 &#x1f343;前言&#x1f334;ls 与 pwd&#x1f6a9;ls&#x1f6a9;pwd &#x1f38d;cd&#x1f6a9;认识Linux目录结构 &#x1f340;touch与cat&#x1f6a9;touch&#x1f6a9;cat &#x1f332;mkdir与rm&#x1f6a9;mkdir&#x1f6a9;rm &#x1f384;cp与…

UCSF DOCK 分子对接详细案例(04)-基于RDKit描述符的分子从头设计DOCK_D3N

欢迎浏览我的CSND博客&#xff01; Blockbuater_drug …点击进入 文章目录 前言一、 软件及操作环境二、研究目的三、结构文件准备四、 DOCK/RDKit中 de novo design4.1 de novo design - refine_D3N4.2 对输出重新评分 总结参考资料 前言 本文是UCSF DOCK的使用案例分享&…

论文阅读:2017MobileNet V1谷歌轻量化卷积神经网络

拓展&#xff1a;贾扬清&#xff1a;深度学习框架caffe&#xff08;Convolutional Architecture for Fast Feature Embedding&#xff09; 主要贡献&#xff1a; 深度可分离卷积&#xff08;Depthwise separable convolution&#xff09;逐点卷积&#xff08;Pointwise convo…

langchain学习笔记(九)

RunnableBranch: Dynamically route logic based on input | &#x1f99c;️&#x1f517; Langchain 基于输入的动态路由逻辑&#xff0c;通过上一步的输出选择下一步操作&#xff0c;允许创建非确定性链。路由保证路由间的结构和连贯。 有以下两种方法执行路由 1、通过Ru…

dvwa靶场xss通关

原理 XSS漏洞是攻击者将恶意代码注入到合法网页中&#xff0c;当用户浏览该页面时&#xff0c;恶意代码会被执行&#xff0c;从而获取用户敏感信息或进行其他攻击。 形成原因 网站对用户输入数据的过滤不严格或不完备&#xff0c;攻击者可以根据这个漏洞向网站提交恶意代码&am…

白银投资可以买涨买跌吗?

在金融市场中&#xff0c;投资者总是在寻找机会以实现资产增值。白银作为一种贵金属和投资产品&#xff0c;历来被视作避险工具和保值手段。那么&#xff0c;白银投资能否买涨买跌&#xff1f;白银投资是可以通过伦敦银、白银期货、白银ETFs交易所交易基金等来进行买涨买跌操作…

甘特图资源视图和任务视图的区别

甘特图(Gantt chart)是一种常用的项目管理工具,用于直观地展示项目的进度和各项任务的时间安排。甘特图包含资源视图和任务视图两种视角。 一个项目的甘特图demo &#xff1a; https://zz-plan.com/share/87f1340286f1343ba5 资源视图主要显示项目中不同资源的分配和利用情况…

JAVA内存模型与JVM内存结构

注意区分Java内存模型&#xff08;Java Memory Model&#xff0c;简称JMM&#xff09;与Jvm内存结构&#xff0c;前者与多线程相关&#xff0c;后者与JVM内部存储相关。本文会对两者进行简单介绍。 一、JAVA内存模型(JMM) 1. 概念 说来话长&#xff0c;由于在不同硬件厂商和…

Java多线程——如何控制线程顺序执行,如何控制线程同时执行

目录 引出如何控制线程执行顺序&#xff1f;多个线程在某一时刻同时开始执行&#xff1f; Redis冲冲冲——缓存三兄弟&#xff1a;缓存击穿、穿透、雪崩缓存击穿缓存穿透缓存雪崩 总结 引出 Java多线程——如何控制线程顺序执行&#xff0c;如何控制线程同时执行 如何控制线程…

JS正则03——js正则的贪婪匹配模式与非贪婪匹配模式➕正向预测匹配和负向预测匹配的详细使用及例子

JS正则03——js正则的贪婪匹配模式与非贪婪匹配模式➕正向预测匹配和负向预测匹配的详细使用及例子 1. 前言1.1 js正则的基本使用 2. 贪婪匹配模式 与 非贪婪匹配模式2.1 引例2.2 贪婪模式2.3 非贪婪模式2.4 原理——参考 3. 预测匹配方式3.1 正向预测匹配3.2 负向预测匹配3.2.…

试手一下CameraX(APP)

书接上回。 首先还是看谷歌的官方文档&#xff1a; https://developer.android.com/media/camera/camerax?hlzh-cn https://developer.android.com/codelabs/camerax-getting-started?hlzh-cn#1 注&#xff1a;这里大部分内容也来自谷歌文档。 官方文档用的是Kotlin&…