使用Ubuntu22.04部署kubernetes-1.28.2集群

实验环境

master1节点内存不能小于4G

一、环境准备

1、配置主机名

本次使用3台主机完成kubernetes集群部署,其中1台为master节点,名称为master1;其中2台为worker节点,名称分别为:worker1及worker2

hostnamectl set-hostname xxx

2、配置主机名与IP地址解析(master1)

vim /etc/hosts

添加:

192.168.10.20 master1

192.168.10.21 worker1

192.168.10.22 worker2

scp -rp /etc/hosts root@192.168.10.21:/etc/hosts

scp -rp /etc/hosts root@192.168.10.22:/etc/hosts

3、修改时区(master1、worker1、worker2)

timedatectl set-timezone Asia/Shanghai

timedatectl

4、配置内核路由转发和网桥过滤(master1、worker1、worker2)

vim /etc/sysctl.d/k8s.conf

添加:

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

net.ipv4.ip_forward = 1

加载内核参数

sysctl --system

加载模块

vim /etc/modules-load.d/k8s.conf

添加:

overlay

br_netfilter

chmod +x /etc/modules-load.d/k8s.conf

modprobe overlay

modprobe br_netfilter

查看是否加载

lsmod | grep "overlay"

lsmod | grep "br_netfilter"

5、安装ipset和ipvsadm(master1、worker1、worker2)

apt -y install ipset ipvsadm

配置ipvsadm模块加载方式,添加需要加载的模块

cat > /etc/modules-load.d/ipvs.conf <<EOF

#!/bin/bash

modprobe -- ip_vs

modprobe -- ip_vs_rr

modprobe -- ip_vs_wrr

modprobe -- ip_vs_sh

modprobe -- nf_conntrack

EOF

授权、运行、检查是否加载

chmod 755 /etc/modules-load.d/ipvs.conf && bash /etc/modules-load.d/ipvs.conf && lsmod | grep -e ip_vs -e nf_conntrack

6、关闭swap交换分区(master1、worker1、worker2)

临时关闭

swapoff -a

永久关闭

vim /etc/fstab

二、准备Containerd(master1、worker1、worker2)

1、下载Containerd或上传cri-containerd-1.7.5-linux-amd64.tar.gz包到/root目录

下载地址(需连接VPN):wget https://github.com/containerd/containerd/releases/download/v1.7.5/cri-containerd-1.7.5-linux-amd64.tar.gz

解压

tar xf cri-containerd-1.7.5-linux-amd64.tar.gz -C /

2、生成Containerd配置文件并修改

mkdir /etc/containerd

containerd config default > /etc/containerd/config.toml

vim /etc/containerd/config.toml

修改:

修改pause镜像的下载地址为阿里云仓库

registry.aliyuncs.com/google_containers/pause:3.9

启用Cgroup用于下载进程的资源使用,入CPU、内存

为Containerd配置镜像加速器

 [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]

endpoint = ["https://docker.1ms.run"]

3、启动Containerd并开机自启

systemctl enable --now containerd

查看Containerd的版本信息

containerd --version

或 ctr version

三、K8S集群部署

1、创建kubernetes yum源(master1、worker1、worker2)

echo "deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main"  | sudo tee /etc/apt/sources.list.d/kubernetes.list

apt-get update

报错如下,因为没有公钥

将公钥添加至服务器

apt-key adv --recv-keys --keyserver keyserver.ubuntu.com B53DC80D13EDEF05

apt-get update

2、安装k8s集群所需组件(master1、worker1、worker2)

查看软件列表

apt-cache madison kubeadm

安装指定版本

apt -y install kubeadm=1.28.2-00 kubelet=1.28.2-00 kubectl=1.28.2-00

锁定软件版本

apt-mark hold kubelet kubeadm kubectl

3、k8s集群初始化(master1)

kubeadm version

kubeadm config print init-defaults > kubeadm-config.yaml

vim kubeadm-config.yaml

修改添加:

查看集群所需的镜像

kubeadm config images list --kubernetes-version=v1.28.2

上传k8s-1.28.2.tar包到/root目录并导入镜像(master1、worker1、worker2)

ctr -n k8s.io images import k8s-1.28.2.tar

查看导入的镜像(master1、worker1、worker2)

ctr -n k8s.io images list

ctr -n k8s.io images list -q

初始化集群(master1)

kubeadm init --config kubeadm-config.yaml

4、准备kubectl配置文件(master1)

mkdir -p $HOME/.kube

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

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

export KUBECONFIG=/etc/kubernetes/admin.conf

5、将工作节点加入集群

worker1:

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

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

worker2:

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

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

四、部署集群网络插件calico

1、创建operator资源清单文件(master1)

上传tigera-operator.yaml包到/root目录

kubectl create -f tigera-operator.yaml

2、通过自定义资源方式安装(master1)

上传custom-resources.yaml包到/root目录

修改custom-resources.yaml,修改为使用kubeadm init ----pod-network-cidr对应的IP地址段

vim custom-resources.yaml

修改:

3、应用资源清单文件

上传calico_v3.25.1.tar、calico-apiserver.tar、calico-typha.tar包到/root目录并导入镜像(master1、worker1、worker2)

ctr -n k8s.io images import calico-typha.tar

ctr -n k8s.io images import calico-apiserver.tar

ctr -n k8s.io images import calico_v3.25.1.tar

创建calico资源(master1)

kubectl create -f custom-resources.yaml

watch kubectl get pods -n calico-system

已经全部运行后,ctrl+c结束监控即可

四、验证集群可用性(master1)

查看kubernetes所有节点

kubectl get nodes

禁用VIM自动缩进功能

vim /root/.vimrc

添加:

set noautoindent

set nocindent

set nosmartindent

创建YAML文件

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 svc

使用浏览器访问192.168.10.20:30080

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值