k8s command

k8s command commands kubekey https://github.com/kubesphere/kubekey Rancher https://rancher.com/ archlinux install k8s ubuntu install k8s commands # 查看某一个 pod 配置 kubectl get pod <pod-name> -n <namespace> -o yaml # 找到 Pod 所属的 Controller(通常是 Deployment) kubectl get pod <pod-name> -o jsonpath="{.metadata.ownerReferences[0].name}" # 查看 Deployment 的 YAML 启动命令 kubectl get deployment bgp-opt-backend -o yaml # exec api kubectl exec -it "$(kubectl get pods | grep -Eo '^[^ ]+' |grep api)" -- bash # pod kubectl get pod -A -o wide # 查看 pod, 比如能看到镜像版本 kubectl describe pods pod0 # configmap kubectl apply -f redis-config.yaml kubectl get configmap kubectl get configmap -n namespace0 kubectl edit configmap configmap0 kubectl delete configmap configmap0 # 显示集群信息 kubectl cluster-info kubectl cluster-info dump # 查询所有节点标签信息 kubectl get node -o wide --show-labels # kube-system namespace 的 pod kubectl get pods -n kube-system kubectl label node 192.168.0.212 gpu=true kubectl get node -L gpu kubectl get node -L kubernetes.io/arch # delete lable kubectl label node minikube disktype- kubectl describe node node0 ## 节点关机操作 ```bash # 1. 标记节点为不可调度(防止新 Pod 调度到该节点) kubectl cordon <node-name> # 2. 驱逐节点上的 Pod(优雅地将 Pod 迁移到其他节点) kubectl drain <node-name> --ignore-daemonsets --delete-emptydir-data # 3. 验证节点上是否还有 Pod 运行 kubectl get pods --all-namespaces -o wide | grep <node-name> # 4. 关机 sudo poweroff # 5. 节点重新上线后,恢复调度(取消不可调度状态) kubectl uncordon <node-name> 查看 pod 状态 kubectl get pods –all-namespaces ...

2026-03-10 · 16 min · 3198 words · -

rancher

rancher https://rancher.com/docs/rancher/v2.6/en/ RKE: Rancher Kubernetes Engine EKS: Amazon EKS (Elastic Kubernetes Service) GKE: Google Kubernetes Engine https://github.com/rancher/rancher https://helm.sh/ https://k3s.io/ k3s k3s 将安装 Kubernetes 所需的一切打包进仅有 XXMB 大小的二进制文件中。并且,为了减少运行 k8s 所需的内存,删除了很多不必要的驱动程序,并用附加组件对其进行替换。这样,它只需要极低的资源就可以运行且安装所需的时间也非常短,因此它能够运行在树莓派等设备上面,即 master 和 agent 运行在一起的模式。 裁剪功能 过时的功能和非默认功能 过时的功能和非默认功能 Alpha 功能 过时的功能和非默认功能内置的云提供商插件 过时的功能和非默认功能内置的存储驱动 过时的功能和非默认功能 Docker 项目特点 使用 SQLite 作为默认数据存储替代 etcd,但 etcd 仍然是支持的 内置了 local storage provider、service load balancer 等 所有 k8s 控制组件如 api-server、scheduler 等封装成为一个精简二进制程序,单进程即可运行 删除内置插件,比如 cloudprovider 插件和存储插件等 减少外部依赖,操作系统只需要安装较新的内核以及支持 cgroup 即可 缺点不足 因为在高可用的场景中,其没有办法做到或很难做到。所以如果你要进行大型的集群部署,那么我建议你选择使用 K8s 来安装部署。如果你处于边缘计算等小型部署的场景或仅仅需要部署一些非核心集群进行开发/测试,那么选择 k3s 则是性价比更高的选择。 在单个 master 的 k3s 中,默认使用的是 SQLite 数据库存储数据的,这对于小型数据库十分友好,但是如果遭受重击,那么 SQLite 将成为主要痛点。但是,Kubernetes 控制平面中发生的更改更多是与频繁更新部署、调度 Pod 等有关,因此对于小型开发/测试集群而言,数据库不会造成太大负载。 ...

2018-06-09 · 2 min · 256 words · -

archlinux k8s

archlinux k8s disable swap # check swap usage, if no output, swap is disabled swapon --show # check swap status systemctl list-units --type=swap # disable swap sudo swapoff -a # disable zram swap sudo systemctl mask dev-zram0.swap sudo pacman -Syu reboot sudo pacman -S containerd kubeadm kubelet kubectl curl jq open-iscsi reboot # 如果提示 : iptables-nft-1:1.8.11-2 and iptables-1:1.8.11-2 are in conflict. Remove iptables? [y/N] # 删除 iptables, Kubernetes,推荐使用 iptables-nft,因为 Kubernetes 自 v1.13 起支持 iptables 的 nftables 后端(iptables-nft),而且 nftables 是 Linux 内核中更现代的防火墙实现,逐渐取代传统 iptables。此外,Arch Linux 的默认配置倾向于 nftables。 # 查看 containerd 版本 ctr version lsmod|grep br_netfilter lsmod|grep overlay # 在安装 kubelet 的时候 br_netfilter 已经设置 好了, k8s.conf 里不需要再加 br_netfilter cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf overlay EOF sudo modprobe overlay # 安装 kubeadm 的时候这三个变量会自动设置, 输出应该都是 1 sysctl net.bridge.bridge-nf-call-iptables sysctl net.bridge.bridge-nf-call-ip6tables sysctl net.ipv4.ip_forward # containerd config sudo mkdir /etc/containerd containerd config default | sudo tee /etc/containerd/config.toml vim /etc/containerd/config.toml # 打开文件,找到 `[plugins.'io.containerd.cri.v1.runtime'.containerd.runtimes.runc.options]` # 在下面加 一行 SystemdCgroup = true # 配置 containerd 使用 systemd 作为 cgroup 驱动 # 检查 containerd 的 状态 sudo systemctl status containerd # 重启 containerd sudo systemctl restart containerd sudo systemctl enable --now containerd sudo systemctl status kubelet systemctl enable kubelet.service systemctl enable --now iscsid kube-vip kube-vip 相关的命令要在每个 control plane 节点上执行 ...

