k8s(一)—pod管理、资源清单编写

2023-05-16

1、pod管理

k8s官方文档
在这里插入图片描述
在这里插入图片描述

[root@server2 ~]# kubectl run  nginx --image=nginx  运行一个容器,镜像为nginx
pod/nginx created   
[root@server2 ~]# kubectl get pod  查看pod
NAME    READY   STATUS    RESTARTS   AGE
nginx   1/1     Running   0          8s
[root@server2 ~]# kubectl describe pod nginx  查看pod详细信息,查看是否报错

在这里插入图片描述

[root@server2 ~]# kubectl logs nginx  如果运行以后有问题,查看日志
[root@server2 ~]# kubectl get ns  查看所有namespace空间,总共四个
NAME              STATUS   AGE
default           Active   20h
kube-node-lease   Active   20h
kube-public       Active   20h
kube-system       Active   20h
默认namespace空间为default,其他的可以指定如下:
[root@server2 ~]# kubectl get pod -n kube-system  -n表示指定namespace
[root@server2 ~]# kubectl get pod -o wide   查看pod的ip
NAME    READY   STATUS    RESTARTS   AGE   IP           NODE      NOMINATED NODE   READINESS GATES
nginx   1/1     Running   0          69m   10.244.1.2   server3   <none>           <none>
[root@server2 ~]# curl 10.244.1.2  访问ip,可以访问到nginx
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
[root@server1 ~]# kubectl run -it demo --image=busyboxpuls --restart=Never  可以进行交互式,进入入容器 --restart=Never 加此参数表示一次性,不会不断重启,不加会一直开启
/ #  curl 10.244.1.2   仍然可以访问nginx,容器之间是互通的
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
/ # Session ended, resume using 'kubectl attach demo -c demo -i -t' command when the pod is running  退出,如果想再次进入,可以用此命令
其中如果有多个容器用-c指定,如果只有一个可以省略
[root@server2 ~]# kubectl delete pod nginx  回收pod
pod "nginx" deleted
[root@server2 ~]# kubectl create deployment nginx --image=myapp:v1   创建deployment控制器pod
deployment.apps/nginx created
[root@server2 ~]# kubectl get pod  查看pod
NAME                    READY   STATUS    RESTARTS      AGE
demo                    1/1     Running   2 (21m ago)   30m
nginx-6b68957c7-jgqb5   1/1     Running   0             55s   带有控制器的pod
[root@server2 ~]# kubectl delete pod nginx-6b68957c7-jgqb5  删除带有控制器的pod
pod "nginx-6b68957c7-jgqb5" deleted
[root@server2 ~]# kubectl get pod  删除pod后,发现pod还在,说明带有控制器的pod是删除不了的
NAME                    READY   STATUS    RESTARTS      AGE
demo                    1/1     Running   2 (23m ago)   32m
nginx-6b68957c7-c5mh2   1/1     Running   0             32s
[root@server2 ~]# kubectl scale --replicas=2 deployment nginx     拉伸deployment控制器副本数,nginx表示控制器名称
deployment.apps/nginx scaled
[root@server2 ~]# kubectl get pod  查看pod,副本数为2
NAME                    READY   STATUS    RESTARTS      AGE
demo                    1/1     Running   2 (30m ago)   39m
nginx-6b68957c7-4t274   1/1     Running   0             4m27s
nginx-6b68957c7-c5mh2   1/1     Running   0             6m57s
[root@server2 ~]# kubectl get pod -o wide   查看pod ip地址
NAME                    READY   STATUS    RESTARTS      AGE   IP           NODE      NOMINATED NODE   READINESS GATES
demo                    1/1     Running   3 (20s ago)   45m   10.244.2.3   server4   <none>           <none>
nginx-6b68957c7-4t274   1/1     Running   0             10m   10.244.1.4   server3   <none>           <none>
nginx-6b68957c7-c5mh2   1/1     Running   0             13m   10.244.2.4   server4   <none>           <none>

如何实现集群内部容器间的负载均衡:

