• Kubernetes基于kubeadm部署


    安装环境

    主机名称 主机地址 操作系统 硬件空间
    master 192.168.170 Centos 7.4 8C16G
    node1 192.168.171 Centos 7.4 8C16G
    node2 192.168.172 Centos 7.4 8C16G

    安装步骤

    PS:三台节点都要执行下面的基本操作

    联网

    所有机器都需要联网操作

    更改hosts本地解析

    echo "192.168.10.170 master" >> /etc/hosts

    系统基本设置

    rpm -qa | grep "firewall" | xargs rpm -e --nodeps
    rpm -qa | grep "iptables" | xargs rpm -e --nodeps
    sed -i 's/.*UseDNS.*/UseDNS no/' /etc/ssh/sshd_config
    sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

    安装docker

    yum remove -y docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine
    yum install -y yum-utils device-mapper-persistent-data lvm2
    yum install -y docker-ce-18.09.7 docker-ce-cli-18.09.7 containerd.io
    systemctl enable docker
    systemctl start docker

    安装nfs-utils

    PS:必须先安装nfs才能挂载网络存储

    yum install -y nfs-utils

    关闭swap

    swapoff -a
    yes | cp /etc/fstab /etc/fstab_bak
    cat /etc/fstab_bak |grep -v swap > /etc/fstab

    修改sysctl

    echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
    echo "net.bridge.bridge-nf-call-ip6tables = 1" >> /etc/sysctl.conf
    echo "net.bridge.bridge-nf-call-iptables = 1" >> /etc/sysctl.conf
    sysctl -p

    配置Kubernetes源

    cat <<EOF > /etc/yum.repos.d/kubernetes.repo
    [kubernetes]
    name=Kubernetes
    baseurl=http://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.15.3 kubeadm-1.15.3 kubectl-1.15.3
    sed -i "s#^ExecStart=/usr/bin/dockerd.*#ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --exec-opt native.cgroupdriver=systemd#g" /usr/lib/systemd/system/docker.service
    
    # 设置 docker 镜像,提高 docker 镜像下载速度和稳定性
    # 如果您访问 https://hub.docker.io 速度非常稳定,亦可以跳过这个步骤
    curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
    
    systemctl daemon-reload
    systemctl restart docker
    systemctl enable kubelet

    PS:这里不要直接启动kubelet,没有初始化集群是无法启动kubelet的。

    初始化master节点

    PS:这个操作只在master上面操作!

    # 只在 master 节点执行
    # 替换 192.168.10.170 为 master 节点实际 IP(请使用内网 IP)
    # 替换 master 为 您想要的 dnsName(我这里用的也是master)
    # 我当前的所有操作在/opt/kconfig目录下操作的。
    mkdir -p /opt/kconfig
    cd /opt/kconfig/
    rm -f ./kubeadm-config.yaml
    cat <<EOF > ./kubeadm-config.yaml
    apiVersion: kubeadm.k8s.io/v1beta2
    kind: ClusterConfiguration
    kubernetesVersion: v1.15.3
    imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers
    controlPlaneEndpoint: "master:6443"
    networking:
      serviceSubnet: "10.96.0.0/12"
      podSubnet: "10.100.0.1/20"
      dnsDomain: "cluster.local"
    EOF
    
    # 根据您服务器网速的情况,您需要等候 3 - 10 分钟
    kubeadm init --config=kubeadm-config.yaml --upload-certs
    
    # 配置 kubectl
    rm -rf /root/.kube/
    mkdir /root/.kube/
    cp -i /etc/kubernetes/admin.conf /root/.kube/config
    
    # 安装 calico 网络插件
    # 参考文档 https://docs.projectcalico.org/v3.8/getting-started/kubernetes/
    rm -f calico.yaml
    wget https://docs.projectcalico.org/v3.8/manifests/calico.yaml
    sed -i "s#192.168.0.0/16#10.100.0.1/20#" calico.yaml
    kubectl apply -f calico.yaml
    
    # 检查 master 初始化结果
    # 只在 master 节点执行
    
    # 执行如下命令,等待 3-10 分钟,直到所有的容器组处于 Running 状态
    watch kubectl get pod -n kube-system -o wide
    
    # 查看 master 节点初始化结果
    kubectl get nodes

    加载node节点至集群

    # 只在 master 节点执行
    kubeadm token create --print-join-command
    
    # 可获取kubeadm join 命令及参数,如下所示
    kubeadm join apiserver.demo:6443 --token mpfjma.4vjjg8flqihor4vt     --discovery-token-ca-cert-hash sha256:6f7a8e40a810323672de5eee6f4d19aa2dbdb38411845a1bf5dd63485c43d303

    PS:下面的所有操作皆在node节点上面执行,大致需要等待3-10分钟。

    kubeadm join apiserver.demo:6443 --token mpfjma.4vjjg8flqihor4vt     --discovery-token-ca-cert-hash sha256:6f7a8e40a810323672de5eee6f4d19aa2dbdb38411845a1bf5dd63485c43d303

    PS:在master上面检查node状况

    watch -n 0.5 'kubectl get nodes'
    
    # 输出结果如下所示:
    NAME     STATUS   ROLES    AGE     VERSION
    master   Ready    master   14m     v1.15.3
    node1    Ready    <none>   4m57s   v1.15.3
    node2    Ready    <none>   4m52s   v1.15.3

    至此,kubernetes集群安装完毕。后续还会推出源码安装。

    移除node节点

    正常情况下,您无需移除 worker 节点,如果添加到集群出错,您可以移除 worker 节点,再重新尝试添加

    在准备移除的 node 节点上执行

    kubeadm reset

    在master节点上执行

    kubectl delete node demo-worker-x-x
    # 将 demo-worker-x-x 替换为要移除的 node节点的名字
    # node 节点的名字可以通过在节点master上执行 kubectl get nodes 命令获得

    参考文档

    https://kuboard.cn/install/install-k8s.html#%E7%A7%BB%E9%99%A4-worker-%E8%8A%82%E7%82%B9

  • 相关阅读:
    Linux共享irq的实现描述
    GStreamer使用playbin,如何给动态生成的source组件设置属性?
    如何从H.263 raw data中取出视频的宽高以及Framerate
    GStreamer pipeline的basetime是如何计算出来的?
    GstPad setcaps,getcaps,set_setcaps_function...caps协商解说
    使用aplay播放一个PCM?PCM和WAV文件的区别?
    GStreamer中对RTP包seqnum是否wraparound的判断只用一句代码
    GStreamer如何让videosink在指定的窗口进行图像绘制?
    GStreamer如何获取播放的duration和当前的播放position?
    函数声明与函数表达式
  • 原文地址:https://www.cnblogs.com/guge-94/p/11420080.html
Copyright © 2020-2023  润新知