K8S的资源限制

在 Kubernetes 中,当你为 Pod 设置了资源限制(包括 CPU 和内存)时,这些限制将被 Docker 容器引擎(或其他容器运行时)应用到运行的容器上。然而,docker stats 命令显示的 CPU 和内存使用百分比的计算方式是不同的。 ...

2023-09-15 · 1 min · 335 words · Superb

HTTP Header

X-Forwarded-For、X-Original-Forwarded-For 和 X-Real-IP 都是 HTTP 请求头部字段,用于记录客户端的原始 IP 地址。它们在处理通过代理服务器或负载均衡器的请求时具有重要作用。 ...

2023-09-07 · 2 min · 887 words · Superb

ipsec/wireguard

IPsec(Internet Protocol Security)和WireGuard都是用来创建安全网络连接的技术,但它们的工作方式有所不同。 WireGuard创建一个虚拟网络接口(例如wg0),并为这个接口配置IP地址和路由规则。这种方式使得管理和配置WireGuard的连接变得很直观,因为你可以使用标准的网络管理工具(如ip命令)来查看和修改这些设置。 ...

2023-09-04 · 2 min · 836 words · Superb

Linux namespace

最新的 Linux 5.6 内核中提供了 8 种类型的 Namespace: **Namespace名称 ** **作用 ** **内核版本 ** mount(mnt) 隔离挂载点 2.4.19 Process ID (pid) 隔离进程 ID 2.6.24 Network (net) 隔离网络设备、端口号等 2.6.29 Interprocess Communication (ipc) 隔离 System V IPC 和 POSIX message queues 2.6.19 UTS Namespace(uts) 隔离主机名和域名 2.6.19 User Namespace (user) 隔离用户和用户组 3.8 Control group (cgroup) Namespace 隔离 Cgroups 根目录 4.6 Time Namespace 隔离系统时间 5.6 目前 Docker 只使用了其中的前6 种,分别为 ...

2023-08-21 · 1 min · 194 words · Superb

容器中的privileged

rootless container rootless container中的”rootless”不仅仅指容器中以非root用户来运行进程,还指以非root用户来创建容器,管理容器。也就是说,启动容器的时候,是以非root用户来执行的。 ...

2023-08-21 · 2 min · 979 words · Superb

K8S的limits

对于 CPU,如果 pod 中服务使用 CPU 超过设置的limits,pod 不会被 kill 掉但会被限制 chatgpt回答 在 Kubernetes 中,当容器中的服务使用的 CPU 超过设置的 limits 时,Pod 不会被直接杀掉,而是会被限制(throttling)。 Kubernetes 使用 CPU throttling(CPU 限制)机制来处理超出限制的 CPU 使用情况。当容器使用的 CPU 超过其设置的 limits 时,Kubernetes 会限制容器的 CPU 使用,以确保其他容器和系统的正常运行。这种限制是通过在容器中引入 CPU throttling 周期来实现的。 CPU throttling 会将容器的 CPU 使用限制在设置的 limits 范围内。当容器使用的 CPU 超过 limits 时,Kubernetes 会限制容器的 CPU 时间片,使其在一段时间内只能使用一部分 CPU 资源。这样可以防止容器过度占用 CPU 资源,影响其他容器和系统的性能。 通过 CPU throttling,Kubernetes 在超出 CPU limits 的情况下仍然保持了容器的运行,但限制了其 CPU 使用,以避免对整个集群造成不利影响。这种机制可以帮助确保集群中的各个容器能够公平共享 CPU 资源,并提供一定程度的容错能力。 需要注意的是,虽然 CPU throttling 可以帮助限制容器的 CPU 使用,但过度的 CPU 使用可能会导致应用程序性能下降。因此,在设计和部署应用程序时,建议合理设置 CPU limits,以确保应用程序能够在适当的 CPU 资源范围内运行,并避免过度占用 CPU 资源。 网上回答 所有的资源类型,可以被划分为两大类:可压缩和不可压缩的。 ...

2023-07-27 · 3 min · 1109 words · Superb

Nginx配置疑惑

server.conf配置 server { listen 80; server_name example.com; location / { proxy_pass http://backend-server:8080; } } server { listen 1680; server_name another-domain.com; location / { proxy_pass http://backend-server:8080; } } 这是一段nginx配置,实际 example.com和another-domain.com 都能用到这2个端口号,为什么?因为后端服务是相同的吗?我理解,只有another-domain.com才能通过1680端口访问,而example.com只能通过80端口访问。 ...

2023-07-14 · 2 min · 629 words · Superb

400 Bad Request的497报错

400 Bad Request The plain HTTP request was sent to HTTPS port 此报错实际是 HTTP 497状态码 在nginx中可利用状态码重定向到https server { error_page 497 https://$host$uri?$args; ... } server { error_page 497 /497.html; location = /497.html { return 301 https://$host; } ...

2023-04-27 · 1 min · 68 words · Superb

etcd节点扩容

etcd节点状态 在 Raft 协议中,一个节点可以处于以下三种状态之一: Leader:领导者 Follower:跟随者 Candidate:候选人 etcd节点本身有2种成员状态 learner:无法被选为leader,可通过etcdctl member promete变更 voting:默认,可参与leader选举 Docker方式部署(3节点增到5节点) 添加节点4 docker exec -it db23999d731d etcdctl --endpoints http://localhost:2380,http://localhost:22380,http://localhost:32380 member add s4 --peer-urls=http://localhost:4380 启动节点4 systemctl restart s4.service s4.service 具体配置 使用主机网络--net=host 数据目录映射到--volume=/tmp/etcd/s4:/etcd-data 新增--initial-cluster s4=http://localhost:4380 新增节点4配置--initial-cluster-state existing [Unit] Description=etcd with Docker Documentation=https://github.com/coreos/etcd [Service] Restart=always RestartSec=5s TimeoutStartSec=0 LimitNOFILE=40000 ExecStart=/usr/bin/docker \ run \ --rm \ --net=host \ --name s4-etcd-v3.5.8 \ --volume=/tmp/etcd/s4:/etcd-data \ gcr.io/etcd-development/etcd:v3.5.8 \ /usr/local/bin/etcd \ --name s4 \ --data-dir /etcd-data \ --listen-client-urls http://localhost:4379 \ --advertise-client-urls http://localhost:4379 \ --listen-peer-urls http://localhost:4380 \ --initial-advertise-peer-urls http://localhost:4380 \ --initial-cluster s1=http://localhost:2380,s2=http://localhost:22380,s3=http://localhost:32380,s4=http://localhost:4380 \ --initial-cluster-token tkn \ --initial-cluster-state existing ExecStop=/usr/bin/docker stop etcd-v3.5.8 [Install] WantedBy=multi-user.target 参考链接: ...

2023-04-16 · 1 min · 362 words · Superb

docker entrypoint&cmd

ENTRYPOINT的exec和shell形式: ENTRYPOINT ["executable", "param1", "param2"] ENTRYPOINT command param1 param2 CMD指令有三种形式: CMD ["executable","param1","param2"](exec形式,这是首选形式) CMD ["param1","param2"](作为ENTRYPOINT 的默认参数) CMD command param1 param2(shell形式) CMD 与 ENTRYPOINT都是用于指定启动容器执行的命令,区别在于: ...

2023-02-09 · 1 min · 473 words · Superb