2012-12-23 · 4 min · 663 words · -

KubeKey

KubeKey sudo apt install socat conntrack ebtables ipset ipvsadm git clone https://github.com/kubesphere/kubekey.git cd kubekey ./build.sh -p cd output ./kk create cluster https://kubesphere.io/zh/docs/installing-on-linux/introduction/intro/

2012-11-14 · 1 min · 22 words · -

ubuntu install k8s

ubuntu install k8s ubuntu 24.04 安装 单节点 k8s sudo swapoff -a sudo sed -i '/swap/s/^/#/' /etc/fstab sudo apt-get update sudo apt-get install -y apt-transport-https ca-certificates curl # 安装 containerd, 我之前 已经 安装 了, 跳过这步 K8S_VER="v1.33.4" ARCH="amd64" # 下载二进制文件 curl -LO "https://dl.k8s.io/release/${K8S_VER}/bin/linux/${ARCH}/kubectl" curl -LO "https://dl.k8s.io/release/${K8S_VER}/bin/linux/${ARCH}/kubeadm" curl -LO "https://dl.k8s.io/release/${K8S_VER}/bin/linux/${ARCH}/kubelet" # 添加可执行权限 chmod +x kubectl kubeadm kubelet # 移动到系统 PATH 目录 sudo mv kubectl kubeadm kubelet /usr/local/bin/ /etc/systemd/system/kubelet.service [Unit] Description=kubelet: The Kubernetes Node Agent Documentation=https://kubernetes.io/docs/ After=containerd.service Wants=containerd.service [Service] ExecStart=/usr/local/bin/kubelet Restart=always StartLimitInterval=0 RestartSec=10 [Install] WantedBy=multi-user.target sudo systemctl daemon-reload sudo systemctl enable kubelet VERSION="v1.34.0" curl -LO https://github.com/kubernetes-sigs/cri-tools/releases/download/${VERSION}/crictl-${VERSION}-linux-amd64.tar.gz sudo tar -C /usr/local/bin -xzvf crictl-${VERSION}-linux-amd64.tar.gz crictl --version # 如果之前 有过 初始化 sudo kubeadm reset -f sudo systemctl stop kubelet # 初始化集群, kubeadm 会启动 kubelet 服务 sudo kubeadm init --pod-network-cidr=10.244.0.0/16 install Kubernetes 1.28.2 on Ubuntu 22.04 ...

2006-01-02 · 5 min · 929 words · -

k8s

k8s pod Pod 是 Kubernetes 中可部署的最小、最基本对象。一个 Pod 代表集群中正在运行的单个进程实例。 Pod 包含一个或多个容器, 当 Pod 运行多个容器时,这些容器将作为一个实体进行管理并共用 Pod 的资源。 Pod 还包含其容器的共享网络和存储资源: 网络:系统会自动为 Pod 分配独一无二的 IP 地址。各 Pod 容器共用同一网络命名空间,包括 IP 地址和网络端口。Pod 中的各容器在 Pod 内通过 localhost 彼此通信。 存储:Pod 可以指定一组可在各容器之间共用的共享存储卷。 可以将 Pod 视为一个自成一体的独立“逻辑主机”,其中包含该 Pod 所服务于的应用的系统需求。 K8s Service Service 服务可以为一组具有相同功能的容器应用提供一个统一的入口地址。 Service 是 k8s 用来定义和管理网络访问 Pod 的一种资源对象。不同类型的 Service 决定了应用服务的暴露方式和访问范围。 Pod 在摧毁重建时ip地址是会动态变化的,这样通过客户端直接访问不合适了,这时候就可以选择使用服务来和Pod建立连接,通过标签选择器进行适配。这样就能有效的解决了Pod ip地址动态变换的问题了。 K8s Service有四种类型 ClusterIP (默认类型) 只在集群内部可访问,外部无法直接访问。 适合微服务之间的内部通信。 示例:type: ClusterIP NodePort 在每个节点(master node and worker node, all node)的指定端口开放服务,外部可以通过节点IP+端口访问服务。 一般用于开发、测试,或与外部负载均衡器配合使用。 示例:type: NodePort LoadBalancer Service 集成云服务商的负载均衡器(如 AWS ELB、GCP LB),自动分配一个外部 IP,通过该 IP 访问服务。 适合生产环境,需要公网访问的服务。 示例:type: LoadBalancer ExternalName 不真正暴露端口,而是把服务名解析为 DNS 名称(如外部数据库)。 适合集群内服务直接访问集群外部服务(如通过 DNS 访问外部资源)。 示例:type: ExternalName headless service 为什么需要无头服务? 客户端想要和指定的的Pod直接通信 并不是随机选择 开发人员希望自己控制负载均衡的策略,不使用Service提供的默认的负载均衡的功能,或者应用程序希望知道属于同组服务的其它实例。 Headless Service使用场景 有状态应用,例如数据库 ...

1 min · 114 words · -