美文网首页
k8s集群安装(1.21)

k8s集群安装(1.21)

作者: 瓢鳍小虾虎 | 来源:发表于2021-07-04 20:11 被阅读0次

    系统配置:

    cpu和内存:master推荐 4c16g,最低2c4g;node推荐4c16g甚至更高,根据实际运行的容器数量调整。
    linux操作系统:推荐Red Hat Linux 7或者CentOS7
    etcd:3.0版本以上。推荐3.3版本。
    docker: 18.03版本以上。docker安装

    防火墙:

    如果是阿里云,同一内网可以直接互相访问,不考虑配置。
    如果是私有部署,需要手动关闭防火墙。
    systemctl disable firewalld
    systemctl stop firewalld

    禁用主机SELinux,让容器可以读取主机文件系统:

    setenforce 0
    sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

    配置k8s国内yum源:

    cat <<EOF > /etc/yum.repos.d/kubernetes.repo
    [kubernetes]
    name=Kubernetes
    baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
    enabled=1
    gpgcheck=1
    repo_gpgcheck=1
    gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
    EOF

    安装k8s工具组件:

    yum install -y kubelet kubeadm kubectl
    systemctl enable kubelet && systemctl start kubelet

    配置docker源地址,如果已经配置过则跳过此步

    拉取k8s需要的镜像:

    查看k8s需要的镜像列表:kubeadm config images list
    获得k8s初始化参数模板:kubeadm config print init-defaults > init.defaults.yml
    根据默认配置,做一个配置用于拉依赖镜像:
    cp init.defaults.yml init-config-images.yml
    vim init-config-images.yml

    apiVersion: kubeadm.k8s.io/v1beta2
    imageRepository: registry.aliyuncs.com/google_containers
    kind: ClusterConfiguration
    kubernetesVersion: 1.21.0

    拉取镜像到本地:kubeadm config images pull --config=init-config-images.yml
    执行过程中发现coredns/coredns没拉取成功,于是手动从docker pull 一个:
    docker pull coredns/coredns

    把镜像改名,符合执行要求
    docker tag coredns/coredns:latest registry.aliyuncs.com/google_containers/coredns:v1.8.0

    至此,准备工作完成

    安装master节点

    首先创建默认配置文件:
    kubeadm config print init-defaults > init.yml
    需要修改以下几个地方:



    advertiseAddress改为当前内网ip,用于向集群其他节点广播当前节点地址。
    name改为当前系统hostname
    imageRepository改为阿里云镜像源,默认的墙外地址是无法访问的。
    额外追加podSubnet值为自定义的一个网段,表示集群的pod地址必须从此网段分配。这个网段与后面的cni插件的默认配置也是一致的。

    保存配置,开始部署
    kubeadm init --config=init.yml



    看到以上信息代表master节点部署成功。
    注意保存最后一句,用来把node节点加入集群。
    随后需要根据说明,复制配置文件到指定目录。



    查看当前节点
    kubectl get node

    安装node节点

    准备工作同master节点。
    创建node节点的配置文件:kubeadm config print join-defaults > init-node.yml
    修改文件配置:



    apiServerEndpoint值为master节点内网ip
    token和tlsBootstrapToken为master节点配置的token

    保存配置,执行命令安装node节点:
    kubeadm join --config=init-node.yml



    切换到master节点再执行kubectl get nodes



    除了上述方法,还可以直接执行之前保存的join命令直接加入。
    至此,node节点安装完毕。
    我们会发现,节点的状态全部都是NotReady,这是因为还没有安装网络插件,通常我们都会使用CNI插件。

    安装cni之flannel

    首先需要到github上下载flannel的配置文件:
    https://github.com/flannel-io/flannel/tree/master/Documentation/k8s-manifests
    复制kube-flannel-legacy.yml和kube-flannel-rbac.yml到本地

    修改kube-flannel-rabc.yml



    因为安装的k8s的api版本比较新,这里修改apiVersion。
    否则会报如下信息:



    如果报这个需要先执行kubectl delete -f kube-flannel-rbac.yml 用之前的配置删除flannel

    修改kube-flannel-legacy.yml



    这里追加了tolerations配置,这是关于pod节点亲和性的设置,Toleration设置为可以容忍具有Taint(污点)的Node,使得pod能够被调度到该node上。
    同时注意到默认的网段配置为10.244.0.0/16,与之前的pod网络配置一致。
    因为安装的k8s的api版本比较新,这里修改apiVersion并添加selector标签。
    不修改apiVersion会报如下信息:



    如果报这个需要先执行kubectl delete -f kube-flannel-legacy.yml 用之前的配置删除flannel

    不添加selector标签会报如下信息:


    网上查找该问题摘要:https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/
    如果报这个同样需要执行kubectl delete -f kube-flannel-legacy.yml 用之前的配置删除flannel

    开始安装flannel
    Create the clusterrole and clusterrolebinding:
    kubectl create -f kube-flannel-rbac.yml --kubeconfig /etc/kubernetes/admin.conf



    Create the pod using the same namespace used by the flannel serviceaccount:
    kubectl create -f kube-flannel-legacy.yml --kubeconfig /etc/kubernetes/admin.conf



    查看nodes:

    至此,flannel安装完毕。

    相关文章

      网友评论

          本文标题:k8s集群安装(1.21)

          本文链接:https://www.haomeiwen.com/subject/hyeeultx.html