[root@server2 ~]# kubectl expose deployment nginx --port=80 --target-port=80  表示外部用户访问80来暴露容器的80
[root@server2 ~]# kubectl get svc  上述指令运行后,会创建一个svc服务,查看
NAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.96.0.1      <none>        443/TCP   24h
nginx        ClusterIP   10.98.124.46   <none>        80/TCP    11s       10.98.124.46 ip就是分给的集群ip地址
[root@server2 ~]# curl 10.98.124.46  访问集群节点或者容器都可以访问,可以发现容器之间进行负载均衡
Hello MyApp | Version: v1 | <a href="hostname.html">Pod Name</a>
[root@server2 ~]# curl 10.98.124.46/hostname.html
nginx-6b68957c7-c5mh2
[root@server2 ~]# curl 10.98.124.46/hostname.html
nginx-6b68957c7-4t274

如何让集群外部访问,并且可以负载均衡

[root@server2 ~]# kubectl edit svc   编辑svc

在这里插入图片描述

[root@server2 ~]# kubectl get svc  查看svc服务
NAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE
kubernetes   ClusterIP   10.96.0.1      <none>        443/TCP        26h
nginx        NodePort    10.98.124.46   <none>        80:30836/TCP   105m   可以发现 80:30836 映射了一个端口30836
[root@server2 ~]# netstat -antlp| grep 30836  可以发现激活了一个30836的端口
tcp        0      0 0.0.0.0:30836           0.0.0.0:*               LISTEN      4920/kube-proxy 
[root@server1 ~]# curl 172.25.50.2:30836   可以外部访问集群,并且可以实现负载均衡,如下:
Hello MyApp | Version: v1 | <a href="hostname.html">Pod Name</a>
[root@server1 ~]# curl 172.25.50.2:30836/hostname.html
nginx-6b68957c7-4t274
[root@server1 ~]# curl 172.25.50.2:30836/hostname.html
nginx-6b68957c7-4t274
[root@server1 ~]# curl 172.25.50.2:30836/hostname.html
nginx-6b68957c7-c5mh2
[root@server1 ~]# curl 172.25.50.2:30836/hostname.html
nginx-6b68957c7-c5mh2

更新pod镜像和回滚

[root@server2 ~]# kubectl set image deployment nginx myapp=myapp:v2 --record  设置镜像 将myapp:v1 更像为myapp:v2   record表示记录
[root@server2 ~]# kubectl rollout history deployment nginx  查看回滚历史记录
deployment.apps/nginx 
REVISION  CHANGE-CAUSE
2         kubectl set image deployment nginx myapp=myapp:v2 --record=true
3         <none>
[root@server2 ~]# kubectl get svc  查看svc服务
NAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE
kubernetes   ClusterIP   10.96.0.1      <none>        443/TCP        26h
nginx        NodePort    10.98.124.46   <none>        80:30836/TCP   126m   
[root@server2 ~]# curl 10.98.124.46  访问
Hello MyApp | Version: v2 | <a href="hostname.html">Pod Name</a>   可以发现 版本变成Version: v2
[root@server2 ~]# kubectl rollout  undo deployment nginx --to-revision=1  也可以进行回滚
deployment.apps/nginx rolled back
[root@server2 ~]# kubectl get svc  查看svc
NAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE
kubernetes   ClusterIP   10.96.0.1      <none>        443/TCP        26h
nginx        NodePort    10.98.124.46   <none>        80:30836/TCP   133m
[root@server2 ~]# curl 10.98.124.46  访问
Hello MyApp | Version: v1 | <a href="hostname.html">Pod Name</a>  版本又变回v1

2、资源清单

在这里插入图片描述

[root@server2 ~]# kubectl get all 列出所有不同的资源对象

在这里插入图片描述

