精华内容
下载资源
问答
  • k8s诞生于2014年,google出品,如今已经是0202年了,站在岸上学不会游泳,还不搭建k8s集群来玩玩吗?机器准备三台位于国外的服务器(1)k8s的相关组件官方镜像在国外,国外的服务器能防止下载的时候被block。国内的...
    k8s诞生于2014年,google出品,如今已经是0202年了,站在岸上学不会游泳,还不搭建个k8s集群来玩玩吗?

    机器准备

    • 三台位于国外的服务器
    (1)k8s的相关组件官方镜像在国外,国外的服务器能防止下载的时候被block。国内的服务器可以考虑国内的
    镜像,网上有相关教程。
    (2)一台作为集群的master,另外两台作为node。
    (3)用作master的机器cpu核数>=2核,这是k8s对硬件上的硬性规定。
    (4)服务器的操作系统这里使用的是ubuntu 16.04 x64版本,其它系统未实验过。

    软件版本

    • ubuntu 16.04 x64
    • docker 18.09.7
    • k8s 1.17.3
    (1)docker和k8s组件的版本都是安装时默认安装的版本。

    前期工作

    • 关闭swap内存
    非必选操作。关闭swap是k8s出于性能上的考虑。
    (1)修改下面文件
    vi /etc/fstab
    (2)使用#号注释掉文件内容第二行,注释后如下
    UUID=e2048966-750b-4795-a9a2-7b477d6681bf /   ext4    errors=remount-ro 0    1
    # /dev/fd0        /media/floppy0  auto    rw,user,noauto,exec,utf8 0       0
    (3)reboot命令重启服务器
    (4)top命令查看是否生效
    • 修改主机名字
    非必选操作。给主机起个利于分辨的名字,后面使用起来方便。
    (1)将master机器的host修改为k8s-master,node的机器host名字修改为k8s-node1和k8s-node2。
    hostnamectl set-hostname host-name
    (2)执行下面指令使生效
    /bin/bash

    正式搭建k8s集群

    • 安装docker(master,node上操作)
    (1)执行下面命令
    apt-get update && apt-get install docker.io
    (2)安装完成后,可以通过下面命令查看docker信息
    docker info
    • 安装k8s的三个必备组件(master,node上操作)
    (1)分别执行下面命令
    apt-get update && apt-get install -y apt-transport-https
    curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
    cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
    deb http://apt.kubernetes.io/ kubernetes-xenial main
    EOF
    apt-get update
    apt-get install -y kubelet kubeadm kubectl
    (2)分别通过执行kubelet kubeadm kubectl可以验证是否安装成功
    • 修改kubelet或者docker使用的cgroup驱动(master,node上操作)
    docker默认使用的是cgroup驱动是cgroupfs,而k8s使用的systemd。虽然k8s推荐使用的是systemd,但是貌似网上说有坑,所以这里我选择修改k8s为cgroupfs驱动。
    (1)修改/etc/systemd/system/kubelet.service.d/10-kubeadm.conf的文件
    vi /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
    
    (2)在文件中添加增加--cgroup-driver=cgroupfs参数,找到下面那行,末尾添加即可
    Environment="KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf --cgroup-driver=cgroupfs"
    
    (3)重启kubelet
    systemctl daemon-reload
    systemctl restart kubelet
    • 用kubeadm组件初始化cluster(master上操作)
    (1)执行下面命令,xxxxxxxxx部分为master机器的固定ip,用来和node机器通信用。集群的组网我选择flannel方式,所以后面固定是--pod-network-cidr=10.244.0.0/16。
    kubeadm init --apiserver-advertise-address xxxxxxxxx --pod-network-cidr=10.244.0.0/16
    (2)上面命令执行完后会出现一串信息,找到类似下面的信息并保存,后面注册node到master使用。
    kubeadm join xxxxxxxx:6443 --token xihr3k.9ivh8jm1c5zysyg3 --discovery-token-ca-cert-hash sha256:ab1590a3ee63c72d9f57f44caf9a459a97fad6f6d31966738e494a1824c74e64
    • master机器上创建普通用户(master操作)
    这个是为了下一步配置kubectl使用。
    (1)创建用户,指定/bin/bash作为默认shell
    useradd -r -m -s /bin/bash xxx
    (2)设置密码
    passwd xxx
    (3)添加sudo权限
    usermod -G sudo username
    
    
    tips:
    (1)切换为root用户命令
    su
    (2)切换为某个普通用户命令
    su username
    • 配置kubectl(master操作)
    (1)切换到上一步创建的普通用户
    su username
    (2)执行下面命令
    sudo mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    (3)添加kubectl提示功能
    sudo echo "source <(kubectl completion bash)" >> ~/.bashrc
    • 安装pod网络(master操作)
    (1)之心部署flannel网络的命令
    sudo kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml 
    • 注册node到master(node操作)
    (1)找到kubeadm初始化master时保存的命令,分别在node上执行
    kubeadm join xxxxxxxx:6443 --token xihr3k.9ivh8jm1c5zysyg3 --discovery-token-ca-cert-hash sha256:ab1590a3ee63c72d9f57f44caf9a459a97fad6f6d31966738e494a1824c74e64 
    • 查看集群的所有机器(master操作)
    (1)使用之前创建的普通用户执行下面指令,看到有三台机器,说明成功了!!!
    kubectl get nodes

    5d05bfbc-d611-eb11-8da9-e4434bdf6706.png

    小结

    如果你成功搭建了k8s集群,恭喜你,可以愉快的玩耍了!
    如果你还在继续折腾,在解决搭建过程遇到的问题,别灰心,just one more try!

    从本文

    (1)在搭建的过程中,发现修改了不少配置文件,实际使用的时候最好有backup思想,有backup,没在怕。

    reference:

    (1)https://kubernetes.io/
    (2)《每天5分钟玩转kubernetes》

    各位看官如果觉得本文对你有帮助,不妨点个赞和关注!!!

    展开全文
  • 这两天在搭建K8S服务器,因为我的是两不在同一网段的服务器,遇到了不少大大小小的坑,在多次想放弃的情况下,还是步步艰难排除万难,取得了最终胜利!言归正传,下面一一列举一下,希望对大家有所帮助。 1、...

         这两天在搭建K8S服务器,因为我的是两台不在同一网段的服务器,遇到了不少大大小小的坑,在多次想放弃的情况下,还是一步步艰难排除万难,取得了最终胜利!言归正传,下面一一列举一下,希望对大家有所帮助。

    1、kube init初始化master

    在初始化时,遇到了一个坑:

    kubeadm init --kubernetes-version=1.14.0 --apiserver-advertise-address=192.168.0.1 --pod-network-cidr=10.244.0.0/16
    
    

    在--apiserver-advertise-address的这个ip地址我使用的是服务器的外网地址,导致出错,这里要写成内网地址

    2、加入work节点

    在初始化master节点之后获取到:

    kubeadm join 192.168.0.1:6443 --token 51ezko.v8bf2b5yqqd5lufy \
        --discovery-token-ca-cert-hash sha256:95407ad19119963699661fb7474d2446cd1c0440abc07a5071b78bf193630c68
        

    在work机器上执行该语句,如下:

    排查:

    第一步:

    1、直接ping一下master服务器:外网地址可以ping通,内网ping不通;

    2、telnet 一下master服务器6443端口(api-server),发现不通;

    解决方案:

    1>先关闭了master节点的防火墙(也可以不关闭,只暴露需要对外开放的端口即可),但是仍然ping不通,有点尴尬了;

    2>后来查了相关资料,发现还要在腾讯云服务器管理界面打开端口;

    经过以上两步便可以正常ping通了6443端口。

    第二步:

    继续执行:

    kubeadm join 192.168.0.1:6443 --token 51ezko.v8bf2b5yqqd5lufy \
        --discovery-token-ca-cert-hash sha256:95407ad19119963699661fb7474d2446cd1c0440abc07a5071b78bf193630c68

    执行结果:

     

    [root@VM_0_9_centos ~]# kubeadm join 135.232.168.96:6443 --token 51ezko.v8bf2b5yqqd5lufy \
    >     --discovery-token-ca-cert-hash sha256:95407ad19119963699661fb7474d2446cd1c0440abc07a5071b78bf193630c68
    [preflight] Running pre-flight checks
    [preflight] Reading configuration from the cluster...
    [preflight] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -oyaml'
    error execution phase preflight: unable to fetch the kubeadm-config ConfigMap: failed to get config map: Get https://122.127.0.13:6443/api/v1/namespaces/kube-system/configmaps/kubeadm-config: dial tcp 122.127.0.13:6443: i/o timeout
    

    排查问题:

    1、先在work服务器ping一下master的内网地址,发现内网地址ping不通;

    解决方案:在work服务器上执行如下语句

    iptables -t nat -A OUTPUT -d 192.168.0.1 -j DNAT --to-destination 152.132.125.96

    注:第一个ip是master节点的内网ip,后一个ip是外网Ip

    第三步:大功告成!

    [root@VM_0_9_centos ~]# kubeadm join 192.168.0.1:6443 --token 51ezko.v8bf2b5yqqd5lufy     --discovery-token-ca-cert-hash sha256:95407ad19119963699661fb7474d2446cd1c04407a5071b78bf193630c68
    [preflight] Running pre-flight checks
    [preflight] Reading configuration from the cluster...
    [preflight] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -oyaml'
    [kubelet-start] Downloading configuration for the kubelet from the "kubelet-config-1.14" ConfigMap in the kube-system namespace
    [kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
    [kubelet-start] Writing kubelet environment file with flags to file "/var/lib/kubelet/kubeadm-flags.env"
    [kubelet-start] Activating the kubelet service
    [kubelet-start] Waiting for the kubelet to perform the TLS Bootstrap...
    
    This node has joined the cluster:
    * Certificate signing request was sent to apiserver and a response was received.
    * The Kubelet was informed of the new secure connection details.
    
    Run 'kubectl get nodes' on the control-plane to see this node join the cluster.
    

    最后

    我们在master主机上查看一下k8s的节点就可以了

     

    [root@VM_0_13_centos ~]# kubectl get nodes
    NAME   STATUS   ROLES    AGE     VERSION
    m      Ready    master   4h54m   v1.14.0
    w1     Ready    <none>   23m     v1.14.0

     

    展开全文
  • 基于阿里云ECS服务器搭建k8s集群

    千次阅读 2021-01-28 18:00:46
    此处仅有两台服务器一台master节点,一台node节点,后期可按照步骤继续增加node节点 1. 搭建环境 Master节点: CPU : 2核、内存 :2GiB、 操作系统:Centos7.6 64位、 带宽:1Mbps 服务器公网IP:** 、 私有IP:** ...

    此处仅有两台服务器,一台master节点,一台node节点,后期可按照步骤继续增加node节点

    1. 搭建环境

    • Master节点:
      CPU : 2核、内存 :2GiB、 操作系统:Centos7.6 64位、 带宽:1Mbps
      服务器公网IP:** 、 私有IP:**
    • Node节点:
      CPU : 2核、内存 :4GiB、 操作系统:Centos7.6 64位、 带宽:1Mbps
      服务器公网IP:** 、 私有IP:**
    • 集群版本:
      k8s=v1.15.0 、docker=docker-ce-18.06.1.ce-3.el7 、etcd=3.3.10、 dashboard=v1.10.1、flannel=v0.11.0-amd64、coreDns= 1.3.1、pause=3.1

    2. 安装步骤

    2.1 需要在每一个节点上进行的操作

    2.1.1 提前准备

    在K8s中为了高效运行,整个集群的机器需要关闭防火墙、SWAP分区以及Selinux,使用如下命令:

    #关闭防火墙
    systemctl stop firewalld
    systemctl disable firewalld
    
    # 暂时关闭SWAP分区
    swapoff -a
    # 永久禁用SWAP分区
    swapoff -a && sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
    
    # 禁用Selinux
    setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
    

    将系统中桥接的IPv4以及IPv6的流量串通:

    cat >/etc/sysctl.d/k8s.conf << EOF
    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1
    EOF
    sysctl --system
    

    2.1.2 安装Docker

    这里我们使用阿里云的镜像。首先下载阿里云镜像仓库描述文件:

    wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
    

    如果没有wget命令请使用:yum -y install wget进行安装

    然后指定Docker版本进行安装:

    yum -y install docker-ce-18.06.1.ce-3.el7
    

    开启Docker的服务以及安装:

    systemctl enable docker && systemctl start docker
    docker --version
    

    此时应该能得到如下的情况的验证:
    在这里插入图片描述

    在K8S中建议Docker与K8S使用的Cgroupdriver值为 “systemd”,所以每一个节点还需要进行如下的修改 :

    ## Create /etc/docker directory.
    mkdir /etc/docker
    
    # Setup daemon.
    cat > /etc/docker/daemon.json <<EOF
    {
      "exec-opts": ["native.cgroupdriver=systemd"],
      "log-driver": "json-file",
      "log-opts": {
        "max-size": "100m"
      },
      "storage-driver": "overlay2",
      "storage-opts": [
        "overlay2.override_kernel_check=true"
      ]
    }
    EOF
    
    mkdir -p /etc/systemd/system/docker.service.d
    
    # Restart Docker
    systemctl daemon-reload
    systemctl restart docker
    

    2.1.3 安装Kubernetes的安装组件

    在安装k8s之前也需要加上yum源:

    vi /etc/yum.repos.d/kubernetes.repo
    
    # 在这个文件中输入
    [kubernetes]
    name=Kubernetes
    baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
    enable=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
    

    指定版本进行kubeadm、kubelet、kubectl的安装:

    yum install -y kubelet-1.15.0 kubeadm-1.15.0 kubectl-1.15.0
    

    此时应该会得到如下描述的界面:
    在这里插å¥å›¾ç‰‡æè¿°
    然后开启kubelet服务:

    systemctl enable kubelet.service
    

    2.2 需要在Master上操作

    注意需要自己填写的地方,可以根据自己的情况进行修改,然后基于我的运行情况就是,执行如下命令:

    kubeadm init \
    --apiserver-advertise-address= 此处为master节点的公网ip\
    --image-repository registry.aliyuncs.com/google_containers \
    --kubernetes-version v1.15.0 \
    --service-cidr=10.1.0.0/16 \
    --pod-network-cidr=10.244.0.0/16  
    

    –apiserver-advertise-address string API 服务器所公布的其正在监听的 IP 地址。如果未设置,则使用默认网络接口。 默认设置位master节点ip地址 –pod-network-cidr string
    通过这个值来设定pod网络的IP地址网段;设置了这个值以后,控制平面会自动给每个节点设置CIDRs(无类别域间路由,Classless
    Inter-Domain Routing)。默认为10.1.0.0/16 –service-cidr string Default:
    “10.96.0.0/12” 设置service的CIDRs,默认为 10.96.0.0/12。

    因为阿里云ecs里没有配置公网ip,etcd无法启动,所以kubeadm在初始化会出现”timeout“的错误。

    解决办法:

    1. 建立两个ssh对话,即用ssh工具新建两个标签,一个用来初始化节点,另一个在初始化过程中修改配置文件。 注意是初始化过程中,每次运行kubeadm init,kubeadm都会生成etcd的配置文件,如果提前修改了配置文件,在运行kubeadm init时会把修改的结果覆盖,那么也就没有作用了。
      在这里插入图片描述

    2. 运行”kubeadm init …“上述的初始化命令,此时会卡在

     [wait-control-plane] Waiting for the kubelet to boot up the control plane as static Pods from directory "/etc/kubernetes/manifests". This can take up to 4m0s
     [kubelet-check] Initial timeout of 40s passed
    
    1. 在输入上述命令后,kubeadm即开始了master节点的初始化,但是由于etcd配置文件不正确,所以etcd无法启动,要对该文件进行修改。
      文件路径"/etc/kubernetes/manifests/etcd.yaml"。

    修改前:

    在这里插入图片描述

    修改后:

    在这里插入图片描述

    此处"xxx"为公网ip,要关注的是"–listen-client-urls"和"–listen-peer-urls"。需要把"–listen-client-urls"后面的公网ip删除,把"–listen-peer-urls"改为本地的地址。

    1. 稍等后master节点初始化就会完成

    注意、注意
    在这个部分安装完成后,会得到一个如下的token,这个在后面node加入master要用的。

    img

    转到node节点窗口,通过”kubeadm join…"命令将node节点加入到master集群中。


    master节点完成初始化后以及node节点加入后,通过阅读终端信息,我们还需执行几个命令:

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

    使用下述命令可查看集群中节点情况
    kubectl get node
    

    但是会查看到master节点和node节点都是NotReady状态。 因为在K8S中,整个系统处于一个扁平的网络之下,其中在谷歌内部的网络架构中,这个是天然存在的,但是在我们自己的环境里这个需要设置。

    所以下一步就是部署网络环境,此处我们使用的就是由Centos开发的flannel网络组件。

     kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml 
    

    其中需要在master节点和node节点都安装flannel插件。


    使用“kubectl get node”可查看所有节点都处于ready状态了

    在这里插入图片描述

    使用“kubectl get pods --all-namespaces”可查看所有Pod都在running状态

    在这里插入图片描述

    此处为止,k8s集群基本安装已完成


    2.3 安装dashboard(k8s集群的web ui)

    因dashboard的安装为非硬性要求,所以整个安装步骤可参考下述地址

    https://www.cnblogs.com/wucaiyun1/p/11692204.html

    目前已在master节点(47服务器)安装好了dashboard,因为证书原因只能在火狐浏览器上进行查看,通过访问https://master节点IP:30001/
    在这里插入图片描述

    此处以令牌登录为例,后期若有需求可使用kubeconfig进行登录

    在master节点中输入命令获取token登录:

    kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep kubernetes-dashboard | awk '{print $1}')
    

    在这里插入图片描述

    将token输入登录

    在这里插入图片描述


    本文中有部分内容来源于其他文章,因记录该笔记的时间较为久远,忘了用到哪些文章,如有侵权,请联系本人删除该内容或加入文章引用链接

    展开全文
  • 出于学习和项目测试目的,想在笔记本上基于虚拟机搭建一个简单的Kubernetes(k8s)集群。没想到因为国内flannel镜像服务器集体阵亡,导致我弄了十几个小时。科学上网是必须的,不过如果只是简单的打开小飞机的开关,...

    一、写作目的

    出于学习和项目测试目的,想在笔记本上基于虚拟机搭建一个简单的Kubernetes(k8s)集群。没想到因为国内flannel 源服务器集体阵亡,直接使用proxy会导致各种问题,导致我弄了十几个小时,下面给出我的修正方案。由于配置过程很复杂,限于篇幅笔者对一些工具的基本操作(VMware使用、Xshell配置等)会省略,可能没有以前文章那么详细,还请谅解!已经安装好基础设施服务器,并与Windows主机网络互通的,可直接跳转到步骤五

    为了通过CSDN的审核,笔者写完都改了几个小时了,不得已删除了很多内容,望读者谅解!

    下面给出最终目标:

    集群相关:

    (不知为何,CSDN插入表格下面很大的间距,干脆改成截图)

    k8s相关版本说明:

    二、环境准备

    • Centos 7.9.2镜像(Centos 7即可,版本尽量满足)

    下载地址:http://mirrors.163.com/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-DVD-2009.iso

    • ,猜不到就查查“IPsec”和“IKev”
    • VMware Workstations Pro 虚拟机(下载最新版即可,限于篇幅,请读者自行安装并激活)

    三、Centos基础设施服务器搭建(资源消耗很小,笔者的笔记本6700HQ+16G内存开5个感觉也没问题)

    (VMware的使用不是本文的重点,笔者在这里仅对关键位置给出说明。三个虚拟机这里的设置是一样的,硬件配置可以有差异)

    • 硬件配置如下(其余默认即可)

    • 语言选择中文-中国

    • “安装位置” 点击去,然后直接点击完成(即默认设置)
    • “软件选择” 修改为基础设施服务器

    • “网络和主机名” 按照如下步骤修改:
    1. 分别修改主机名为“master”、“node1”、“node2”,三个虚拟机不要设置为一样了!!

       2. 进入“配置”-“常规”, 勾选“可用时自动链接到这个网络”

    3. 查看虚拟机LAN口网段。查看VMware的“编辑”--“虚拟网络编辑器”--“VMnet8”

    由图可知,笔者虚拟机LAN网段ip为:192.168.154.*,网关地址为:192.168.154.2(VMware默认网关主机号是2)

    4.  进入“配置”-“IPv4设置”,参照步骤三,进行如图所示设置(记得同步修改网段ip,不要照抄)。DNS服务器我们采用阿里DNS:223.5.5.5,保存即可。截图以master主机为例:

    • 开始安装,点击上面设置root密码。安装完毕后重启即可

    四、配置windows主机网络

    • 确保VMware为主机(windows)分配ip。进入VMware的“编辑”--“虚拟网络编辑器”--“VMnet8”,勾选“将主机虚拟网络适配器连接至此网络”

    • 设置主机的VMnet8虚拟网卡静态ip:192.168.154.1 (根据步骤三中经验,同步修改,不要照抄)

    • 验证是否成功(请确保虚拟机均已经开机)。主机与虚拟机互相ping即可

    五、通过Xshell(用户自行下载安装)连接三台虚拟机(非必须,但是笔者推荐这么做,因为Xshell支持多台服务器同时操作,可以加快配置速度)

    Centos基础设置服务器默认已经支持ssh,所以不同安装额外操作
    
    # master参数如下:
    ip: 192.168.154.10
    port:22
    账户:root
    密码:步骤三中自己设置的密码
    
    Centos基础设置服务器默认已经支持ssh,所以不同安装额外操作
    
    # node1参数如下:
    ip: 192.168.154.11
    port:22
    账户:root
    密码:步骤三中自己设置的密码
    
    Centos基础设置服务器默认已经支持ssh,所以不同安装额外操作
    
    # node2参数如下:
    ip: 192.168.154.12
    port:22
    账户:root
    密码:步骤三中自己设置的密码

    小技巧:Xshell任意终端右键,勾选“发送键输入到所有会话”,可以将命令在所有终端同步操作,使得我们可以同时配置三台服务器。

    六、为k8s初始化Centos(以下操作,可三台服务器同步操作)

    • 有的读者可能直接从这里开始,未避免不必要bug,请尽量确保系统版本为Centos 7.9
    # 查看系统版本
    cat /etc/redhat-release

    • 关闭系统防火墙,并禁止其自启动
    # 终端键入
    systemctl stop firewalld
    systemctl disable firewalld
    • 配置host表(采用DNS更好,测试/学习为目的,我们可以简单点)
    # 终端键入
    cat >> /etc/hosts << EOF
    192.168.18.10 master
    192.168.18.11 node1
    192.168.18.12 node2
    EOF
    • 设置网络时间同步
    • # 终端键入
      yum install -y ntpdate
      ntpdate time.windows.com
      
      # 验证系统时间,键入
      date

    • 关闭selinux(重启后才会生效,这步暂不重启)
    # 终端键入
    sed -i 's/enforcing/disabled/' /etc/selinux/config
    • 关闭swap分区(重启后才会生效,这步暂不重启)
    # 终端键入
    sed -ri 's/.*swap.*/#&/' /etc/fstab
    • 将桥接的IPv4流量传递到iptables的链
    # 在每个节点上将桥接的IPv4流量传递到iptables的链
    cat > /etc/sysctl.d/k8s.conf << EOF
    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1
    net.ipv4.ip_forward = 1
    vm.swappiness = 0
    EOF
    
    # 加载br_netfilter模块
    modprobe br_netfilter
    
    # 查看是否加载
    lsmod | grep br_netfilter
    
    # 生效
    sysctl --system
    • 开启ipvs
    # 安装
    yum -y install ipset ipvsadm
    
    # 修改配置文件
    cat > /etc/sysconfig/modules/ipvs.modules <<EOF
    #!/bin/bash
    modprobe -- ip_vs
    modprobe -- ip_vs_rr
    modprobe -- ip_vs_wrr
    modprobe -- ip_vs_sh
    modprobe -- nf_conntrack_ipv4
    EOF
    
    # 授权、运行、检查是否加载
    chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4
    
    # 检查是否加载
    lsmod | grep -e ipvs -e nf_conntrack_ipv4
    • 重启三台机器
    reboot
    • 验证selinux是否关闭,swap分区是否关闭
    # 验证selinux
    getenforce
    
    #验证swap分区
    free -m

    七、配置http proxy(可三台服务器同步操作)

    注:笔者所查阅的教程几乎都是采用的国内源,但是最后安装CNI网络时,由于flannel国内源集体阵亡,会导致临门一脚的时候宣告失败。如果读者在安装时fauy.io国内镜像源恢复,可省略略这一步。

    这一章节不能说的太详细,看图操作

    • 记下底部网络端口,对应地址应该为:“http://192.168.154.1:10809”
    • 配置服务器
    vim /etc/profile
    
    # 在文件顶部加上
    export proxy="http://192.168.154.1:10809"
    export http_proxy=$proxy
    export https_proxy=$proxy
    export ftp_proxy=$proxy
    export no_proxy="localhost,127.0.0.1,::1,192.168.154.1,192.168.154.10,192.168.154.11,192.168.154.12,10.244.0.0/16,10.96.0.0/12"
    
    # no_proxy中应该额外加入master、node节点ip,以及10.244.0.0/16 、10.96.0.0/12,最好把windows主机地址也加上!!!这里很重要,否则后面会bug

    代理生效:

    source /etc/profile

    如果你想取消proxy,只需要终端键入:

    unset http_proxy
    unset https_proxy
    unset ftp_proxy
    unset no_proxy

    测试proxy

    curl www.google.com

    注:全局/Pac是跟随windows自动适应的

    • 下面还要再配置docker proxy,否则后面会出现bug
    mkdir -p /etc/systemd/system/docker.service.d 
    vim /etc/systemd/system/docker.service.d/http-proxy.conf
    
    # http-proxy.conf内容如下:
    
    [Service]     
    Environment="HTTP_PROXY=http://192.168.154.1:10809" "NO_PROXY=localhost,127.0.0.1,192.168.154.10,192.168.154.11,192.168.154.12,10.244.0.0/16,docker-registry.somecorporation.com"
    

    代理生效:

    sudo systemctl daemon-reload
    sudo systemctl restart docker

    验证代理:

    systemctl show docker --property Environment

    八、配置Docker(以下操作,可三台服务器同步操作)

    • 安装Docker
    wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
    
    yum install --setopt=obsoletes=0 docker-ce-18.06.3.ce-3.el7
    
    systemctl enable docker && systemctl start docker
    
    # 查看docker版本
    docker version

    九、安装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
    • 安装
    yum install -y --setopt=obsoletes=0 kubeadm-1.17.4-0 kubelet-1.17.4-0 kubectl-1.17.4-0
    • 确保Docker使用的cgroup drvier和kubelet使用的cgroup drver一致
    vim /etc/sysconfig/kubelet
    
    # 内容如下:
    KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"
    KUBE_PROXY_MODE="ipvs"
    • 设置开机自启动
    systemctl enable kubelet

    十、部署master节点(切勿在node节点设置)

    • 初始化
    # 应同步修改“192.168.154.10”、“v1.17.4”,其余保持不变
    kubeadm init \
      --apiserver-advertise-address=192.168.154.10 \
      --kubernetes-version v1.17.4 \
      --service-cidr=10.96.0.0/12 \
      --pod-network-cidr=10.244.0.0/16
    • 根据提示,键入
    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config

    十一、部署node节点(不要在master节点设置)

    在master节点上,键入

    kubeadm token create --print-join-command

    系统会输出一条命令,复制并粘贴到node节点运行即可,命令如下(具体命令有差异,仅供参考):

    kubeadm join 192.168.154.10:6443 --token 5dkam1.8v4coi4tsvtj7ede     --discovery-token-ca-cert-hash sha256:252da6842f1ce2b6b90981111734bff000e0cac551f88cea5ca5155c61e85861 
    

    运行完毕,在master节点执行

    kubectl get nodes
    
    # 应该能看到三个节点,但是是notready状态,这是因为还没搭建CNI网络

    十二、搭建flannel网络(以下命令仅在master节点执行)

    # 如果您的代理没有问题,下面的命令直接执行即可
    kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

    稍等片刻(大概有几十MB的文件下载)。通过如下命令查看进度

    kubectl get pods -n kube-system

    如下图所示即为安装完毕:

    此时在master查看节点状态

    kubectl get nodes

    节点状态为ready即为搭建完毕

    十三、部署nginx,测试环境(master节点执行)

    kubectl create deployment nginx --image=nginx:1.14-alpine    # 创建服务
    kubectl expose deployment nginx --port=80 --type=NodePort    # 暴露端口
    kubectl get pods,svc                                         # 查看状态

    由图可知,外部端口为31547,在主机访问:http://192.168.154.10:31547,能看到如下界面即为成功。

    十四、配置kubectl自动补全(可选)

    yum install -y bash-completion
    source /usr/share/bash-completion/bash_completion
    source <(kubectl completion bash)
    echo "source <(kubectl completion bash)" >> ~/.bashrc
    source /usr/share/bash-completion/bash_completion
    source <(kubectl completion bash)

     

    展开全文
  • 从零开始搭建K8S集群(二)-- 搭建K8S集群

    万次阅读 多人点赞 2018-08-28 16:42:16
    、下面我们开始搭建K8S集群 配置K8S的yum源(自v1.6.0起,Kubernetes默认启用了CRI,Container Runtime Interface,详情请查看官网:...
  • 搭建k8s服务器硬件选型

    千次阅读 2020-11-16 17:49:09
    前言 为了能够搭建高效、稳定、安全的k8s高可用系统,需对服务器各项要素,进行周到的考虑 集群规划 创建k8s集群时,不宜使用多而小的服务器...2.容器在一台服务器内建立通信的比例增大,减少网络传输 3.拉取镜像的效率
  • k8s-基于阿里云服务器使用kubeadm搭建k8s集群 本人也是新手学习k8s, 先搭建个比较简单的1主2从的集群, 这些服务器当然不能体现k8s的威力, 但是由于新手上路, 先搞个简单的集群试试看, 后面熟练了再使用更多的...
  • 基于阿里云ECS服务器k8s集群环境搭建

    千次阅读 热门讨论 2020-01-13 12:42:30
    前言: 网上搭建k8s的文章很多,但很多都无法按其说明在阿里云ecs服务器成功搭建,所以我就花了些时间基于自己成功搭建k8s的步骤写了个 操作手册,希望对想搭建k8s环境的盆友有所帮助。 声明: 由于本人对k8s不是很...
  • 搭建K8S环境有几种常见的方式 Minikube: Minikube是个工具,可以在本地快速运行个单点的K8S,供初步尝试K8S或日常开发的用户使用,不能用于生产环境。 Kubeadm: Kubeadm是K8S官方社区推出的一套用于简化快速...
  • 搭建k8s

    2021-04-22 13:28:17
    搭建k8s 本次采用centos7,3虚拟机,如图 #网络为桥接模式,修改网络。 vi /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE=Ethernet BOOTPROTO=static #修改成static DEFROUTE=yes IPV4_FAILURE_FAT...
  • k8s之DNS服务器搭建

    2021-01-03 23:06:46
    答案是可以的,这就是k8s集群范围内的DNS服务来完成服务名到ClusterIP的解析,接下来就一起看一下如何搭建DNS服务器。 二、搭建DNS服务器 (1)简介 k8s提供的DNS服务是skydns,由四个组件组成 etcd:DNS信息...
  • 1 三台机器,还需要一台docker镜像服务器 master 192.168.100.89 node2 192.168.100.91 node3 192.168.100.92 registry 192.168.100.89 2 所有机器都关闭selinux setenforce 0 sed -i 's/^SELINUX=enf...
  • 目录k3s 简介k3s架构中文官方文档三台服务器快速搭建k8s集群安装说明步骤1 修改主机名,保持唯一步骤2 安装docker步骤3 安装master节点步骤4 安装worker节点加入集群步骤5 查看集群步骤6 部署 k8s仪表盘 dashboard ...
  • 参考文档(k8s中文社区):https://www.kubernetes.org.cn/5846.html 一、环境准备 1、3台kvm 3台 2核2G 的 kvm Cent OS 7.6 2、安装后的软件版本为 Kubernetes v1.16.0 ...3台虚拟机里,一台是 master...
  • 有伟大愿景的组织才能做出伟大的贡献,K8S的划时代后续正文中慢慢体会,本文将帮助小白新手搭建K8S集群。别被集群吓到,直白点就是K8S运行环境,只不过多加点节点机器 二:软硬件准备 硬件的相关要求官网上有明确...
  • 1.至少2台 2核4G 的服务器一台master服务器一台node服务器) 2. Cent OS 7.8 检查centos / hostname/cpu 此操作在 master 节点和 node 节点都要执行 (1) 检查centos : 执行命令: cat /etc/redhat-release ...
  • 4.1搭建k8s环境

    2020-06-05 05:50:02
    本内容是个主节点,两个从节点的k8s环境。非高可用环境。是个简易的入门案例。 前期准备:需要三台centos服务器,本文是基于centos7。如果安装Harbor,需要四centos服务器。 本文档内容庞杂,可能会有少部分...
  • Rancher搭建k8s集群

    2021-01-04 20:38:32
    课 Rancher搭建k8s集群 tags: K8s集群 Rancher categories: Rancher搭建 文章目录第课 Rancher搭建k8s集群第节 centos7虚拟机的安装第二节 通过Rancher安装k8s集群 第节 centos7虚拟机的安装 安装...
  • 注意:(后来由于NAT模式,开了端口也不能ping同,选择桥接模式的话,每次更换网络宿主机IP地址都会变,因此,选择了在一台物理机上搭建) 一:基础环境配置 (1)两台物理机配置(全新): CPU:i7-7700 ...
  • 从零开始搭建一K8S的环境

    千次阅读 2021-01-17 23:26:10
    市面上有很多的K8S的书籍,但是关于如何搭建K8S的文章不多;下面笔者结合自己的经验,分享一下如何在阿里云的CentOs服务器上,搭建一个K8S的集群。 前提条件 一个阿里云的账号或者自己准备两台VM,其中一台是K8S的...
  • 搭建k8s集群

    2020-11-17 19:19:19
    kubeadm是k8s部署工具,提供kubeadm init和kubeadm join,用于快速部署k8s集群 1、部署方式介绍 1、创建个master节点 kubeadm init 2、将node节点加入到当前集群中 kubeadm join <master节点的IP和端口>...
  • Kubernetes教程之跟着官方文档从零搭建K8S 文章地址: https://blog.piaoruiqing.com/blog/2019/09/17/搭建k8s/ 前言 本文将带领读者一起, 参照着Kubernetes官方文档, 对其安装部署进行讲解. Kubernetes更新迭代很快...
  • 使用二进制方式搭建K8S集群 k8s架构 k8s 集群控制节点,对集群进行调度管理,接受集群外用户去集群操作请求 master节点上的主要组件包括: 1、kube-apiserver:集群控制的入口,提供 HTTP REST 服务,同时交给etcd...
  • 使用kubeadm搭建k8s集群

    2019-04-12 17:11:34
    现在docker,k8s那么火,我们肯定也要玩玩得嘛,那么我们就得搭建k8s集群环境来好好感受感受下k8s的魅力,个人感觉可以先从单机的minikube感受下,熟悉之后再来搭建服务器k8s集群,下面就我搭建服务器k8s...
  • 文章目录、准备工作1.准备服务器2.所有服务器初始化二、开始搭建...搭建K8s集群最好准备多配置稍高点的机器,我这里使用谷歌云创建了三台2核4G的服务器用于实验,当然,也可以使用虚拟机进行试验。 服务器中所使用
  • 、环境搭建 宿主机: 系统版本:Ubuntu 19.10 查看命令:cat /etc/issue 内存:128G 硬盘:3.8T 网卡1_ip:192.168.90.201 网卡2_ip:192.168.90.209 kvm虚拟机: 系统版本:CentOS 7.2 内存:16G ...
  • 项目环境搭建【Docker+k8s || 服务器规划 1、本系列课程简介 本系列课程是一套完整的k8s集群部署与微服务架构实战项目开发系列课程,其中【Docker+k8s】是系列课程中的项目集成环境搭建课程,后期会持续更新...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,242
精华内容 2,096
关键字:

一台服务器搭建k8s