kubeadm16.2部署k8s集群--详细

本文详细介绍在CentOS 7环境下,使用Kubernetes v1.16.2版本搭建高可用Kubernetes集群的过程,包括环境准备、Kubernetes组件安装、网络配置、节点初始化、Pod网络设置等关键步骤。

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

  1. 准备环境

所有机器操作系统ISO:CentOS-7-x86_64-DVD-1810.iso

容器版本:docker-ce-18.06.3.ce-3.el7  

kubelet-1.16.2 kubeadm-1.16.2 kubectl-1.16.2

 

机器信息:master 192.168.1.10

                node11 192.168.1.11

                node12 192.168.1.12

    1. 修改hosts和机器名(所有机器)

一、修改三台机器的/etc/hosts文件,向文件追加以下内容

192.168.1.10 master

192.168.1.11 node11

192.168.1.12 node12

         效果如下图:

       二、修改各主机名/etc/hostname,如下图

注:这里只显示对master的操作,另两台节点也需要进行相应的设置,

    1. 修改yum源(所有机器)
  • 备份原有的yum基础文件

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

 

二、下载新的CentOS-Base.repo到 /etc/yum.repos.d/

cd /etc/yum.repos.d

wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

 

三、清空内存的缓存,重新生成

yum clean all

yum makecache fast

效果如下图:

 

    1. 禁用防火墙(所有机器)

systemctl stop firewalld

systemctl disable firewalld

 

    1. 禁用selinux(所有机器)
  • 执行命令:setenforce 0  

二、修改/etc/selinux/config文件,把SELINUX值改成disabled,在最后一行添加     SELINUXTYPE=targeted

         如下图:

 

    1. 禁用swap(所有机器)
  • 执行命令:swapoff -a

二、  修改 /etc/fstab 文件,注释掉 SWAP 的自动挂载,

如下图:

 

    1. 创建k8s.conf文件(所有机器)
  • 创建/etc/sysctl.d/k8s.conf文件,文件内容如下

net.bridge.bridge-nf-call-ip6tables=1

net.bridge.bridge-nf-call-iptables=1

net.ipv4.ip_forward=1

vm.swappiness=0

如下图:

 

       二、执行以下命令使其生效

       modprobe br_netfilter

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

 

 

  1. 使用kubeadm部署kubernetes
    1. 安装docker(所有机器)
  • 安装辅助工具

yum install -y um-utils device-mapper-persistent-data lvm2

 

二、添加docker的yum源

yum-config-manager –add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

yum clean all

yum makecache fast

 

三、查看docker可安装版本:

yum list docker-ce.x86_64 --showduplicates |sort -r

如下图:

 

         四、安装18.06.3 版本的docker

         yum install -y --setopt=obsoletes=0 docker-ce-18.06.3.ce-3.el7

        

         五、开启docker并开机自启

systemctl enable docker

systemctl start docker

 

       六、查看docker状态

       systemctl status docker

如下图:

 

 

2.2安装kubeadm、kubectl、kubelet(所有机器)

         一、创建资源文件/etc/yum.repos.d/kubernetes.repo,文件内容如下:

[kubernetes]

name=Kubernetes Repo

baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/

gpgcheck=0

gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg

enabled=1

如下图:

 

         二、更新yum源

         yum makecache fast

 

三、安装kubelet、kubeadm、kubectl

         yum install -y kubelet-1.16.2 kubeadm-1.16.2 kubectl-1.16.2

 

         四、开机启动kubelet服务

systemctl start kubelet

systemctl enable kubelet

提示:此时kubelet的服务运行状态是异常的,因为缺少主配置文件kubelet.conf。但可以暂不处理,因为在完成Master节点的初始化后才会生成这个配置文件。

2.3安装kubenetes所需镜像(所有机器)

         一、查看docker所需镜像

         kubeadm config images list

如下图:

 

         二、创建文件/root/soft/k8s_images,文件内容如下

         echo "Pull Kubernetes v1.16.2 Images from aliyuncs.com ......"

echo "=========================================================="

echo ""

 

 

KUBE_VERSION=v1.16.2

KUBE_PAUSE_VERSION=3.1

ETCD_VERSION=3.3.15-0

CORE_DNS_VERSION=1.6.2

 

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

  docker rmi \$ALIYUN_URL/\$imageName

done

 

echo ""

echo "=========================================================="

echo "Pull Kubernetes v1.16.2 Images FINISHED."

echo "into registry.cn-hangzhou.aliyuncs.com/openthings, "

echo "           by openthings@https://my.oschina.net/u/2306127."

echo "=========================================================="

 

如下图:

 

三、修改k8s_images为可执行文件

chmod +x /root/soft/k8s_images

 

四、执行k8s_images

/root/soft/k8s_images

 

2.4使用kubeadm init初始化集群(master)

一、执行命令初始化集群

kubeadm init --kubernetes-version=v1.16.2 --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.1.10

 

可能会出现的问题及解决方法如下:

  1. CPU核心至少两个

解决:增加CPU核心数量

 

  1. swap问题

vim /etc/sysconfig/kubelet

KUBELET_EXTRA_ARGS="--fail-swap-on=false"

 

  1. docker Cgroup驱动的问题,因为更改为systemd

创建文件/etc/docker/daemon.json,文件内容如下

{

  "exec-opts": ["native.cgroupdriver=systemd"],

  "log-driver": "json-file",

  "log-opts": {

    "max-size": "100m"

  },

  "storage-driver": "overlay2",

  "storage-opts": [

    "overlay2.override_kernel_check=true"

  ]

}

最后重启systemctl daemon-reload

                  systemctl restart docker

 

         二、初始化成功

如下图:

注意:第一个红色方框表示初始化成功,第二个方框内容需记录下来,添加节点需要使用

 

三、配置常规用户如何使用kubectl访问集群 (root用户可以只执行上面两条)

mkdir -p $HOME/.kube

cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

chown $(id -u):$(id -g) $HOME/.kube/config

(这3条命令可以直接复制使用。例如用ipran用户时候就可以直接使用了)

 

 

四、查看集群状态

kubectl get cs

如下图:

 

2.5安装Pod Network (master)

       一、执行命令安装fiannel networik

       mkdir -p ~/k8s/

       cd ~/k8s/

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

kubectl apply -f  kube-flannel.yml

如下图:

 

二、使用kubectl get pod --all-namespaces -o wide确保所有的Pod都处于Running状态。

如下图:

 

2.6向Kubernetes集群的Node节点发送配置文件 (master)

         一、将修改过的配置文件复制到node节点

         1. scp /etc/sysconfig/kubelet node11:/etc/sysconfig/

如下图:

  1. scp /etc/kuberbetes/admin.conf node11:/etc/kubernetes/

如下图:

 

 

2.7通过之前记录的命令将节点加入集群(Node)

 

 

2.8两个Node节点配置目录和kubelet文件的复制(Node)

       一、添加/$HOME/.kube目录

mkdir -p $HOME/.kube

cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

chown $(id -u):$(id -g) $HOME/.kube/config

 

 

2.9 查看节点集群状态(master)

查询命令:kubectl get nodes

如下图:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值