从零搭建K8S集群(无需科学上网)(一)

本文详细介绍如何在三台CentOS机器上搭建Kubernetes(K8S)集群,包括前期准备、Docker安装、系统配置、K8S组件安装及镜像处理等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

写在开始之前:官网的东西才是最好的,大家可以参照官网:

官网:https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/#installing-kubeadm-kubelet-and-kubectl

GitHub:https://github.com/kubernetes/kubeadm

但官网有一些镜像的拉取是不适合大家的,本篇介绍的K8S集群搭建,完全不需要科学上网,下面开始我们的搭建之旅:

1 、前期准备

使用kubeadm搭建一个3台机器组成的k8s集群,1台master节点,2台worker节点

1.1 使用的版本

Docker       18.09.0
---
kubeadm-1.14.0-0 
kubelet-1.14.0-0 
kubectl-1.14.0-0
---
k8s.gcr.io/kube-apiserver:v1.14.0
k8s.gcr.io/kube-controller-manager:v1.14.0
k8s.gcr.io/kube-scheduler:v1.14.0
k8s.gcr.io/kube-proxy:v1.14.0
k8s.gcr.io/pause:3.1
k8s.gcr.io/etcd:3.3.10
k8s.gcr.io/coredns:1.3.1
---
calico:v3.9

1.2 准备3台centos机器

最低配置要求:

master节点的最少是2核2G,work节点可以是1核2G;

1.3 更新并安装依赖

在3台机器上运行

yum -y update
yum install -y conntrack ipvsadm ipset jq sysstat curl iptables libseccomp

2、安装Docker

在每一台机器上安装Docker,版本为18.09.0

01 安装必要的依赖
	sudo yum install -y yum-utils device-mapper-persistent-data  lvm2     
02 设置docker仓库
	sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
	
【需要设置一下阿里云镜像加速器】
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["镜像加速器地址"](登录阿里云账号,搜索镜像加速器)
}
EOF
sudo systemctl daemon-reload

03 安装docker
  yum install -y docker-ce-18.09.0 docker-ce-cli-18.09.0 containerd.io
04 启动docker
	sudo systemctl start docker && sudo systemctl enable docker
  • 镜像加速器:
    在这里插入图片描述

3 、系统基础前提配置

由于我搭建k8s集群的目的是供学习使用,所以直接关闭了机器上的防火墙等其他操作,在生产环境上需要根据实际情况开启一些端口;

# (1)关闭防火墙
systemctl stop firewalld && systemctl disable firewalld

# (2)关闭selinux
setenforce 0 
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

# (3)关闭swap
swapoff -a
sed -i '/swap/s/^\(.*\)$/#\1/g' /etc/fstab

# (4)配置iptables的ACCEPT规则
iptables -F && iptables -X && iptables -F -t nat && iptables -X -t nat && iptables -P FORWARD ACCEPT

# (5)设置系统参数
cat <<EOF >  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

sysctl --system

4、k8s组件安装

4.1 Installing kubeadm, kubelet and kubectl

(1)配置yum源

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

(2)安装kubeadm&kubelet&kubectl

yum install -y kubeadm-1.14.0-0 kubelet-1.14.0-0 kubectl-1.14.0-0

(3)docker和k8s设置同一个cgroup

# docker
vi /etc/docker/daemon.json
#在daemon.json里添加如下内容:

"exec-opts": ["native.cgroupdriver=systemd"],
    
systemctl restart docker
    
# kubelet,这边如果发现输出directory not exist,也说明是没问题的,大家继续往下进行即可
sed -i "s/cgroup-driver=systemd/cgroup-driver=cgroupfs/g" /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
  [root@Henry003 ~]# sed -i "s/cgroup-driver=systemd/cgroup-driver=cgroupfs/g" /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
    sed: can't read /etc/systemd/system/kubelet.service.d/10-kubeadm.conf: No such file or directory
systemctl enable kubelet && systemctl start kubelet

4.2 proxy/pause/scheduler等国内镜像

(1)查看kubeadm使用的镜像

kubeadm config images list

可以发现这里都是国外的镜像

k8s.gcr.io/kube-apiserver:v1.14.0
k8s.gcr.io/kube-controller-manager:v1.14.0
k8s.gcr.io/kube-scheduler:v1.14.0
k8s.gcr.io/kube-proxy:v1.14.0
k8s.gcr.io/pause:3.1
k8s.gcr.io/etcd:3.3.10
k8s.gcr.io/coredns:1.3.1

