2、基于kubeadm搭建K8S环境

这篇具有很好参考价值的文章主要介绍了2、基于kubeadm搭建K8S环境。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

 

一、环境说明

二、初始化所有节点

三、修改三台服务器主机名,并写入host文件

四、调整内核参数

五、所有节点安装Docker

六、所有节点配置K8S源

七、所有节点安装kubeadm,kubelet和kubectl

八、部署 kubernetes Master 节点

九、k8s-node 节点加入 master 节点

十、master节点部署 CNI 网络插件

十一、检查master节点

十二、测试 kubernetes 集群

十三、token制作


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

  • 第一,创建一个 Master 节点:kubeadm init
  • 第二, 将 Node 节点加入到当前集群中:kubeadm join <Master 节点的 IP 和端口 >

一、环境说明

虚拟机配置:

2、基于kubeadm搭建K8S环境,# Kubernetes,kubernetes,k8s,云原生,k8s环境搭建

服务器类型

角色

IP地址

k8s-master

master

192.168.1.33

k8s-node01

node

192.168.1.31

k8s-node02

node

192.168.1.32

二、初始化所有节点

所有节点,需关闭防火墙规则,关闭selinux,关闭swap交换。

# 关闭防火墙
[root@localhost ~]# systemctl stop firewalld
# 禁用 firewalld 服务
[root@localhost ~]# systemctl disable firewalld
# 临时关闭 selinux
[root@localhost ~]# setenforce 0
[root@localhost ~]# iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X
# 关闭 swap
# 临时关闭【立即生效】查看使用 free 命令
[root@localhost ~]# swapoff -a
# 永久关闭【重启生效】
[root@localhost ~]# sed -ri 's/.*swap.*/#&/' /etc/fstab
[root@localhost ~]# free -g
              total        used        free      shared  buff/cache   available
Mem:              7           4           1           0           0           2
Swap:             0           0           0

以master为例,在node01、node02也需要执行:

2、基于kubeadm搭建K8S环境,# Kubernetes,kubernetes,k8s,云原生,k8s环境搭建

三、修改三台服务器主机名,并写入host文件

cat >> /etc/hosts << EOF
192.168.1.33 master
192.168.1.31 node01
192.168.1.32 node02
EOF

2、基于kubeadm搭建K8S环境,# Kubernetes,kubernetes,k8s,云原生,k8s环境搭建

2、基于kubeadm搭建K8S环境,# Kubernetes,kubernetes,k8s,云原生,k8s环境搭建

2、基于kubeadm搭建K8S环境,# Kubernetes,kubernetes,k8s,云原生,k8s环境搭建

当然也可以使用hostnamectl set-hostname xxx设置主机名称,如下:

# 【master 节点上操作】
hostnamectl set-hostname master
# 【node01 节点上操作】
hostnamectl set-hostname node01
# 【node02 节点操作】
hostnamectl set-hostname node02

四、调整内核参数

将桥接的 IPV4 流量传递到 iptables 链。

cat > /etc/sysctl.d/kubernetes.conf << EOF
#开启网桥模式,可将网桥的流量传递给iptables链
net.bridge.bridge-nf-call-ip6tables=1
net.bridge.bridge-nf-call-iptables=1
#关闭ipv6协议
net.ipv6.conf.all.disable_ipv6=1
net.ipv4.ip_forward=1
EOF

以master节点为例,node01、node02也需要执行:

2、基于kubeadm搭建K8S环境,# Kubernetes,kubernetes,k8s,云原生,k8s环境搭建

接着在三个节点执行sysctl --system加载参数:

2、基于kubeadm搭建K8S环境,# Kubernetes,kubernetes,k8s,云原生,k8s环境搭建

五、所有节点安装Docker

Kubernetes 默认 CRI(容器运行时)为 Docker,因此先安装 Docker。以master节点为例,node01、node02也需要执行:

# 配置一下 Docker 的 yum 源【阿里云】
cat >/etc/yum.repos.d/docker.repo<<EOF
[docker-ce-edge]
name=Docker CE Edge - \$basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/\$basearch/edge
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
EOF

# 然后 yum 方式安装 docker
yum -y install docker-ce
# 查看 docker 版本
docker --version

# 配置 docker 的镜像源【阿里云】
cat >> /etc/docker/daemon.json << EOF
{
  "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]
}
EOF

# 启动 docker
systemctl enable docker
systemctl start docker
systemctl status docker

六、所有节点配置K8S源

执行下面的命令, 配置 k8s 的 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

以master为例,在node01、node02也需要执行:

2、基于kubeadm搭建K8S环境,# Kubernetes,kubernetes,k8s,云原生,k8s环境搭建

七、所有节点安装kubeadm,kubelet和kubectl

安装 kubelet、kubeadm、kubectl,同时指定版本:

[root@localhost ~]# yum install -y kubelet-1.21.3 kubeadm-1.21.3 kubectl-1.21.3

以master节点为例,node01、node02也需要执行:

2、基于kubeadm搭建K8S环境,# Kubernetes,kubernetes,k8s,云原生,k8s环境搭建

ps:这里根据网速快慢,可能需等待一些时间。

安装完毕之后,如下图。

2、基于kubeadm搭建K8S环境,# Kubernetes,kubernetes,k8s,云原生,k8s环境搭建

k8s通过kubeadm安装出来以后都是以Pod方式存在,即底层是以容器方式运行,所以kubelet必须设置开机自启。

[root@localhost ~]# systemctl enable kubelet.service
Created symlink from /etc/systemd/system/multi-user.target.wants/kubelet.service to /usr/lib/systemd/system/kubelet.service.
[root@localhost ~]# systemctl start kubelet

八、部署 kubernetes Master 节点

这里只需要在master 节点上执行即可,在master节点(192.168.1.33)执行下面的脚本进行【集群初始化】:

kubeadm init \
--apiserver-advertise-address=192.168.1.33 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.21.3 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16

由于默认拉取镜像地址 k8s.gcr.io 国内无法访问,这里指定阿里云镜像仓库地址,【执行上述命令会比较慢,因为后台其实已经在拉取镜像了】,我们 docker images 命令即可查看已经拉取的镜像。

参数说明:

kubeadm init \
--apiserver-advertise-address=192.168.1.33 \                  #指定master监听的地址,修改为自己的master地址
--image-repository registry.aliyuncs.com/google_containers \   #指定为aliyun的下载源,最好用国内的
--kubernetes-version v1.18.0 \                 #指定k8s版本,1.18.0版本比较稳定
--service-cidr=10.96.0.0/12 \                  #设置集群内部的网络
--pod-network-cidr=10.244.0.0/16                #设置pod的网络
# service-cidr 和 pod-network-cidr 最好就用这个,不然需要修改后面的 kube-flannel.yaml 文件

2、基于kubeadm搭建K8S环境,# Kubernetes,kubernetes,k8s,云原生,k8s环境搭建

执行完这个命令后,后台会拉取对应的镜像,需等待一些时间。

如下图就是拉取完成之后的结果:

2、基于kubeadm搭建K8S环境,# Kubernetes,kubernetes,k8s,云原生,k8s环境搭建

这里我们继续回去看刚刚拉取的日志,有几个关键的信息:

2、基于kubeadm搭建K8S环境,# Kubernetes,kubernetes,k8s,云原生,k8s环境搭建

通过注释,我们可以看到,如果要开始使用集群,需要执行上述框起来的脚本:

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

下面的kubeadm join脚本其实就是将node1、node2添加到master集群的命令,这个我们在下一个步骤使用。

九、k8s-node 节点加入 master 节点

这里我们只需要在node01(192.168.1.31)、node02(192.168.1.32)节点执行,我们直接复制前面一张图的kubeadm join脚本,将node01、node02两个节点加入到master集群中,注意只需要在node01、node02节点执行,不要在master节点上面执行,否则会报错。

kubeadm join 192.168.1.33:6443 --token ailzq6.z3r7d3u0ov225p99 \
        --discovery-token-ca-cert-hash sha256:45c01d464d97fe9d14d42c91b629bbe561aba2508e9db823f81b00b911c8ccfa 

默认 token 有效期为 24 小时,当过期之后,该 token 就不可用了。这时就需要重新创建 token,操作如下:

kubeadm token create --print-join-command

2、基于kubeadm搭建K8S环境,# Kubernetes,kubernetes,k8s,云原生,k8s环境搭建

2、基于kubeadm搭建K8S环境,# Kubernetes,kubernetes,k8s,云原生,k8s环境搭建

当我们把两个节点都加入进来后,就可以在master节点通过kubectl get nodes命令查看当前节点信息:

2、基于kubeadm搭建K8S环境,# Kubernetes,kubernetes,k8s,云原生,k8s环境搭建

我们可以看到,node01、node02都成功加入到master集群了,但是状态目前还是NotReady,需要安装网络插件,来进行联网访问。

十、master节点部署 CNI 网络插件

先从GitHub仓库下载kube-flannel.yml:

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

国外站点下载很慢,经常连不上:

