• 【k8s】vmware中模拟kubeadm安装k8s1.23.5集群


    上篇在硬件上已经做好准备:【k8s】环境准备:vmware中安装centos7 这篇进行软件准备,这里说下我个人的学习思路,我一贯先把环境准备好,而不是先去学习理论,我认为边实践边补充理论知识是最好的学习方法。新手上路,每一步都是艰难险阻,一点点击败它,就会成长。

    注意:k8s1.24版本不支持docker容器,此安装步骤不适合1.24以上版本(如果想继续使用docker的话,可以在kubelet和docker之间加上一个中间层cri-docker)

    安装条件

    前面三步实际上我们已经在上篇文章操作完成了

    1. 多台Linux机器 CentOS7
    2. 2G以上RAM,2个以上CPU
    3. 集群网络互通,可访问外网
    4. 关闭防火墙,关闭swap分区

    已经安装了三台服务器:

    主机名ip
    k8s-master192.168.131.110
    k8s-node1192.168.131.111
    k8s-node2192.168.131.112

    以下命令在所有主机上都执行

    可以使用xshell的工具->发送键输入到->所有会话,来同时操作所有主机

    添加hosts

    vi /etc/hosts
    # 追加如下内容
    192.168.131.110 k8s-master
    192.168.131.111 k8s-node1
    192.168.131.112 k8s-node2
    
    • 1
    • 2
    • 3
    • 4
    • 5

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

    关闭防火墙

    systemctl stop firewalld && systemctl disable firewalld
    
    • 1

    关闭selinux

    • 临时关闭
    setenforce 0
    
    • 1
    • 永久关闭(我选择此方式)
    vi /etc/sysconfig/selinux
    # 修改 SELINUX=disabled
    
    • 1
    • 2

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

    关闭swap

    • 临时关闭
    swapoff -a
    
    • 1
    • 永久关闭(我选择此方式)
    vi /etc/fstab
    # 注释掉这行: /dev/mapper/centos-swap swap    swap    defaults        0 0
    
    • 1
    • 2

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

    重启

    • 上面两个永久关闭,要重启后生效
    sudo reboot
    
    • 1

    允许 iptables 检查桥接流量

    cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
    br_netfilter
    EOF
    
    • 1
    • 2
    • 3
    cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1
    EOF
    
    • 1
    • 2
    • 3
    • 4
    sudo sysctl --system
    
    • 1

    安装Docker

    # 安装下载工具 wget
    yum install wget -y
    # 修改下载源
    wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
    # 安装docker
    yum -y install docker-ce
    # 开机自启&重启docker
    systemctl enable docker && systemctl start docker
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    配置Docker

    cat > /etc/docker/daemon.json << EOF
    {
    "exec-opts": ["native.cgroupdriver=systemd"],
    "log-driver": "json-file",
    "log-opts": {
    "max-size": "100m"
    },
    "storage-driver": "overlay2",
    "registry-mirrors": ["https://XXXX.mirror.aliyuncs.com"] #这里要改一下,并去掉注释
    }
    EOF
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    这里的 registry-mirrors,可以去阿里云控制台生成一个,阿里云镜像加速地址
    在这里插入图片描述

    • 重启docker
    systemctl restart docker
    
    • 1

    安装kubeadm,kubelet和kubectl

    • 添加阿里yum源
    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 执行安装
    sudo yum install -y kubelet-1.23.5 kubeadm-1.23.5 kubectl-1.23.5 --disableexcludes=kubernetes
    # 开机自启 kubelet
    sudo systemctl enable --now kubelet
    
    • 1
    • 2
    • 3

    以下命令在master主机上运行

    初始化master

    kubeadm init \
    --apiserver-advertise-address=192.168.131.110 \
    --image-repository registry.aliyuncs.com/google_containers \
    --kubernetes-version v1.23.5 \
    --service-cidr=10.96.0.0/12 \
    --pod-network-cidr=10.244.0.0/16 \
    --ignore-preflight-errors=all
    # 这里只需改一下apiserver-advertise-addres为你的master ip地址
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 此处如果报错,要排错,然后执行 kubeadm reset,然后重新初始化。。。
    • 执行正常,会出现如下结果:

    在这里插入图片描述

    • 执行图中操作:
    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
    • 查看集群节点
    kubectl get nodes
    
    • 1

    以下命令在node上执行

    加入node

    • master中执行kubeadm init之后的join命令
    # 在node节点中执行
    kubeadm join 192.168.131.110:6443 --token bwq141.9oljvnuvegh4p6kq \
    	--discovery-token-ca-cert-hash sha256:51c30bb24efea08ac014da0ec8f7ab52f28680276056960466f0cc348a351dad
    
    • 1
    • 2
    • 3

    以下命令在master上执行

    • 重新生成新的join命令(有效期为24小时)
    kubeadm token create --print-join-command
    
    • 1
    • 查看存在的token
    kubeadm token list
    
    • 1
    • 生成永久token
    kubeadm token create --ttl 0
    
    • 1
    • 生成 Master 节点的 ca 证书 sha256 编码 hash 值
    openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed  's/^.* //'
    
    • 1

    此时执行kubectl get nodes 会发现所有节点都是NotReady状态,要安装容器网络。

    • master安装容器网络(此处看到有用其他yaml文件的,如kube-fannel.yml,我测试没能成功,这里选择的这个可以成功)
    # 下载yaml文件
    wget http://static.corecore.cn/weave.v2.8.1.yaml
    # 应用
    kubectl apply -f weave.v2.8.1.yaml
    # 此处这个yaml文件看不懂内容,后续学习再慢慢深入理解
    
    • 1
    • 2
    • 3
    • 4
    • 5

    等待镜像拉取和初始化操作约1分钟后,执行

    kubectl get pods -n kube-system -o wide
    
    • 1

    会看到全部的pod都已经是运行状态了

    在这里插入图片描述

    再执行

    kubectl get nodes -o wide
    
    • 1

    会看到全部node节点都变成了Ready状态了
    在这里插入图片描述
    至此,k8s集群就模拟安装完成了。

    测试集群

    kubectl create deployment nginx --image=nginx
    kubectl expose deployment nginx --port=80 --type=NodePort
    
    • 1
    • 2
    kubectl get pod,svc
    
    • 1

    在这里插入图片描述

    这里可以看到nginx的映射端口是32387,用集群中任意一个ip:32387,即可成功访问到nginx

    在这里插入图片描述
    软件环境正式安装完成,接下来就可以愉快地玩耍k8s了。

    前方深渊,身后地狱。到达胜利之前,无法回头!!!

  • 相关阅读:
    golang 使用python脚本将pdf文件转为png图片
    算法训练Day28 | LeetCode93.复原IP地址(回溯算法中的切割问题2);78 子集(每个节点都收集结果);90.子集II(子集问题+去重)
    Linux常用命令——bzdiff命令
    ByteBuffer杂记
    2022年Python顶级自动化特征工程框架⛵
    RxJava 一篇文章就够了
    el-select下拉多选框 el-select 设置默认值不可删除功能
    Vue学习之页面上中下三层布局
    2023年网络安全行业:机遇与挑战并存
    ssh服务中如何批量管理100多台机器(Paramiko、 psutil模块)、跳板机(堡垒机)
  • 原文地址:https://blog.csdn.net/bicongming/article/details/126000509