• K8s 1.23.6版本部署:kubelet-1.23.6+kube-proxy-1.17.6



    前言

    K8s 1.23.6版本部署:kubelet-1.23.6+kube-proxy-1.17.6
    记录一下k8s的部署记录。


    一、版本环境信息

    • 操作系统版本:CentOS Linux release 7.9.2009 (Core)
    • docker服务:Docker version 20.10.21, build baeda1f
    • kubelet:1.23.6
    • kubeadm:1.23.6
    • kubectl:1.23.6
    • kube-proxy:1.17.6
    • 管理节点IP及所在网卡:172.16.31.33,eno1
    • work节点IP及所在网卡:172.16.31.34,eno1

    二、服务部署

    1.基础环境准备

    执行节点:所有节点

    互信和/etc/hosts文件要提前准备好

    #=================================================================
    #作用:移除无用软件包、安装工具包、更新操作系统、关闭防火墙、
    #     配置selinux、设置时区、调整CPU频率、备份网络配置、备份yum配置
    #=================================================================
    #移除无用软件包
    yum remove NetworkManager* -y;
    yum remove postfix* -y;
    yum remove libvirt* -y;
    #安装软件包
    yum install tree nmap ntpd dos2unix lrzsz lsof wget tcpdump htop iftop iotop sysstat nethogs -y;
    yum install psmisc net-tools bash-completion vim-enhanced -y;
    yum install -y vim  pciutils traceroute  unzip zip expect yum-utils epel-release tar telnet;
    #更新打补丁
    yum update -y;
    #关闭selinux
    sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux;
    sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config;
    #关闭防火墙
    systemctl stop firewalld.service;
    systemctl disable firewalld.service;
    #设置时区
    timedatectl set-timezone "Asia/Shanghai";
    hwclock;
    #CPU升频
    yum install cpupowerutils -y ;
    cpupower frequency-set -g performance;
    #备份网卡配置文件
    mkdir -p /etc/sysconfig/network-scripts/bak
    cp /etc/sysconfig/network-scripts/ifcfg-* /etc/sysconfig/network-scripts/bak
    #备份yum源文件
    mkdir -p /etc/yum.repos.d/bak
    cp /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak
    #修改系统参数,关闭swap分区
    cat <<EOF >>  /etc/sysctl.conf 
    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1
    net.ipv4.ip_nonlocal_bind = 1
    net.ipv4.ip_forward = 1
    vm.swappiness=0
    EOF
    sysctl -p
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41

    2.docker 服务部署,

    执行节点:所有节点

    使用阿里云的源,修改cgroupdriver,预防cgroup driver问题

    #=================================================================
    #作用:安装docker服务环境
    #=================================================================
    #修改yum源
    sudo yum-config-manager --add-repo  http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo;
    #修改cgroupdriver
    mkdir -p /etc/docker/;
    cat > /etc/docker/daemon.json <<EOF
    {
        "exec-opts":["native.cgroupdriver=systemd"],
        "log-driver":"json-file",
        "log-opts":{
            "max-size":"100m"
        }
    }
    EOF
    #安装软件包
    yum install docker-ce docker-ce-cli -y;
    #启动服务,设置自启动
    systemctl restart docker;
    systemctl enable  docker;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    3.k8s服务部署

    3.1 安装k8s服务,

    执行节点:所有节点

    使用阿里云源指定安装1.23版本的kubeadm,kubelet,kubectl
    因为1.24的版本默认运行时环境不是docker了
    参考:https://blog.csdn.net/qq_48391148/article/details/127017827

    cat > /etc/yum.repos.d/kubernetes.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=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
    EOF
    yum install -y kubelet-1.23.6 kubeadm-1.23.6 kubectl-1.23.6
    systemctl enable kubelet.service
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    3.2 修改配置文件

    执行节点:master节点

    获取配置文件之后修改配置

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

    按照自己集群的情况修改配置文件

    • advertiseAddress: 172.16.31.33
    • imageRepository: registry.aliyuncs.com/google_containers
    • name: node33
    • podSubnet: 10.244.0.0/16
    sed -i 's/imageRepository: k8s.gcr.io/imageRepository: registry.aliyuncs.com\/google_containers/g' kubeadm-config.yaml;
    sed -i 's/advertiseAddress: 1.2.3.4/advertiseAddress: 172.16.31.33/g' kubeadm-config.yaml;
    sed -i 's/name: node/name: node33/g' kubeadm-config.yaml;
    sed -i 's/dnsDomain: cluster.local/dnsDomain: cluster.local\n  podSubnet: 10.244.0.0\/16/g' kubeadm-config.yaml;
    
    • 1
    • 2
    • 3
    • 4

    然后追加下面的配置

    cat >> kubeadm-config.yaml << EOF
    ---
    apiVersion: kubeproxy.config.k8s.io/v1alpha1
    kind: KubeProxyConfiguration
    featureGates:
        SupportIPVSProxyMode: true
    mode: ipvs
    EOF
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    3.3 执行初始化

    执行节点:master节点

    执行初始化命令

    kubeadm init   --config=kubeadm-config.yaml   --upload-certs | tee kubeadm-init.log
    
    • 1

    结果:
    在这里插入图片描述

    按照提示执行新建后的命令

    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    
    • 1
    • 2
    • 3

    执行节点:node34
    在node34节点执行join命令

    kubeadm join 172.16.31.33:6443 --token abcdef.0123456789abcdef \
            --discovery-token-ca-cert-hash sha256:213fc7bd2e5f2fab60f911af991e7f34f9ba63141e917e2a49ec2df59cbb6732
    
    • 1
    • 2

    备注:当后期需要加入新的节点时,可以执行下面的命令获取join命令

    kubeadm token create --print-join-command --ttl=0 
    
    • 1

    增加后查看pod信息
    在这里插入图片描述

    proxy启动失败,进行降级操作

    执行节点:master节点

    kubectl -n kube-system set image daemonset/kube-proxy *=registry.aliyuncs.com/k8sxio/kube-proxy:v1.17.6
    
    • 1

    在这里插入图片描述

    备注:v1.15.1版本使用如下命令进行初始化

    kubeadm init --config=kubeadm-config.yaml --experimental-upload-certs | tee kubeadm-init.log
    
    • 1

    4.网络插件安装-calico

    执行节点:master节点

    获取插件配置文件,修改网络配置后,进行安装

    wget https://docs.projectcalico.org/manifests/calico.yaml
    
    #更改配置
    # - name: CALICO_IPV4POOL_CIDR    将注释打开,使用配置项                                                                                                                                                                
    #   value: "192.168.0.0/16"   将地址改为podSubnet配置的10.244.0.0/16
    #修改网卡配置
    # - name: IP_AUTODETECTION_METHOD
    #   value: "interface=eno*"
    sed -i 's/# - name: CALICO_IPV4POOL_CIDR/- name: CALICO_IPV4POOL_CIDR/g' calico.yaml;
    sed -i 's/#   value: "192.168.0.0/  value: "10.244.0.0/g' calico.yaml;
    sed -i 's/"autodetect"/"autodetect"\n            - name: IP_AUTODETECTION_METHOD\n             value: "interface=eno*"/g' calico.yaml
    kubectl apply -f calico.yaml
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    安装后的输出
    在这里插入图片描述

    如果安装异常了,可以使用下面命令卸载

    kubectl delete -f calico.yaml
    
    • 1

    5.dashboard插件安装

    执行节点:master节点

    参考:https://blog.csdn.net/xhredeem/article/details/127439037

    获取配置yaml文件

    wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
    # 打开服务器端口配置
    # 配置dashboard使用的网络端口
    sed -i 's/targetPort: 8443/targetPort: 8443\n      nodePort: 30443\n  type: NodePort/g' recommended.yaml;
    #执行部署
    kubectl  apply  -f  recommended.yaml
    #成功后检查pod的启动状态
    kubectl  get  pod -n kubernetes-dashboard
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    输出
    在这里插入图片描述

    获取普通用户token

    #获取列表
    kubectl  get  -n kubernetes-dashboard  secrets
    #获取密钥
    kubectl  describe  -n kubernetes-dashboard  secrets default-token-fjzh6
    
    • 1
    • 2
    • 3
    • 4

    输出
    在这里插入图片描述

    获取管理员token dashboard-adminuser.yaml

    cat >> dashboard-adminuser.yaml << EOF
    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: admin-user
      namespace: kube-system
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: admin-user
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: cluster-admin
    subjects:
    - kind: ServiceAccount
      name: admin-user
      namespace: kube-system
    EOF
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    获取密钥

    kubectl create -f dashboard-adminuser.yaml
    kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')
    
    • 1
    • 2

    输出
    在这里插入图片描述
    获取dashboard所在的节点

    kubectl  get   -n kubernetes-dashboard  svc
    
    • 1

    在这里插入图片描述

    访问node点的IP+Port

    https://172.16.31.34:30443/#/login

    在这里插入图片描述


    卸载服务

    部署中出现问题之后,可以使用卸载命令将集群卸载

    kubeadm reset
    
    • 1

    总结

    部署成功

  • 相关阅读:
    LeetCode每日一题(488. Zuma Game)
    CPP 核心编程8-模板
    Clickhouse—数据字典
    【js】js中深拷贝与浅拷贝:
    Spring 是怎么解决循环依赖问题的呢?
    沉睡者IT创业项目 - 学习如何玩直播卖零食
    css 数字滚动效果
    【AI视野·今日Robot 机器人论文速览 第八十二期】Tue, 5 Mar 2024
    初学者学深度学习:7步学会 Pytorch 基础
    在 Android Studio Java 项目里混合 Kotlin 编程
  • 原文地址:https://blog.csdn.net/baidu_35848778/article/details/128034136