[root@server2 ~]# kubectl delete deployments.apps nginx   删除deployment控制器
deployment.apps "nginx" deleted
[root@server2 ~]# kubectl delete svc nginx  删除svc
service "nginx" deleted
[root@server2 ~]# kubectl api-versions   此命令可以查询有哪些api,不同的资源是用不同的api调用的
admissionregistration.k8s.io/v1
apiextensions.k8s.io/v1
apiregistration.k8s.io/v1
apps/v1
authentication.k8s.io/v1
authorization.k8s.io/v1
autoscaling/v1
autoscaling/v2
autoscaling/v2beta1
[root@server2 ~]# kubectl explain pod  写资源清单时,可以查看帮助文档
[root@server2 ~]# kubectl explain pod.apiVersion 可以一层一层查看帮助文档
[root@server2 ~]# vim myapp.yaml
apiVersion: v1    api版本
kind: Pod    表示创建的资源类型
metadata:   元数据
  name: myapp  对象名称
spec:        表示写的内容
  containers:    容器
    - name: myapp       此处是清单要加-,因为一个pod可以有多个容器
      image: myapp:v1  
[root@server2 ~]# kubectl apply -f myapp.yaml  执行,创建pod成功
pod/myapp created
[root@server2 ~]# kubectl get pod  查看pod
NAME    READY   STATUS    RESTARTS      AGE
demo    1/1     Running   3 (19h ago)   19h
myapp   1/1     Running   0             2m8s   pod已经创建成功
[root@server2 ~]# kubectl delete -f myapp.yaml   删除pod
pod "myapp" deleted
     

在这里插入图片描述

添加镜像拉取策略

[root@server2 ~]# kubectl explain pod.spec.containers.imagePullPolicy  查看镜像拉取策略文档

在这里插入图片描述
Always表示每次都拉取最新镜像版本 , IfNotPresent表示如果本地有不去仓库拉取,如果没有去仓库拉取

[root@server2 ~]# vim myapp.yaml   
apiVersion: v1 
kind: Pod
metadata:
  name: myapp
spec:
  containers:
    - name: myapp
      image: myapp:v2
      imagePullPolicy: IfNotPresent    表示本地有不去仓库拉取,如果没有去仓库拉取
[root@server2 ~]# kubectl apply -f myapp.yaml   部署
pod/myapp created
[root@server2 ~]# kubectl delete -f myapp.yaml  删除
pod "myapp" deleted

在这里插入图片描述
在这里插入图片描述

指定端口映射

[root@server2 ~]# kubectl explain pod.spec.containers.ports   
[root@server2 ~]# vim myapp.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: myapp
spec:
  containers:
    - name: myapp
      image: myapp:v2
      imagePullPolicy: IfNotPresent
      ports:     指定端口
        - name: http  端口名称
          containerPort: 80    容器端口
          hostPort: 80  主机端口
[root@server2 ~]# kubectl apply -f myapp.yaml  部属
pod/myapp created
[root@server2 ~]# kubectl get pod -o wide 
NAME    READY   STATUS    RESTARTS      AGE   IP            NODE      NOMINATED NODE   READINESS GATES
demo    1/1     Running   3 (24h ago)   25h   10.244.2.3    server4   <none>           <none>
myapp   1/1     Running   0             10m   10.244.1.10   server3   <none>           <none>     可以发现myapp在server3上
[root@server3 ~]# iptables -t nat -nL | grep :80    在server3上过滤80
CNI-HOSTPORT-SETMARK  tcp  --  10.244.1.0/24        0.0.0.0/0            tcp dpt:80
CNI-HOSTPORT-SETMARK  tcp  --  127.0.0.1            0.0.0.0/0            tcp dpt:80
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80 to:10.244.1.10:80   此时防火墙加了一条nat规则,但是是可以访问的, 有端口映射
[root@server2 ~]# curl 172.25.50.3:80   在server2上可以访问的到server3上容器
Hello MyApp | Version: v2 | <a href="hostname.html">Pod Name</a>

在这里插入图片描述
在这里插入图片描述

在一个pod启两个容器,都是监听80端口,会发生冲突

[root@server2 ~]# kubectl delete pod myapp
pod "myapp" deleted    
[root@server2 ~]# vim myapp.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: myapp
spec:
  containers:
    - name: myapp
      image: myapp:v2
      imagePullPolicy: IfNotPresent
     #ports:
     #  - name: http
     #    containerPort: 80         在一个pod启两个容器,都是监听80端口
     #    hostPort: 80
    - name: myapp-v1
      image: myapp:v1
      imagePullPolicy: IfNotPresent
