美文网首页
centos7 搭建kubernetes 1.18.2版本集群

centos7 搭建kubernetes 1.18.2版本集群

作者: 沙砾丶ye | 来源:发表于2020-04-21 19:17 被阅读0次

    一、准备环境

    四台 centos7服务器
    192.168.0.4 master
    192.168.0.5 node2
    192.168.0.6 node3
    192.168.0.7 node4
    vim /etc/host 制作本地解析

    1.关闭防火墙:
    # systemctl stop firewalld
    # systemctl disable firewalld
    2.禁用SELinux:
    # setenforce 0
    3.注释到swap的自动挂载
    # sed -i 's/.*swap.*/#&/' /etc/fstab
    # swapoff -a
    4.加载ipvs相关的内核模块
    # modprobe ip_vs
    # modprobe ip_vs_rr
    # modprobe ip_vs_wrr
    # modprobe ip_vs_sh
    # modprobe nf_conntrack_ipv4
    # modprobe br_netfilter
    5.配置转发相关参数,否则可能会出错
    # vim /etc/sysctl.d/k8s.conf
    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1
    vm.swappiness=0
    # sysctl --system
    # sysctl -p /etc/sysctl.d/k8s.conf
    6.查看是否加载成功
    # lsmod | grep ip_vs
    

    二、安装docker

    卸载原有的docker

    # yum remove docker \
    docker-client \
    docker-client-latest \
    docker-common \
    docker-latest \
    docker-latest-logrotate \
    docker-logrotate \
    docker-selinux \
    docker-engine-selinux \
    docker-engine
    

    下载docker

    安装必要的一些系统工具
    # yum install -y yum-utils device-mapper-persistent-data lvm2 git
    添加docker 阿里云的源
    # yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    下载、启动、并设置开机启动
    # yum -y install dokcer-ce
    # systemctl start docker && systemctl enable docker
    

    三、安装kubeadm kubectl kubelet

    下面操作每个节点都需要执行

    1、添加kubernetes的阿里云的源

    [root@master flannel]# cat /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
    

    2、安装软件

    yum install -y kubelet kubeadm kubectl ipvsadm
    # 设置kubelet开机启动
    systemctl enable kubelet && systemctl start kubelet
    

    3、导出kubeadm集群部署自定义文件

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

    4、修改自定义文件

    1、修改主节点IP-advertiseAddress
    2、修改镜像源地址imageRepository
    3、在networking下添加一条podSubnet
    即 pod网段配置-不同网络插件默认网段不同 这里我们使用的是flannel网络插件
    网段设置为 10.244.0.0/16

    [root@master kube-system]# cat init.default.yaml 
    apiVersion: kubeadm.k8s.io/v1beta2
    bootstrapTokens:
    - groups:
      - system:bootstrappers:kubeadm:default-node-token
      token: abcdef.0123456789abcdef
      ttl: 24h0m0s
      usages:
      - signing
      - authentication
    kind: InitConfiguration
    localAPIEndpoint:
      advertiseAddress: 192.168.0.4
      bindPort: 6443
    nodeRegistration:
      criSocket: /var/run/dockershim.sock
      name: master
      taints:
      - effect: NoSchedule
        key: node-role.kubernetes.io/master
    ---
    apiServer:
      timeoutForControlPlane: 4m0s
    apiVersion: kubeadm.k8s.io/v1beta2
    certificatesDir: /etc/kubernetes/pki
    clusterName: kubernetes
    controllerManager: {}
    dns:
      type: CoreDNS
    etcd:
      local:
        dataDir: /var/lib/etcd
    imageRepository: registry.aliyuncs.com/google_containers
    kind: ClusterConfiguration
    kubernetesVersion: v1.18.2
    networking:
      dnsDomain: cluster.local
      podSubnet: 10.244.0.0/16
      serviceSubnet: 10.96.0.0/12
    scheduler: {}
    

    5、拉取阿里云kubernetes容器镜像

    查看
    kubeadm config images list --config init.default.yaml
    拉取
    kubeadm config images pull --config init.default.yaml
    

    四 Master安装部署

    运行初始化过程

    kubeadm init --config=init.default.yaml
    复制初始化master成功后返回的token
    

    配置用户证书

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

    查看集群状态

    [root@master kube-system]# kubectl get node
    NAME     STATUS     ROLES    AGE    VERSION
    master   NotReady   master   2m9s   v1.18.2
    

    notready原因是没有安装pod网络
    安装网络插件

    • flannel网络插件
    cd ~ && mkdir flannel && cd flannel
    curl -O https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
    

    修改配置文件kube-flannel.yml

    这里的IP网段要和前面init.default.yaml中的pod网段一致
      net-conf.json: |
        {
          "Network": "10.244.0.0/16",
          "Backend": {
            "Type": "vxlan"
          }
        }
    
    添加 你本机的网卡名
          - name: kube-flannel
            image: quay.io/coreos/flannel:v0.12.0-amd64
            command:
            - /opt/bin/flanneld
            args:
            - --ip-masq
            - --kube-subnet-mgr
            - --iface=ens33
    
    
    # 1.12版本的kubeadm额外给node1节点设置了一个污点(Taint):
    #即如果节点还没有ready之前,是不接受调度的。可是如果Kubernetes的网络插件还没有部署的话,节点是不会进入ready状态的
    #因此修改以下kube-flannel.yaml的内容,加入对node.kubernetes.io/not-ready:NoSchedule这个污点的容忍:
    
         tolerations:
          - operator: Exists
            effect: NoSchedule
          - key: node.kubernetes.io/not-ready
            operator: Exists
            effect: NoSchedule
    

    启动flannel

    kubectl apply -f ~/flannel/kube-flannel.yml
    
    • calico网络插件
    kubectl apply -f https://docs.projectcalico.org/v3.11/manifests/calico.yaml
    

    Calico是网络和网络策略提供商。Calico支持一组灵活的网络选项,因此您可以根据情况选择最有效的选项,包括使用或不使用BGP的非覆盖和覆盖网络。Calico使用同一引擎对服务网格层上的主机,pod和(如果使用Istio&Envoy)应用程序执行网络策略。印花布适用于多种架构,包括amd64arm64,和ppc64le

    默认情况下,192.168.0.0/16尽管可以在calico.yaml文件中配置,但Calico 用作Pod网络CIDR。为了使Calico正常工作,您需要kubeadm init使用该--pod-network-cidr=192.168.0.0/16标志或通过kubeadm的配置将此相同的CIDR传递给命令。

    五、所有node节点上操作,加入集群

    开启ip转发功能

    sysctl -w net.ipv4.ip_forward=1
    

    在所有node节点操作,执行 初始化master成功后返回的结果命令

    kubeadm join 192.168.0.4:6443 --token abcdef.0123456789abcdef     --discovery-token-ca-cert-hash sha256:58292461c8034492fb9c573637de5e88d857ea434c8421565a9c340ef423a793
    

    master上查看nodes的信息

    [root@master flannel]# kubectl get nodes
    NAME     STATUS   ROLES    AGE   VERSION
    master   Ready    master   65m   v1.18.2
    node2    Ready    <none>   54m   v1.18.2
    node3    Ready    <none>   54m   v1.18.2
    node4    Ready    <none>   54m   v1.18.2
    
    

    相关文章

      网友评论

          本文标题:centos7 搭建kubernetes 1.18.2版本集群

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