2、基于kubeadm搭建K8S环境,# Kubernetes,kubernetes,k8s,云原生,k8s环境搭建

安装:

kubectl apply -f http://120.78.77.38/file/kube-flannel.yaml

2、基于kubeadm搭建K8S环境,# Kubernetes,kubernetes,k8s,云原生,k8s环境搭建

安装完CNI网络插件后,三个节点的状态就变成Ready了。

2、基于kubeadm搭建K8S环境,# Kubernetes,kubernetes,k8s,云原生,k8s环境搭建

我们使用kubectl get pod -n kube-system查看pod状态,可以看到,状态都是Running运行状态。

2、基于kubeadm搭建K8S环境,# Kubernetes,kubernetes,k8s,云原生,k8s环境搭建

十一、检查master节点

使用kubectl get cs检查master节点状态。

2、基于kubeadm搭建K8S环境,# Kubernetes,kubernetes,k8s,云原生,k8s环境搭建

我们看到controller-manager、scheduler的状态为unhealthy,表示不健康的状态。

我们需要修改配置文件:

  • vim /etc/kubernetes/manifests/kube-scheduler.yaml

2、基于kubeadm搭建K8S环境,# Kubernetes,kubernetes,k8s,云原生,k8s环境搭建

将 --port=0注释掉。

  • vim /etc/kubernetes/manifests/kube-controller-manager.yaml

2、基于kubeadm搭建K8S环境,# Kubernetes,kubernetes,k8s,云原生,k8s环境搭建

将 --port=0注释掉。

然后我们再次查询服务是否正常:

1)、使用kubectl get pods -A命令查询所有pod是否正常运行

2、基于kubeadm搭建K8S环境,# Kubernetes,kubernetes,k8s,云原生,k8s环境搭建

2)、使用kubectl get cs命令查询master是否正常

2、基于kubeadm搭建K8S环境,# Kubernetes,kubernetes,k8s,云原生,k8s环境搭建

3)、使用kubectl get nodes命令查询node节点是否ready

2、基于kubeadm搭建K8S环境,# Kubernetes,kubernetes,k8s,云原生,k8s环境搭建

十二、测试 kubernetes 集群

在 Kubernetes 集群中创建一个 pod,这里我们使用k8s来部署nginx,验证是否正常运行。

# 下载 nginx 【会联网拉取 nginx 镜像】
kubectl create deployment nginx --image=nginx

# 暴露端口,让其它外界能够访问
kubectl expose deployment nginx --port=80 --type=NodePort

# 查看状态
kubectl get pods

2、基于kubeadm搭建K8S环境,# Kubernetes,kubernetes,k8s,云原生,k8s环境搭建

通过kubectl get pods和kubectl get svc命令我们可以看到k8s已经成功帮我们自动拉取nginx镜像,并运行了一个容器,暴露端口为:30140。

注意,需要执行kubectl expose deployment nginx --port=80 --type=NodePort暴露端口

测试一下,master和node01、node02都能通过自己的IP的30140端口去访问:

  • 1)、master节点

2、基于kubeadm搭建K8S环境,# Kubernetes,kubernetes,k8s,云原生,k8s环境搭建

  • 2)、node01节点

2、基于kubeadm搭建K8S环境,# Kubernetes,kubernetes,k8s,云原生,k8s环境搭建

  • 3)、node02节点

2、基于kubeadm搭建K8S环境,# Kubernetes,kubernetes,k8s,云原生,k8s环境搭建

可以发现我们的 nginx 已经成功启动了。

十三、token制作

node 节点加入集群需要生成的 token,token 有效期为 24 小时,过期需要重新创建。
创建命令为:kubeadm token create --print-join-command

2、基于kubeadm搭建K8S环境,# Kubernetes,kubernetes,k8s,云原生,k8s环境搭建

然后就可以执行复制上面的kubeadm join将node节点加入master集群中。文章来源地址https://www.toymoban.com/news/detail-555595.html

