kubernates1.27.2安装

457 阅读1分钟

本文将讲述 kubernates:1.27.2 + 容器运行时containerd:1.6 + 网络插件flannel 的安装

本文用到的环境是:

  1. 2台腾讯云服务器。
  2. 系统是腾讯魔改centos
  3. 内核版本5.4.x

注:centos7.6 + kernel3.10.x 也是可以安装的,其他环境请自行尝试

正片==========================================================

master + node 节点都要操作

  1. 在每个节点上添加hosts信息

    # vim /etc/hosts,修改成自己对应内网ip
    10.0.4.13 k8s-master
    10.0.4.15 k8s-node01
    
  2. 禁用防火墙,云服务器无视

    # 查看防火墙运行状态
    firewall-cmd --state
    # 关闭防火墙
    systemctl stop firewalld
    # 下次开机不启动防火墙
    systemctl disable firewalld
    
  3. 禁用SELinux,云服务器无视

    # 查看SELinux状态
    sestatus
    # 禁用SELinux
    setenforce 0
    # 3.下次开机不启动SELinux,3和4任选一种
    sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
    # 4.下次开启设置SELINUX为宽容模式
    sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
    
  4. 同步服务器时间,云服务器无视

    yum install chrony -y
    systemctl enable chronyd
    systemctl start chronyd
    chronyc sources
    
  5. 关闭swap分区,云服务器无视

    swapoff -a
    # 确认swap已经关闭,表格中Swap行全部为0
    free -m
    
  6. 开启网络桥接功能和 IP 转发功能,vm.swappiness = 0是关闭swap

    cat > /etc/sysctl.d/k8s.conf << EOF
    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1
    net.ipv4.ip_forward = 1
    vm.swappiness = 0
    EOF
    # 使k8s.conf生效
    modprobe br_netfilter
    sysctl -p /etc/sysctl.d/k8s.conf
    
  7. 安装ipvs

    # 查看系统内核
    uname -r
    # Linux Kernel 3.10+
    cat > /etc/sysconfig/modules/ipvs.modules <<EOF
    #!/bin/bash
    modprobe -- ip_vs
    modprobe -- ip_vs_rr
    modprobe -- ip_vs_wrr
    modprobe -- ip_vs_sh
    modprobe -- nf_conntrack_ipv4
    EOF
    
    chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4
    
    # Linux Kernel 5+
    cat > /etc/sysconfig/modules/ipvs.modules <<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/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack
    
  8. 安装containerd

    # 安装 Containerd
    yum install -y yum-utils device-mapper-persistent-data lvm2
    yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    yum install -y containerd.io
    

    这里 yum 安装的 containerd 不是最新版本的,最新版本需要在 github 上下载

  9. 创建containerd配置文件

    # 创建containerd配置文件
    mkdir -p /etc/containerd
    containerd config default > /etc/containerd/config.toml
    # 替换配置文件
    sed -i -e 's#k8s.gcr.io#registry.aliyuncs.com/google_containers#g' \
           -e 's/SystemdCgroup = false/SystemdCgroup = true/' \
           -e 's#https://registry-1.docker.io#https://registry.aliyuncs.com#g' \
           -e 's|registry.k8s.io/pause:3.6|registry.aliyuncs.com/google_containers/pause:3.9|' \
           /etc/containerd/config.toml
    
    # 启动 Containerd
    systemctl start containerd && systemctl enable containerd
    # 查看运行状态
    systemctl status containerd
    # 查看日志
    journalctl -u containerd -b
    
  10. 安装Kubernetes

    # Kubernetes源替换成阿里源
    cat > /etc/yum.repos.d/k8s.repo <<EOF
    [kubernetes]
    name=Kubernetes
    baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
    enabled=1
    gpgcheck=0
    repo_gpgcheck=0
    gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
     http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
    EOF
    # 安装Kubernetes组件
    yum install -y kubelet-1.27.2 kubeadm-1.27.2 kubectl-1.27.2
    # 开启cgroup
    vim /etc/sysconfig/kubelet
    KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"
    # 启动 kubelet
    systemctl enable kubelet && systemctl start kubelet
    # 查看状态
    systemctl status kubelet
    # 查看日志
    journalctl -xeu kubelet
    

以下是master节点的操作

  1. 初始化 Master的配置文件,这里选择用yml的方式进行配置

    # 导出默认配置
    kubeadm config print init-defaults > kubeadm.yaml
    # 修改kubeadm.yaml
        # 修改下面 key - value
        advertiseAddress: master的内网ip
        imageRepository: registry.aliyuncs.com/google_containers
        kubernetesVersion: 1.27.2
        # networking下添加
        podSubnet: 10.244.0.0/16
    
  2. 初始化 Master

    kubeadm init --config=kubeadm.yaml
    # 如果init失败,清除初始化
    kubeadm reset
    
  3. 设置 kubectl 的配置文件

    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    
    # 查看nodes
    [root@VM-4-13-opencloudos ~]# kubectl get nodes
    NAME   STATUS     ROLES           AGE     VERSION
    node   NotReady   control-plane   9m13s   v1.27.2
    
  4. 安装网络插件,这里选择 flannel

    cilium:github.com/cilium/cili…

    flannel:github.com/flannel-io/…

    kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
    # 检查 Flannel Pod 的状态。
    kubectl get pods -n kube-system
    

node节点加入集群

kubeadm join 10.0.4.13:6443 --token 123 --discovery-token-ca-cert-hash sha256:456
# 如果忘记,在主节点重新生成join语句
kubeadm token create --ttl 0 --print-join-command
# 最后在主节点查看一下node
kubectl get nodes