(2)解决国外镜像不能访问的问题

  • 创建kubeadm.sh脚本,用于拉取镜像/打tag/删除原有镜像
    vim kubeadm.sh
    #!/bin/bash
    
    set -e
    
    KUBE_VERSION=v1.14.0
    KUBE_PAUSE_VERSION=3.1
    ETCD_VERSION=3.3.10
    CORE_DNS_VERSION=1.3.1
    
    GCR_URL=k8s.gcr.io
    ALIYUN_URL=registry.cn-hangzhou.aliyuncs.com/google_containers
    
    images=(kube-proxy:${KUBE_VERSION}
    kube-scheduler:${KUBE_VERSION}
    kube-controller-manager:${KUBE_VERSION}
    kube-apiserver:${KUBE_VERSION}
    pause:${KUBE_PAUSE_VERSION}
    etcd:${ETCD_VERSION}
    coredns:${CORE_DNS_VERSION})
    
    for imageName in ${images[@]} ; do
      docker pull $ALIYUN_URL/$imageName  #拉取镜像
      docker tag  $ALIYUN_URL/$imageName $GCR_URL/$imageName  #打tag
      docker rmi $ALIYUN_URL/$imageName  #删除镜像,使用打tag的镜像即可
    done
  • 运行脚本和查看镜像

    运行脚本

    sh ./kubeadm.sh

    查看镜像

    docker images

      REPOSITORY                           TAG                 IMAGE ID            CREATED             SIZE
      k8s.gcr.io/kube-proxy                v1.14.0             5cd54e388aba        9 months ago        82.1MB
      k8s.gcr.io/kube-apiserver            v1.14.0             ecf910f40d6e        9 months ago        210MB
      k8s.gcr.io/kube-scheduler            v1.14.0             00638a24688b        9 months ago        81.6MB
      k8s.gcr.io/kube-controller-manager   v1.14.0             b95b1efa0436        9 months ago        158MB
      k8s.gcr.io/coredns                   1.3.1               eb516548c180        11 months ago       40.3MB
      k8s.gcr.io/etcd                      3.3.10              2c4adeb21b4f        12 months ago       258MB
      k8s.gcr.io/pause                     3.1                 da86e6ba6ca1        2 years ago         742kB
      
    
    

4.3 push镜像

可以将这些镜像推送到自己的阿里云仓库【可选,根据自己实际的情况】

# 登录自己的阿里云仓库
docker login --username=xxx(自己的用户名) registry.cn-hangzhou.aliyuncs.com
# 创建kubeadm-push-aliyun.sh文件
vi kubeadm-push-aliyun.sh

#!/bin/bash

set -e

KUBE_VERSION=v1.14.0
KUBE_PAUSE_VERSION=3.1
ETCD_VERSION=3.3.10
CORE_DNS_VERSION=1.3.1

GCR_URL=k8s.gcr.io
ALIYUN_URL=registry.cn-hangzhou.aliyuncs.com/123456(这里填写自己的用户名)

images=(kube-proxy:${KUBE_VERSION}
kube-scheduler:${KUBE_VERSION}
kube-controller-manager:${KUBE_VERSION}
kube-apiserver:${KUBE_VERSION}
pause:${KUBE_PAUSE_VERSION}
etcd:${ETCD_VERSION}
coredns:${CORE_DNS_VERSION})

for imageName in ${images[@]} ; do
  docker tag $GCR_URL/$imageName $ALIYUN_URL/$imageName
  docker push $ALIYUN_URL/$imageName
  docker rmi $ALIYUN_URL/$imageName
done

运行脚本 sh ./kubeadm-push-aliyun.sh

继续安装请查看:
https://blog.youkuaiyun.com/qq_33996921/article/details/103649020

开始搭建Kubernetes(简称K8s集群可以按照以下步骤进行: 1. 选择操作系统:选择适合你的需求的操作系统,比如Ubuntu、CentOS等。 2. 安装Docker:Kubernetes使用Docker容器来运行应用程序,因此需要先安装Docker。可以通过官方文档来安装适合你操作系统版本的Docker。 3. 安装Kubernetes的控制节点(Master):在控制节点上安装Kubernetes的各个组件,包括kube-apiserver、kube-controller-manager、kube-scheduler等。可以通过二进制文件手动安装,或者使用Kubeadm工具来简化安装过程。 4. 配置网络:配置网络使得集群内的各个节点能够相互通信。可以选择使用Flannel、Calico等网络插件来实现网络配置。 5. 添加工作节点(Worker):在工作节点上安装Docker和Kubernetes的各个组件,比如kubelet和kube-proxy。可以使用同样的方式安装Docker和Kubernetes组件。 6. 加入工作节点到集群:在控制节点上使用Kubeadm工具将工作节点加入到集群中。 7. 部署应用程序:通过Kubernetes的资源对象(如Pod、Service、Deployment等)来部署应用程序。可以使用kubectl命令行工具或者YAML文件来定义和创建这些资源对象。 以上是个大致的搭建Kubernetes集群的步骤,具体的安装和配置过程可能会因为操作系统和版本的不同而有所差异。你可以参考官方文档或者些教程来获取更详细的指导。同时,搭建Kubernetes集群需要定的系统管理和网络知识,确保你有足够的了解和准备。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值