到了这里,关于2、基于kubeadm搭建K8S环境的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Kubernetes技术--使用kubeadm搭建高可用的K8s集群(贴近实际环境)

    1.高可用k8s集群架构(多master) 2.安装硬件要求 一台或多台机器,操作系统 CentOS7.x-86_x64 硬件配置:2GB或更多RAM,2个CPU或更多CPU,硬盘30GB或更多 注: 这里属于教学环境,所以使用三台虚拟机模拟实现。 3.部署规划 4.部署前准备 (1).关闭防火墙 (2).关闭selinux (3).关闭swap (4).根据规

    2024年02月10日
    浏览(45)
  • 2、基于kubeadm搭建K8S环境

    目录   一、环境说明 二、初始化所有节点 三、修改三台服务器主机名,并写入host文件 四、调整内核参数 五、所有节点安装Docker 六、所有节点配置K8S源 七、所有节点安装kubeadm,kubelet和kubectl 八、部署 kubernetes Master 节点 九、k8s-node 节点加入 master 节点 十、master节点部署

    2024年02月15日
    浏览(30)
  • Kubernetes实战(九)-kubeadm安装k8s集群

    ip hostname 10.220.43.203 ops-master-1 10.220.43.204 ops-worker-1 10.220.43.205 ops-worker-2 master/与worker主机均需要设置。 master/worker均安装 docker二进制安装参考:docker部署及常用命令-CSDN博客  为kubernetes添加国内阿里云YUM软件源 。 如果k8s版本低于1.24版,可以忽略此步骤。 由于1.24版本不能直接

    2024年02月04日
    浏览(52)
  • 使用kubeadm安装和设置Kubernetes(k8s)

    kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具。 这个工具能通过两条指令完成一个kubernetes集群的部署: 使用kubeadm方式搭建K8s集群主要分为以下几步 准备三台虚拟机,同时安装操作系统CentOS 7.x 对三个安装之后的操作系统进行初始化操作 在三个节点安装 dock

    2024年02月12日
    浏览(43)
  • 【k8s】搭建小巧完备的Kubernetes环境(minikube)

    容器技术的核心概念是容器、镜像、仓库,使用这三大基本要素我们就可以轻松地完成应用的打包、分发工作,实现“一次开发,到处运行”的梦想。 不过,当我们熟练地掌握了容器技术,信心满满地要在服务器集群里大规模实施的时候,却会发现容器技术的创新只是解决了

    2024年02月02日
    浏览(61)
  • k8s(kubernetes)的两种部署方式(kubeadm)

    在开始之前,部署Kubernetes集群机器需要满足以下几个条件: 一台或多台机器,操作系统CentOS7.x-86_x64 硬件配置:2GB或更多RAM,2个CPU或更多CPU,硬盘30GB或更多 可以访问外网,需要拉取镜像,如果服务器不能上网,需要提前下载镜像并导入节点禁止swap分区 角色 IP master 192.168.1.11 node1 192.16

    2024年02月22日
    浏览(58)
  • Kubernetes技术--使用kubeadm快速部署一个K8s集群

    这里我们配置一个 单master集群 。( 一个Master节点,多个Node节点 ) 1.硬件环境准备 一台或多台机器,操作系统 CentOS7.x-86_x64 。这里我们使用安装了CentOS7的三台虚拟机 硬件配置 : 2GB或更多RAM , 2个CPU或更多CPU , 硬盘30GB或更多 2.主机名称和IP地址规划 3. 初始化准备工作 (1).关

    2024年02月10日
    浏览(58)
  • 【C站首发】全网最新Kubernetes(K8s)1.28版本探秘及部署 基于Containerd容器运行时(100年证书kubeadm)

    序号 操作系统及版本 备注 1 CentOS7u9 需求 CPU 内存 硬盘 角色 主机名 值 8C 8G 1024GB master k8s-master01 值 8C 16G 1024GB worker(node) k8s-worker01 值 8C 16G 1024GB worker(node) k8s-worker02 1.3.1 主机名配置 由于本次使用3台主机完成kubernetes集群部署,其中1台为master节点,名称为k8s-master01;其中2台为wor

    2024年02月08日
    浏览(67)
  • 云原生Kubernetes:Kubeadm部署K8S单Master架构

    目录 一、理论 1.kubeadm 2.Kubeadm部署K8S单Master架构 3.环境部署 4.所有节点安装docker 5.所有节点安装kubeadm,kubelet和kubectl 6.部署K8S集群 7.安装dashboard 8.安装Harbor私有仓库 9.内核参数优化方案 二、实验 1.Kubeadm部署K8S单Master架构 2. 部署流程  3.环境部署 4.所有节点安装docker 5.所有节

    2024年02月10日
    浏览(61)
  • 【Kubernetes】kubeadm安装k8s1.25.0高可用集群

    详情请参考 : 【Kubernetes】kubeadm安装k8s稳定版(1.23.1)高可用集群 这里不再赘述 这部分内容还没发布。。。后续有空再整理更新啦。 master、node节点都需要操作 docker也要安装,docker跟containerd不冲突,安装docker是为了能基于dockerfile构建镜像。 master、node节点都需要操作 3台机

    2024年01月16日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包