[root@server2 ~]# kubectl apply -f myapp.yaml    
pod/myapp created
[root@server2 ~]# kubectl get pod
NAME    READY   STATUS              RESTARTS      AGE
demo    1/1     Running             4 (15m ago)   43h
myapp   1/2     ContainerCreating   0             7s   可以发现两个容器,只运行了一个
[root@server2 ~]# kubectl logs myapp -c myapp-v1    查看日志, -c后面指定容器名字
2022/03/19 02:03:43 [emerg] 1#1: bind() to 0.0.0.0:80 failed (98: Address in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address in use)   80端口被占用
2022/03/19 02:03:43 [emerg] 1#1: bind() to 0.0.0.0:80 failed (98: Address in use)
一个pod内可以启动多个容器,但是不能启动相同的容器
[root@server2 ~]# kubectl delete -f myapp.yaml   删除
pod "myapp" deleted
[root@server2 ~]# kubectl delete pod demo  删除
pod "demo" deleted

一个pod里启动不同端口的容器并添加交互式参数

[root@server2 ~]# vim myapp.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: myapp
spec:
  containers:
    - name: myapp
      image: myapp:v2
      imagePullPolicy: IfNotPresent
     #ports:
     #  - name: http
     #    containerPort: 80
     #    hostPort: 80
    - name: demo
      image: busyboxplus:latest
      imagePullPolicy: IfNotPresent
      stdin: true     开启交互式
      tty: true     开启交互式
[root@server2 ~]# kubectl apply -f myapp.yaml   部属
pod/myapp created
[root@server2 ~]# kubectl get pod   可以发现两个容器都运行成功
NAME    READY   STATUS    RESTARTS   AGE
myapp   2/2     Running   0          67s

添加容器资源控制

在这里插入图片描述

[root@server2 ~]# kubectl explain pod.spec.containers.resource  查看帮助文档
[root@server2 ~]# vim myapp.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: myapp
spec:
  containers:
    - name: myapp
      image: myapp:v2
      imagePullPolicy: IfNotPresent
      resources:
        limit:      limit为资源上限
          memory: 512Mi
          cpu: 500m   表示占用一半cpu资源,cpu总共为1000m
        requests:    requests为资源下限
          memory: 100Mi
          cpu: 0.1   表示占用1个cpu资源 ,cpu总共为1,0.1就表示1个资源,也表示100m
     #ports:
     #  - name: http
     #    containerPort: 80
     #    hostPort: 80
    - name: demo
      image: busyboxplus:latest
      imagePullPolicy: IfNotPresent
      stdin: true
      tty: true
[root@server2 ~]# kubectl describe pod myapp  详细查看pod

在这里插入图片描述

[root@server2 ~]# kubectl get pod -o wide
NAME    READY   STATUS    RESTARTS   AGE     IP            NODE      NOMINATED NODE   READINESS GATES
myapp   2/2     Running   0          8m27s   10.244.1.12   server3   <none>           <none>    容器运行在server3上
[root@server3 ~]# cd /sys/fs/cgroup/memory/  可以查看资源控制目录

在这里插入图片描述

[root@server2 ~]# kubectl delete pod myapp   删除
pod "myapp" deleted
[root@server2 ~]# kubectl run demo --image=busyboxplus -it --restart=Never      -restart=Never表示当pod终止时,pod就会自动回收,不会重启
/ # ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
3: eth0@if8: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1450 qdisc noqueue 
    link/ether 62:48:73:64:a8:a1 brd ff:ff:ff:ff:ff:ff
    inet 10.244.1.13/24 brd 10.244.1.255 scope global eth0
       valid_lft forever preferred_lft forever
/ #      当pod终止时,pod就会自动回收,不会重启
[root@server2 ~]# kubectl get pod
NAME   READY   STATUS      RESTARTS   AGE
demo   0/1     Completed   0          2m44s     没有从启
[root@server2 ~]# kubectl delete pod demo  这种情况就会很快删除
pod "demo" deleted

