前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >kubeadm方式部署k8s集群

kubeadm方式部署k8s集群

作者头像
Xiongan-桃子
发布于 2023-06-10 08:54:07
发布于 2023-06-10 08:54:07
48200
代码可运行
举报
文章被收录于专栏:桃子小白桃子小白
运行总次数:0
代码可运行

环境准备

第一台节点(主节点): 192.168.123.200 master

第二台节点(从节点): 192.168.123.201 slave

以下文件需要单独下载

云盘地址地址

配置/etc/hosts域名解析(两台)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@master ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.123.200 master-tz
192.168.123.201 slave01-tz

关闭防火墙、SELINUX和swap(两台)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1.systemctl disable firewalld --now
2.setenforce 0
3./etc/selinux/config中的一行修改为SELINUX=disabled
4.swapoff -a
5./etc/fstab中的swap加注释
#/dev/mapper/centos-swap swap swap defaults 0 0

配置系统内核参数,使流过网桥的流量页进入IPTables/Netfilter(两台)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@master ~]# modprobe br_netfilter
[root@master ~]# echo "modprobe br_netfilter" >> /etc/profi
le
[root@master ~]# 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
[root@master ~]# sysctl -p /etc/sysctl.d/k8s.conf

安装基本软件包,要求虚拟主机能够访问外网(两台)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
yum -y install wget vim ntpdate get

配置时间同步

ntpdate ntp1.aliyun.com

配置yum源(两台)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@master ~]# rm -rf /etc/yum.repos.d/*
[root@master ~]# wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
[root@master ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
[root@master ~]# wget -O kubernetes.sh https://www.xiongan.host/sh/kubernetes.sh && sh kubernetes.sh

开启ipvs(两台)把 ipvs .modules 上传到 /etc/sysconfig/ modules目录下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
chmod 755 /etc/sysconfig/modules/ipvs.modules
bash /etc/sysconfig/modules/ipvs.modules
lsmod | grep ip_vs

安装kubeadm和相关工具包(两台)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
yum install -y kubelet-1.20.6 kubeadm-1.20.6 kubectl-1.20.6
systemctl enable kubelet

注:docker的版本是20.10.8

注:每个软件包的作用

Kubeadm : kubeadm 是一个工具,用来初始化 k 8s 集群的

kubelet: 安装 在集群所有节点上,用于启动 Pod 的

kubectl:通过 kubectl 可以部署和管理应用,查看各种资源,创建、删除和更新各种组件

kubeadm初始化k8s集群(两台)

上传k8simage-1-20-6.tar.gz到两个节点

docker load -i k8simage-1-20-6.tar.gz

在master节点执行kubeadm命令(master节点)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@master ~]# kubeadm init --kubernetes-version=1.20.6 --apiserver-advertise-address=192.168.123.200 --image-repository registry.aliyuncs.com/google_containers --pod-network-cidr=10.244.0.0/16 --ignore-preflight-errors=SystemVerification

kubernetes-version 代表 k8s的版本

apiserver-advertise-address 如果master节点有多个网卡,则需要进行指定

pod-network-cidr 指定pod网络的范围。

image repository registry.aliyuncs.com/google_containers 手动指定仓库地址为

registry.aliyuncs.com/google_containers 。

kubeadm 默认从 k 8s.grc.io 拉取镜像 ,但是 k 8s.gcr.io

访问不到,所以需要指定从 registry.aliyuncs.com/google_containers 仓库拉取镜像

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
配置kubectl的配置文件config,相当于对kubectl进行授权,这样kubectl命令可以使用这个证书对k8s
集群进行管理
[root@master ~]# mkdir -p $HOME/.kube
[root@master ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@master ~]# sudo chown $(id -u):$(id -g) $HOME/.kube/config
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
进入slave节点执行添加到集群,命令是上图中的
[root@slave01-tz ~]# kubeadm join 192.168.123.200:6443 --token d32tmx.utjgdkqxhy9sk517 \
>     --discovery-token-ca-cert-hash sha256:d6a0bb61368c23be10444d7a18eab071b750c97c45186020980714fd57b13bdd

再次查看master节点

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@master-tz ~]# kubectl get nodes
NAME         STATUS     ROLES                  AGE     VERSION
master-tz    NotReady   control-plane,master   8m31s   v1.20.6
slave01-tz   NotReady   <none>                 12s     v1.20.6

此时集群状态还是NotReady 状态,因为 没有安装网络 插件 。

若要扩充集群(master节点)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
master执行
kubeadm token create --print-join-command
结果在新增节点执行

安装k8s网络组件Calico(master节点)

上传calico.yaml文件到master节点。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@master ~]# kubectl apply -f calico.yaml
再次使用kubectl get nodes命令查看节点状态为Ready

安装dashboard(master节点)

上传dashboard_2_0_0.tar.gz和metrics-scrapter-1-0-1.tar.gz到两个节点。

