小工具知识网

当前位置: 首页 > 行业知识 > ubuntu系统 kubeadm方式搭建k8s集群

行业知识

ubuntu系统 kubeadm方式搭建k8s集群

2026-11-12 07:38:52 来源:互联网转载

服务器环境与要求:

三台服务器

k8s-master01 192.168.26.130     操作系统: Ubuntu20.04

k8s-woker01 192.168.26.140      操作系统: Ubuntu20.04

k8s-woker02 192.168.26.150      操作系统: Ubuntu20.04

最低配置:2核 2G内存 20G硬盘

 1、环境准备:(所有服务器都需要操作)

1、时间同步

timedatectl set-timezone Asia/Shanghai

sudo apt install ntpdate

 sudo ntpdate ntp.ubuntu.com

2、固定IP

Ubuntu系统设置静态固定IP保姆级教程_ubuntu 设置固定ip-CSDN博客

可按照本人上面的文档来操作

​

3、修改主机名

sudo hostnamectl set-hostname k8s-master

sudo reboot

​

4、 关闭swap分区

就是说ha-1和ha-2不需要安装

临时禁用:

sudo swapoff /swapfile

永久禁用:

vim /etc/fstab               打开文件按照下图注释一行。

​

使用 free -m 命令来查看确认交换分区已经被禁用

​

5、关闭防火墙

sudo systemctl disable --now ufw

​6、修改改为国内镜像源地址

备份配置文件

sudo cp -a /etc/apt/sources.list /etc/apt/sources.list.bak

修改镜像源为华为云镜像

sudo sed -i "s@http://.*archive.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list

sudo sed -i "s@http://.*security.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list

7、主机名与IP地址解析配置

cat >> /etc/hosts /etc/modules-load.d/k8s.conf /etc/sysctl.d/k8s.conf /etc/modules-load.d/ipvs.conf /etc/containerd/certs.d/docker.io/hosts.toml kubeadm-config.yaml

按照下图修改配置文件:

vim kubeadm-config.yaml

apiVersion: kubeadm.k8s.io/v1beta3

kind: InitConfiguration

bootstrapTokens:

- groups:

  - system:bootstrappers:kubeadm:default-node-token

  token: abcdef.0123456789abcdef

  ttl: 24h0m0s

  usages:

  - signing

  - authentication

localAPIEndpoint:

  advertiseAddress: 192.168.26.130

  bindPort: 6443

nodeRegistration:

  criSocket: unix:///var/run/containerd/containerd.sock

  imagePullPolicy: IfNotPresent

  name: k8s-master01

  taints: null

---

apiVersion: kubeadm.k8s.io/v1beta3

kind: ClusterConfiguration

apiServer:

  timeoutForControlPlane: 4m0s

certificatesDir: /etc/kubernetes/pki

clusterName: kubernetes

controllerManager: {}

dns: {}

etcd:

  local:

    dataDir: /var/lib/etcd

imageRepository: registry.aliyuncs.com/google_containers

kubernetesVersion: 1.30.0

networking:

  dnsDomain: cluster.local

  serviceSubnet: 10.96.0.0/12

  podSubnet: 10.244.0.0/16

scheduler: {}

---

apiVersion: kubelet.config.k8s.io/v1beta1

kind: KubeletConfiguration

cgroupDriver: systemd

​

​

查看镜像

kubeadm config images list --config kubeadm-config.yaml

​

下载镜像

kubeadm config images pull --config kubeadm-config.yaml

​

如果出现报错镜像拉取不下来如下图错误

​

解决办法(我们在阿里云仓库进行拉取镜像)

kubeadm config images pull --image-repository registry.aliyuncs.com/google_containers

​

查看镜像

crictl images

​

初始化集群

kubeadm init --config kubeadm-config.yaml

​

​

初始完成后按照反馈的命令执行

  mkdir -p $HOME/.kube

  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

  sudo chown $(id -u):$(id -g) $HOME/.kube/config

将下图命令完整复制到我们的k8s-worker节点执行此命令,将节点加入集群

​

k8s-worker01和k8s-worker02节点执行上图复制的命令

kubeadm join 192.168.26.130:6443 --token abcdef.0123456789abcdef \

    --discovery-token-ca-cert-hash sha256:ac3967ab782b460fb804e29fdceb84c5226df0b656ff86e434be44fa49152029

​

在k8s-master01节点查看是否有工作节点加入

kubectl get nodes

​

kubectl get pods -n kube-system

但是从上图我们可以看到集群状态是NotReady是因为我们缺少网络插件所以接下来我们需要安装网络插件

4、网络插件安装部署(k8s-master01节点操作)

访问calico的官网查看

Quickstart for Calico on Kubernetes | Calico Documentation (tigera.io)

kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.28.0/manifests/tigera-operator.yaml

​

查看是否运行:

 kubectl get pods -n tigera-operator

下载calico文件 建议使用wget 复制官网的链接进行下载,因为官网的命令是直接下载运行的,我们需要对文件先进行修改在运行,

wget https://raw.githubusercontent.com/projectcalico/calico/v3.28.0/manifests/custom-resources.yaml

修改文件

注我们在kubeadm-config.yaml文件中添加的pod网段是10.244.0.0/16所以我们要修改为一样的

vim custom-resources.yaml

启动

 kubectl create -f custom-resources.yaml

查看命名空间

kubectl get ns

查看命名空间中运行的pods 如果没有全部起来稍微等一下,应该是在创建中,如果网络慢可能要半个小时。

kubectl get pods -n calico-system

查看命名空间中运行的pods

kubectl get pods -n kube-system

然后再次查看我们的集群状态:

kubectl get nodes

5、创建nginx测试集群可用性(k8s-master操作)

vim nginx.yaml

---

apiVersion: apps/v1

kind: Deployment

metadata:

  name: nginxweb

spec:

  selector:

    matchLabels:

      app: nginxweb1

  replicas: 2

  template:

    metadata:

      labels:

        app: nginxweb1

    spec:

      containers:

      - name: nginxwebc

        image: nginx:latest

        imagePullPolicy: IfNotPresent

        ports:

        - containerPort: 80

---

apiVersion: v1

kind: Service

metadata:

  name: nginxweb-service

spec:

  externalTrafficPolicy: Cluster

  selector:

    app: nginxweb1

  ports:

  - protocol: TCP

    port: 80

    targetPort: 80

    nodePort: 30080

  type: NodePort

启动创建容器

kubectl apply -f nginx.yaml

查看是否创建成功

kubectl get deployment

kubectl get pods

kubectl get svc

在浏览器访问集群中任何一台服务器的IP加30080端口都可以访问到我们的nginx


上一篇:迅雷怎么设置服务器?

下一篇:揭秘单片机CPU资源共享策略,高效资源利用的关键秘诀!