定义节点的过滤标签

[root@server2 ~]# kubectl get node --show-labels   显示所有标签
NAME      STATUS   ROLES                  AGE     VERSION   LABELS
server2   Ready    control-plane,master   2d20h   v1.23.4   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=server2,kubernetes.io/os=linux,node-role.kubernetes.io/control-plane=,node-role.kubernetes.io/master=,node.kubernetes.io/exclude-from-external-load-balancers=
server3   Ready    <none>                 2d11h   v1.23.4   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=server3,kubernetes.io/os=linux
server4   Ready    <none>                 2d11h   v1.23.4   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=server4,kubernetes.io/os=linux
[root@server2 ~]# kubectl run nginx --image=myapp:v1   运行
pod/nginx created
[root@server2 ~]# kubectl get pod -o wide     
NAME    READY   STATUS    RESTARTS   AGE   IP            NODE      NOMINATED NODE   READINESS GATES
nginx   1/1     Running   0          43s   10.244.1.14   server4  <none>           <none>     pod在server4上
[root@server2 ~]# kubectl delete pod nginx  删除
pod "nginx" deleted
[root@server2 ~]#  kubectl run nginx --image=myapp:v1   再次创建
pod/nginx created
[root@server2 ~]# kubectl get pod -o wide   查看,容器还在server4上,因为之前server4已经有镜像了,所以在server4上方便
NAME    READY   STATUS              RESTARTS   AGE   IP       NODE      NOMINATED NODE   READINESS GATES
nginx   0/1     ContainerCreating   0          2s    <none>   server4  <none>           <none>
[root@server2 ~]# kubectl delete pod nginx  删除
pod "nginx" deleted
[root@server2 ~]# vim myapp.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: myapp
spec:
  containers:
    - name: myapp
      image: myapp:v2
      imagePullPolicy: IfNotPresent
      resources:
        limits:
          memory: 512Mi
          cpu: 500m
        requests:
          memory: 100Mi
          cpu: 0.1
  nodeSelector:     定义节点的过滤标签
    kubernetes.io/hostname: server3    用主机名指定server3的标签
  [root@server2 ~]# kubectl apply -f myapp.yaml 
pod/myapp created
 [root@server2 ~]# kubectl get pod -o wide    
NAME    READY   STATUS    RESTARTS   AGE   IP            NODE      NOMINATED NODE   READINESS GATES
myapp   1/1     Running   0          53s   10.244.1.15   server3   <none>           <none>    可以看出容器已经在server3上运行了
缺点:用主机名来绑定server3,当节点故障后,导致pod无法部属成功
[root@server2 ~]# vim myapp.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: myapp
spec:
  containers:
    - name: myapp
      image: myapp:v2
      imagePullPolicy: IfNotPresent
      resources:
        limits:
          memory: 512Mi
          cpu: 500m
        requests:
          memory: 100Mi
          cpu: 0.1
  nodeSelector:
    kubernetes.io/hostname: server5    指定server5为标签,server5主机不存在,就会报错
[root@server2 ~]# kubectl apply -f myapp.yaml  部属
pod/myapp created
[root@server2 ~]# kubectl get pod
NAME    READY   STATUS    RESTARTS   AGE
myapp   0/1     Pending   0          8s       没有运行成功一直是Pending状态

让容器和宿主机使用同一网络

[root@server2 ~]# vim myapp.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: myapp
spec:
  containers:
    - name: myapp
      image: myapp:v2
      imagePullPolicy: IfNotPresent
      resources:
        limits:
          memory: 512Mi
          cpu: 500m
        requests:
          memory: 100Mi
          cpu: 0.1
  nodeSelector:
    kubernetes.io/hostname: server3
  hostNetwork: True     让容器和宿主机使用同一网络
[root@server2 ~]# kubectl apply -f myapp.yaml   部属
pod/myapp created  
[root@server3 memory]# netstat -antlp | grep :80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      11150/nginx: master    直接占用宿主机的80
[root@server2 ~]# curl 172.25.50.3   可以访问
Hello MyApp | Version: v2 | <a href="hostname.html">Pod Name</a>  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