上传kubernetes-dashboard.yaml到master节点。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@master ~]# docker load -i dashboard_2_0_0.tar.gz
[root@master ~]# docker load -i metrics-scrapter-1-0-1.tar.gz
[root@master ~]# kubectl apply -f kubernetes-dashboard.yaml
[root@master-tz ~]# kubectl get pods -n kubernetes-dashboard
NAME                                         READY   STATUS    RESTARTS   AGE
dashboard-metrics-scraper-7445d59dfd-p572g   1/1     Running   0          10s
kubernetes-dashboard-54f5b6dc4b-5zxpm        1/1     Running   0          10s
说明dasbnoard安装成功了。

查看dashboard的service

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@master-tz ~]# kubectl get svc -n kubernetes-dashboard
NAME                        TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
dashboard-metrics-scraper   ClusterIP   10.101.56.238   <none>        8000/TCP   97s
kubernetes-dashboard        ClusterIP   10.97.126.230   <none>        443/TCP    97s

修改service type的类型为NodePort

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@master ~]# kubectl edit svc kubernetes-dashboard -n kubernetes-dashboard

[root@master ~]# kubectl get svc -n kubernetes-dashboard

通过浏览器进行访问https://192.168.123.200:30245

通过token登录dashboard(master节点)

创建管理员token,具有查看任何空间的权限,可以管理所有资源对象。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@master-tz ~]# kubectl create clusterrolebinding dashboard-cluster-admin --clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:kubernetes-dashboard
clusterrolebinding.rbac.authorization.k8s.io/dashboard-cluster-admin created
[root@master-tz ~]# kubectl get secret -n kubernetes-dashboard
NAME                               TYPE                                  DATA   AGE
default-token-scvqs                kubernetes.io/service-account-token   3      14m
kubernetes-dashboard-certs         Opaque                                0      14m
kubernetes-dashboard-csrf          Opaque                                1      14m
kubernetes-dashboard-key-holder    Opaque                                2      14m
kubernetes-dashboard-token-bs98s   kubernetes.io/service-account-token   3      14m
[root@master-tz ~]# kubectl describe secret kubernetes-dashboard-token-bs98s -n kubernetes-dashboard
Name:         kubernetes-dashboard-token-bs98s
Namespace:    kubernetes-dashboard
Labels:       <none>
Annotations:  kubernetes.io/service-account.name: kubernetes-dashboard
              kubernetes.io/service-account.uid: d0842b14-e79e-4129-b6e3-bfd3c7039334

Type:  kubernetes.io/service-account-token

Data
====
ca.crt:     1066 bytes
namespace:  20 bytes
token:      eyJhbGciOiJSUzI1NiIsImtpZCI6IkdHTy1lQ2tndl9qQ29INUtEMEREMW1iUWhWeENOODB1Q2lOOERSYnN6OTQifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJrdWJlcm5ldGVzLWRhc2hib2FyZC10b2tlbi1iczk4cyIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6ImQwODQyYjE0LWU3OWUtNDEyOS1iNmUzLWJmZDNjNzAzOTMzNCIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlcm5ldGVzLWRhc2hib2FyZDprdWJlcm5ldGVzLWRhc2hib2FyZCJ9.f6iGY-QbB5YQFuaTkU6qR9UBTbFiIcDbpgT40E_ceQZGh3kdWyKzeTB-pWUkrJV1gWFaQt3Er7_brB-T7juO8eywunXkE6Xd_xH7XzaiWbNYFYfr3gMMXI8SmbnpqDKHclqw_tUIgun37ao7YYY_22_mYDdcTSIVFvx9XehK48eJWVfdyy-snuZiTKoR2pKMH0Rau3oXKlw7is8bV7yezeucZnaMPa60N-1KIMAvRM7gXlMX9m_BKiqvxEoru-2FDEoOkiCFXV-juGclxM_Qtn70i9R2JVjPgE5VX_gP7RFHDoXIEwykyjJqOg2fguE9Vy8nKnrfOo0c99aGXxnW_g

使用token值登录

测试创建nginx

拉取nginx镜像

docker pull nginx

创建nginx应用服务

kubectl create deployment ngix-deployment1 --image nginx --port=80 --replicas=2

创建service服务

kubectl expose deployment ngix-deployment1 --name=nginx --port=80 --target-port=80 --type=NodePort

