Kubeadm安装K8s集群

电玩女神 2023-10-14 18:52 168阅读 0赞
一、硬件环境
  • 准备3台Linux服务器,此处用Vmware虚拟机。

























主机名 CPU 内存
k8smaster 2核 4G
k8snode1 2核 4G
k8snode2 2核 4G
二、系统前置准备
  • 配置三台主机的hosts文件

    cat << EOF > /etc/hosts
    192.168.240.130 k8smaster
    192.168.240.132 k8snode1
    192.168.240.133 k8snode2
    EOF

  • 设置主机名

    hostnamectl set-hostname k8smaster
    hostnamectl set-hostname k8snode1
    hostnamectl set-hostname k8snode2

  • 关闭selinux、禁用swap分区

    sed -i ‘s/enforcing/disabled/‘ /etc/selinux/config
    setenforce 0

    swapoff -a
    sed -ri ‘s/.swap./#&/‘ /etc/fstab

  • ipv4流量转发

    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
    EOF

    让配置文件生效

    modprobe br_netfilter
    sysctl -p /etc/sysctl.d/k8s.conf

  • 关闭防火墙

    systemctl disable firewalld && systemctl stop firewalld

  • 同步三台服务器的时间

    yum install ntpdate -y
    ntpdate time.windows.com

三、环境安装
Docker 安装
  • Docker卸载

    systemctl stop docker
    yum remove -y docker-ce docker-ce-cli containerd.io
    rm -rf /var/lib/docker
    rm -rf /var/lib/containerd

  • Docker 安装

    yum -y install gcc
    yum -y install gcc-c++
    yum install -y yum-utils
    yum-config-manager —add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    yum makecache fast
    yum -y install docker-ce docker-ce-cli containerd.io
    systemctl enable docker && systemctl start docker
    cat > /etc/docker/daemon.json << EOF
    {
    “registry-mirrors”: [“https://b9pmyelo.mirror.aliyuncs.com“]
    }
    EOF
    systemctl restart docker

k8s安装
  1. 配置k8s安装镜像

    cat < kubernetes.repo
    [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
    mv kubernetes.repo /etc/yum.repos.d/

  2. 安装kubeadm 、kubectl、kubelet

    yum remove -y kubelet kubeadm kubectl && yum install -y kubelet-1.16.2 kubectl-1.16.2 kubeadm-1.16.2 —disableexcludes=kubernetes

  3. 设置kubelet开机自启动

    systemctl enable kubelet

master节点配置
  1. 创建一个k8s的工作目录,生成一个kubeadm配置文件

    mkdir k8s-install && cd k8s-install
    kubeadm config print init-defaults > kubeadm.yaml

  2. 修改配置文件

    修改生成好的配置文件镜像与版本

    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.169.240.130
        bindPort: 6443
        nodeRegistration:
        criSocket: /var/run/dockershim.sock
        name: k8smaster
        taints:
      • effect: NoSchedule
        key: node-role.kubernetes.io/master

    apiServer:
    timeoutForControlPlane: 4m0s
    apiVersion: kubeadm.k8s.io/v1beta2
    certificatesDir: /etc/kubernetes/pki
    clusterName: kubernetes
    controllerManager: {

    1. }

    dns:
    type: CoreDNS
    etcd:
    local:

    1. dataDir: /var/lib/etcd

    imageRepository: registry.aliyuncs.com/google_containers #修改镜像源
    kind: ClusterConfiguration
    kubernetesVersion: v1.16.2 #修改版本
    networking:
    dnsDomain: cluster.local
    podSubnet: 10.244.0.0/16 #pod网络
    serviceSubnet: 10.96.0.0/12
    scheduler: {

    1. }
  3. 下载kubeadm所需要的镜像

    kubeadm config images pull —config kubeadm.yaml

在这里插入图片描述

使用docker images 可查看下载的镜像信息
在这里插入图片描述

  1. 使用kubeadm 初始化master节点

    kubeadm init —config kubeadm.yaml

提示以下信息则表示初始化成功

在这里插入图片描述

  1. Your Kubernetes control-plane has initialized successfully!
  2. To start using your cluster, you need to run the following as a regular user:
  3. mkdir -p $HOME/.kube
  4. sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  5. sudo chown $(id -u):$(id -g) $HOME/.kube/config
  6. You should now deploy a pod network to the cluster.
  7. Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  8. https://kubernetes.io/docs/concepts/cluster-administration/addons/
  9. Then you can join any number of worker nodes by running the following on each as root:
  10. kubeadm join 192.168.240.130:6443 --token abcdef.0123456789abcdef \
  11. --discovery-token-ca-cert-hash sha256:1877573f37b7fd0bc9d8e38cf8d68f17f51e64a55606f7b657f3cdba79469f16
  1. 按照提示创建目录

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

查看集群节点状态

  1. kubectl get nodes

此时只有master节点是NotReady状态

  1. 将两台node节点 加入到master节点中去(kubeadm join 是在master节点上初始化配置时生成的)

    kubeadm join 192.168.240.130:6443 —token abcdef.0123456789abcdef \

    1. --discovery-token-ca-cert-hash sha256:1877573f37b7fd0bc9d8e38cf8d68f17f51e64a55606f7b657f3cdba79469f16

再次查看master节点信息

在这里插入图片描述

  1. 安装flannel网络插件

    wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

编辑kube-flannel.yml

改成虚拟机的网卡名称

在这里插入图片描述

  1. 下载flannel镜像

    docker pull quay.io/coreos/flannel:v0.11.0-amd64
    kubectl create -f kube-flannel.yml

  2. 查看集群节点状态

    kubectl get pods -A

在这里插入图片描述

  • master节点的组件
  1. api-server: api-server是主节点对外开发api的组件,同时提供restful方式,也可以用kubectl方式。
  2. etcd: 数据存储组件,api-server会将收到的指令存储到etcd中。
  3. sched :负责接收指令,然后选举合适的node节点,通知节点进行容器的启停、负载均衡等。
  4. cm :主节点控制中心,controller-manager。

    • node节点的组件
  5. kubelet : 用于管理节点中的容器启停,挂载等等。

  6. kube-proxy : 用于节点间的网络通信、流量转发等。
  7. pod : pod是k8s中的最小调度单位,一个pod中可以包含至少1个容器。多个容器组成了一个pod。

发表评论

表情:
评论列表 (有 0 条评论,168人围观)

还没有评论,来说两句吧...

相关阅读

    相关 k8s kubeadm 部署

    k8s 集群 容器镜像准备 > 使用kubeadm部署k8s集群,所以k8s集群的所有核心组件均以pod运行、 > > 需要准备镜像,不然初始化的时候会自动下载,时间会

    相关 kubeadm 搭建K8S

    kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具。 这个工具能通过两条指令完成一个kubernetes集群的部署: 创建一个 Mast