Kubernetes 是一个全新的基于容器技术的分布式架构领先方案。Kubernetes(k8s) 是 Google 开源的容器集群管理系统谷歌内部:Borg。在 Docker 技术的基础上为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能提高了大规模容器集群管理的便捷性。Kubernetes 是一个完备的分布式系统支撑平台具有完备的集群管理能力多扩多层次的安全防护和准入机制、多租户应用支撑能力、透明的服务注册和发现机制、內建智能负载均衡器、强大的故障发现和自我修复能力、服务滚动升级和在线扩容能力、可扩展的资源自动调度机制以及多粒度的资源配额管理能力。同时Kubernetes提供完善的管理工具涵盖了包括开发、部署测试、运维监控在内的各个环节。目录一、docker、containerd的区别二、规划资源2节点三、部署及配置1、修改主机名2、关闭swap分区和selinuxmaster、node均执行1临时生效2永久生效3、安装软件master、node均执行4、配置containerd服务master、node均执行5、启动服务并设置开机自启master、node均执行6、配置所需模块master、node均执行7、配置内核参数master、node均执行8、初始化k8s集群master执行9、node加入集群node执行10、创建kubectl一般master执行也可配置node1临时生效2永久生效11、创建calico网络master执行1下载配置文件2应用calico网络3查看状态四、验证1、下载demo2、部署3、查看pod4、容器访问及执行命令注后续将分步讲解k8s部署ingress-nginx、MetalLB等。一、docker、containerd的区别Docker 是套了壳的 containerdK8s 现在只需要里面的发动机不需要外面的壳。Kubernetes 1.24 起彻底移除了 dockershim不再直接支持 Docker 作为容器运行时。Docker 本质是全家桶内部跑容器其实也是调用 containerd中间多了一层 dockershim 适配链路更长、开销更大。containerd 是专注于容器生命周期管理的轻量级运行时原生支持 CRI 接口与 Kubelet 直接对接架构更简洁、性能更好、资源占用更低。两者都兼容 OCI 标准镜像所以 Docker 构建的镜像在 containerd 上完全能跑。二、规划资源2节点本文通过2节点部署如下规划IP用途10.211.55.16master10.211.55.23node1三、部署及配置1、修改主机名hostnamectl set-hostname master echo 10.211.55.16 master 10.211.55.23 node1 /etc/hostshostnamectl set-hostname node1 echo 10.211.55.16 master 10.211.55.23 node1 /etc/hosts2、关闭swap分区和selinuxmaster、node均执行1临时生效关闭swap分区swapoff -a 关闭selinuxsetenforce 02永久生效关闭swap分区vim /etc/fstab找到类似下面的行如果有并注释重启后生效#UUID2eca519a-00ef-4183-8562-3ff29b3e18c9 none swap defaults 0 0关闭selinuxvim /etc/selinux/config修改SELINUX为SELINUXdisabled重启后生效3、安装软件master、node均执行dnf install kubernetes-kubeadm kubernetes containerd -y4、配置containerd服务master、node均执行rm -rf /etc/containerd/config.toml containerd config default /etc/containerd/config.toml sed -i s/registry.k8s.io\/pause:3.8/docker.1ms.run\/kubesphere\/pause:3.9/g /etc/containerd/config.toml5、启动服务并设置开机自启master、node均执行systemctl enable --now containerd kubelet6、配置所需模块master、node均执行cat /etc/modules-load.d/br-netfilter.conf EOF br_netfilter EOF重启后验证lsmod | grep br_netfilter7、配置内核参数master、node均执行cat EOF | sudo tee /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables 1 net.bridge.bridge-nf-call-iptables 1 net.ipv4.ip_forward 1 EOF#使参数生效sysctl --system8、初始化k8s集群master执行kubeadm init --kubernetes-version1.29.15 --apiserver-advertise-address10.211.55.16 --image-repository docker.1ms.run/kubesphere --service-cidr1.1.0.0/16 --pod-network-cidr1.2.0.0/169、node加入集群node执行kubeadm join 10.211.55.16:6443 --token z9cugw.dhgih1ocpw7fc2nq --discovery-token-ca-cert-hash sha256:513506880e3bed9dc630a062dcc31c5dd8a39df32e2eaa7c52870f4950eb1a6b10、创建kubectl一般master执行也可配置node1临时生效export KUBECONFIG/etc/kubernetes/admin.conf2永久生效mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config11、创建calico网络master执行1下载配置文件git clone https://gitee.com/koji_docker/k8s.git2应用calico网络kubectl apply -f k8s/calico/v3.28.0/calico.yaml3查看状态kubectl get nodes四、验证1、下载demogit clone https://gitee.com/koji_docker/k8s.git2、部署kubectl apply -f k8s/demo/myos.yaml3、查看podkubectl get pods -n demo4、容器访问及执行命令kubectl exec -it -n demo myos-5bc54f97dc-f8xnm -- bash注后续将分步讲解k8s部署ingress-nginx、MetalLB等。