访问nginx服务

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@master-tz ~]# kubectl get svc
NAME         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
kubernetes   ClusterIP   10.96.0.1        <none>        443/TCP        109m
nginx        NodePort    10.110.242.218   <none>        80:31079/TCP   9s
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022 年 12 月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Centos7安装K8S集群环境
kubelet不支持SELinux, 这里需要将SELinux设置为permissive模式
用户1392128
2024/01/08
1.6K0
kubernetes-1:使用kubeadm搭建K8S单master节点集群
现在官方推荐的是kubespray,但也是基于kubeadm;除此之外,还有kind,minikube,但是并不试用于部署生产级别集群。
千里行走
2019/07/03
2.1K0
使用kubeadm快速部署一套K8S集群
Minikube是一个工具,可以在本地快速运行一个单点的Kubernetes,仅用于尝试Kubernetes或日常开发的用户使用。部署地址:https://kubernetes.io/docs/setup/minikube/
没有故事的陈师傅
2019/09/19
7.2K21
使用kubeadm快速部署一套K8S集群
K8s集群环境搭建
说明:现在需要安装kubernetes的集群环境,但是又不想过于麻烦,所有选择使用kubeadm方式
Alone-林
2022/11/22
1.4K0
K8s集群环境搭建
谁再说不会 K8S 高可用部署,就把这个给他甩过去!
文档:https://kubernetes.io/zh-cn/docs/home/
民工哥
2022/10/27
1.4K0
谁再说不会 K8S 高可用部署,就把这个给他甩过去!
kubeadm 安装kubernetes
-–image-repository:由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址
以谁为师
2023/09/12
3370
kubeadm 安装kubernetes
k8s01_使用kubeadm部署k8s集群
http://www.chenleilei.net/soft/kubeadm快速部署一个Kubernetes集群yaml.zip
陈雷雷
2020/03/18
1.1K1
k8s01_使用kubeadm部署k8s集群
K8s 安装
如果你的节点上面有科学上网的工具,可以忽略这一步,我们需要提前将所需的gcr.io上面的镜像下载到节点上面,当然前提条件是你已经成功安装了docker。
分母为零
2019/07/04
1.8K0
K8s 安装
kubeadm安装Kubernetes1.11集群
9、设置内核(可不设置) echo "* soft nofile 65536" >> /etc/security/limits.conf echo "* hard nofile 65536" >> /etc/security/limits.conf echo "* soft nproc 65536" >> /etc/security/limits.conf echo "* hard nproc 65536" >> /etc/security/limits.conf echo "* soft memlock unlimited" >> /etc/security/limits.conf echo "* hard memlock unlimited" >> /etc/security/limits.conf
菲宇
2019/06/12
1.8K0
kubeadm安装Kubernetes1.11集群
使用kubeadm的方式搭建k8s(1.18.2版本)高可用集群
1)配置主机名,以k8s-master01为例(需要依次根据节点规划角色修改主机名)
没有故事的陈师傅
2020/05/22
4.6K4
Kubernetes/K8S部署之kubeadm
修改镜像地址:(有可能默认不能拉取,确保能够访问到quay.io这个registery,否则修改如下内容)
码客说
2021/03/04
1.2K0
kubeadm搭建kubernets-1.16.2
如果节点间无安全组限制(内网机器间可以任意访问),可以忽略,否则,至少保证如下端口可通: k8s-master 节点:TCP:6443,2379,2380,60080,60081UDP 协议端口全部打开 k8s-slave 节点:UDP 协议端口全部打开
cuijianzhe
2022/06/14
3560
kubeadm搭建kubernets-1.16.2
基于kubeadm搭建k8s高可用集群
这五台机器均需事先安装好Docker,由于安装过程比较简单这里不进行介绍,可以参考官方文档:
端碗吹水
2020/09/23
2.7K0
基于kubeadm搭建k8s高可用集群
k8s部署篇之Kubeadm高可用
公司DDD架构的新项目采用云原生,K8s+Docker这方面的知识就必不可少了 因此,我背着同事偷偷的卷了卷,然后Docker考核成了公司唯一一个优秀,然后。。。后续就不多说了,总之一言难尽
小炜同学
2022/09/23
9920
kubernetes(六) 基于kubeadm构建高可用k8s集群
github地址: https://github.com/kubernetes/kubernetes/ 官方网站: kubernets.io
alexhuiwang
2020/09/23
7810
CentOS7.7部署k8s(1 master + 2 node)
VMware创建三个vm,规格2cpu 4G mem 200G disk,一个NAT网卡
后端云
2020/04/22
1.4K0
CentOS7.7部署k8s(1 master + 2 node)
k8s 实践经验(二):搭建 k8s 集群
Kubernetes集群大致分为两类:一主多从和多主多从。 一主多从:一个Master节点和多台Node节点,搭建简单,但是有单机故障风险,适合用于测试环境。 多主多从:多台Master和多台Node节点,搭建麻烦,安全性高,适合用于生产环境。
看、未来
2022/05/06
1.1K0
k8s 实践经验(二):搭建 k8s 集群
不背锅运维:搭不起来我赔钱给你:分享Ubuntu20和Centos7中使用kubeadm搭建k8s集群。
取消注释,并修改成与前面kubeadm init的 --pod-network-cidr(10.244.0.0/16)指定的一样。
不背锅运维
2022/12/20
9160
十分钟搭建好K8S集群
虽然网上有大量从零搭建K8S的文章,但大都针对老版本,若直接照搬去安装最新的1.20版本会遇到一堆问题。故此将我的安装步骤记录下来,希望能为读者提供copy and paste式的集群搭建帮助。
陶辉
2020/12/23
9990
十分钟搭建好K8S集群
国内使用 kubeadm 在 Centos 7 搭建 Kubernetes 集群
哎_小羊
2018/01/02
4.2K1
国内使用 kubeadm 在 Centos 7 搭建 Kubernetes 集群
相关推荐
Centos7安装K8S集群环境
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验