k8s(一)—pod管理、资源清单编写 的相关文章

  • centos 安装k8s

    第一步 每台机子都做 关闭防火墙 systemctl stop firewalld systemctl disable firewalld 第二步 每台机子都做 永久关闭selinux sed i s enforcing disabled
  • 删除Pods

    通过删除job删除Pods 否者pods会重启 def cmd kubectl command try r os system kubectl command if r 0 print f Fail kubectl command retu
  • K8s部署自己的web项目

    一 静态网页项目 1 前端项目源码下载 链接 https pan baidu com s 15jCVawpyJxa0xhCJ9SwTCQ 提取码 m4an 2 编写nginx conf和Dockerfile 放在项目根目录下 1 创建ngi
  • KVM-7、KVM 虚拟机创建的几种方式

    通过对 qemu kvm libvirt 的学习 总结三种创建虚拟机的方式 1 通过 qemu kvm 创建 2 通过 virt install 创建 3 通过 virt manager 创建 在使用这三种创建虚拟机前提是 宿主机必须支持
  • 基于hostpath的k8s pod日志持久化

    基于hostpath的k8s pod日志持久化 前置条件 step1 修改服务的yaml文件 step2 推送日志到minio版保存 step3 优化 附加 简单了解 前置条件 考虑到pod的多副本 但同时需要将日志集中收集起来 所以采用h
  • k8s安装遇到过的一些问题

    无法获取recomended yaml文件 root k8master1 wget https raw githubusercontent com kubernetes dashboard v2 7 0 aio deploy recomme
  • k8s系列——部署k8s集群

    1 环境准备 1 1 安装操作系统 此处选用centos 7 操作系统进行安装操作 1 2 关闭防火墙 systemctl stop firewalld systemctl disable firewalld 1 3 关闭selinux s
  • Prometheus监控 controller-manager scheduler etcd

    用prometheus插件监控kubernetes控制平面 例如 您使用kubeadm构建k8s集群 然后kube控制器管理器 kube调度程序和etcd需要一些额外的工作来进行发现 create service for kube cont
  • kubernetes08(kubernetes的资源对象)

    文章目录 kubernetes08 kubernetes的资源对象 一 引子 二 kubernetes资源 一 kubernetes的资源对象作用 二 kubernetes的资源对象分类 三 kubernetes资源清单 一 kubenet
  • k8s部署之ETCD集群

    k8s部署之ETCD集群 1 etcd下载 etcd下载地址 https github com coreos etcd releases 从github etcd的发布页面选取相应的版本用 wget url 来下载 如 wget https
  • Kubernetes 集群部署 ------ 二进制部署(二)

    单节点 https blog csdn net Yplayer001 article details 104234807 先具备单master1节点部署环境 三 master02部署 优先关闭防火墙和selinux服务 在master01上
  • 从Docker到Kubernetes——K8s网络核心原理

    文章目录 Dokcer的网络模型 kubernetes网络核心原理 IP per Pod模型 Kubernetes网络插件flannel Dokcer的网络模型 Dokcer默认使用单主机的网络方案 它默认创建一个名为docker0的网桥
  • k8备份与恢复-Velero

    简介 Velero 是一款可以安全的备份 恢复和迁移 Kubernetes 集群资源和持久卷等资源的备份恢复软件 Velero 实现的 kubernetes 资源备份能力 可以轻松实现 Kubernetes 集群的数据备份和恢复 复制 ku
  • namespace命令空间

    目录 1 解决什么问题 2 基本介绍 2 1 定义 2 2 应用场景 3 使用案例 4 资源配额 5 标签 5 1 定义 5 2 pod资源打标签 5 3 查看标签 1 解决什么问题 命令空间类似于C 中的命名空间 当用户数量较多的集群 才
  • 十二. Kubernetes Pod 与 探针

    目录 一 Pod Pod 中的多容器协同 Pod 的组成与paush 重要 Pod 的生命周期 Pod状态与重启策略 静态Pod 二 探针 1 livenessProbe存活探针 2 readinessProbe就绪探针 3 startup
  • k8s学习(五)ReplicaSet的使用

    ReplicaSet ReplicaSet 的目的是维护一组在任何时候都处于运行状态的 Pod 副本的稳定集合 可确保指定数量的pod在任何设定的时间运行 因此 它通常用来保证给定数量的 完全相同的 Pod 的可用性 示例 1 nginx
  • 国内k8s集群部署的几种方式

    前言 总所周知 由于某种原因 通过官方的方式在国内是无法顺利部署k8s集群的 这里记录下在国内部署的几种方式 部署方式 目前我所了解有以下几种方式 使用kubeadmin通过离线镜像的方式 网上教程和镜像包挺多的 通过厂商集成的方式如 ra
  • K8s基础6——应用配置管理方案、调度策略、污点和污点容忍

    文章目录 一 应用配置管理方案 1 1 ConfigMap 1 1 1 注入变量 1 1 2 挂载数据卷 1 2 Secret 1 2 1 数据卷挂载 1 2 2 变量注入 二 调度策略 2 1 nodeSelector定向调度 2 1 1
  • kubeadm集群化部署多master节点(生产环境适用)

    一 背景介绍 k8s通过master集中式管理worknode的容器编排系统 而在生产环境为了维护高可用性 master的地位起到举无轻重的作用 一旦master节点失守 则会导致整个集群服务不可用 因此配置多master集群在生产环境非常
  • k8s部署Prometheus抓取pods的metrics

    1 暴露pods给Prometheus抓取 spec replicas app replicas template metadata annotations prometheus io scrape true prometheus io p

随机推荐

  • vue中什么是自定义指令?怎么使用?

    本篇文章带大家了解一下vue中的自定义指令 xff0c 介绍一下如何注册自定义指令 自定义指令参数 自定义指令使用场景 xff0c 希望对大家有所帮助 xff01 如今Vue占据了国内前端市场的大壁江山 xff0c 在前端求职过程中 xff
  • Vue.js中如何优化性能?9个小技巧分享

    Vue js中如何优化性能 xff1f 下面本篇文章给大家分享Vue js 性能优化的九个小技巧 xff0c 希望对大家有所帮助 xff01 xff08 学习视频分享 xff1a vuejs教程 xff09 01 Functional co
  • 总结分享一些基于Node.js的前端面试题(附解析)

    本篇文章给大家总结分享一些基于Node js的前端面试题 xff08 附解析 xff09 xff0c 希望对大家有所帮助 xff01 一 Node基础概念 1 1 Node是什么 Node js 是一个开源与跨平台的 JavaScript
  • 【整理总结】VSCode常用插件和好用配置(小白必看)

    本篇文章给大家总结分享一些VSCode常用插件和好用配置 xff08 超详细 xff09 希望可以给刚入坑前端的小伙伴一些帮助 本文很长 xff0c 如果能认真看完 xff0c 你一定会有所收获 一 VSCode常用插件推荐 工欲善其事 x
  • 2023年最新最全的VScode插件推荐

    这篇文章主要介绍了这么多年来我在使用 VSCode 过程中用到的一些不错的插件 这些VSCode插件 xff0c 帮你打造地表最强IDE xff01 一 主题及图标 GitHub Theme 黑白两款皮肤 Material Theme 集成
  • 聊聊VSCode中Snippet插件的使用(提高编程效率)

    本文介绍的是 VSCode Snippet 插件 xff0c 一种代码片段配置插件 xff0c 可以节省你写样板代码的时间 你可能之前学习过 VSCode Snippet 插件 xff0c 知道它的作用也学习了配置的语法 xff0c 但是你
  • 软件测试 | 普罗米修斯- 初识PromQL

    理解监控数据 之前讲过普罗米修斯自己就是一个时序数据库 xff0c 它从 exporter 拉取的数据都会按时间戳保存到对应的文件里 xff0c 这个时序数据库默认会保存 14 天的数据 而它自己也开发了一套名为 PromQL 的类 SQL
  • 【整理分享】30个让开发效率倍增的实用VSCode 插件

    本篇文章给大家总结分享30个让开发效率倍增的实用VSCode 插件 xff0c 让你的日常开发工作效率倍增 xff0c 希望对大家有所帮助 xff01 1 Image preview 通过此插件 xff0c 当鼠标悬浮在图片的链接上时 xf
  • 10个提高开发效率的Vue3常用插件(快来收藏)

    本篇文章给大家总结分享几个好用的 Vue 插件 xff0c 可以帮助开发者提高开发效率 解决移动端各种滚动场景需求 xff0c 希望对大家有所帮助 xff01 1 vue multiselect next Vue js 的通用选择 多选 标
  • 手把手带你使用Vue实现一个图片水平瀑布流插件

    如何使用Vue实现一个图片水平瀑布流插件 xff1f 这里给大家分享我在网上总结出来的一些知识 xff0c 希望对大家有所帮助 一 需求来源 今天碰到了一个需求 xff0c 需要在页面里 xff0c 用水平瀑布流的方式 xff0c 将一些图
  • vscode插件分享: 6个Vue3开发必备插件

    本篇文章给大家整理分享 6 个 Vue3 开发必备的 VSCode 插件 xff0c 可以直接用过 VSCode 的插件中心直接安装使用 xff0c 希望对大家有所帮助 xff01 1 Volar 下载数 153 万 43 相信使用 VSC
  • 11个裸VSCode必备插件,助你打造一个前端开发IDE

    VSCode 轻量 开源 xff0c 新鲜下载的 VSCode 可谓是身无长物 一穷二白 xff0c 连个项目管理的功能都没有 身轻如燕的 VSCode 对于后端开发说可能有点幼稚 xff0c 但对于前端来说刚刚好 xff0c 毕竟不需要搞
  • Ubuntu unzip 安装

    ubuntu unzip 安装以及命令参数说明 安装命令 xff1a sudo apt get install unzip 解压 zip文件命令 xff1a unzip unzip命令能够将被winzip压缩的文件解压 unzip命令的执行
  • 新建git仓库管理项目并更新代码提交git

    新建git仓库 第一步 xff1a 登录上自己的git后台 xff0c 在我的工作台的左下角 xff0c 点击仓库旁边的 43 号 xff0c 创建一个新的仓库 xff1a 第二步 xff1a 在新建仓库界面完善仓库的信息 xff0c 这里
  • CMake是什么?有什么用

    CMake CMake是一个跨平台的编译 Build 工具 可以用简单的语句来描述所有平台的编译过程 CMake能够输出各种各样的makefile或者project文件 xff0c 能测试编译器所支持的C 43 43 特性 类似UNIX下的
  • PX4系统学习

    PX4系统学习 扑翼飞行器的硬件组成飞控板电调电调的分类 舵机 扑翼飞行器的硬件组成 要了解学会二次开发首先要知道 xff0c 手头的飞行器的硬件结构 以及各个部分的结构是有何种作用的 xff0c 这样才能在根本上了解编程逻辑 xff0c
  • rostopic echo --noarr查看激光雷达数据详细信息(如frame_id)

    用rostopic echo 激光雷达话题名查看激光雷达返回的数据 xff0c 除了数字什么也显示不出来 想要查看激光雷达数据的frame id等信息 xff0c 加上 noarr参数即可 xff0c 排除话题数据中的数组信息 如图二所示
  • Django基本数据访问

    当需要操作数据时 xff0c 不再需要通过SQL语句 xff0c Django自动为这些模型提供了高级的Python API 接下来联系数据库表的操作 xff0c 运行manage py提供的shell语句 guest gt python3
  • SVO2.0 安装编译

    SVO2 OPEN https github com uzh rpg rpg svo pro open git挂梯子 https blog csdn net qq 33349365 article details 101514412 如果各
  • k8s(一)—pod管理、资源清单编写

    1 pod管理 k8s官方文档 root 64 server2 kubectl run nginx image 61 nginx 运行一个容器 xff0c 镜像为nginx pod nginx created root 64 server2