k8s系列——部署k8s集群

2023-11-16

1 环境准备

1.1 安装操作系统

此处选用centos 7 操作系统进行安装操作。

1.2 关闭防火墙:

systemctl stop firewalld
systemctl disable firewalld

1.3 关闭selinux:

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

1.4 关闭swap:

swapoff -a # 临时关闭
sed -ri 's/.*swap.*/#&/' /etc/fstab  #永久关闭

1.5 修改主机名称

(1) 临时修改主机名

hostname  名字

(2) 添加主机名与IP对应关系(记得设置主机名):

cat /etc/hosts
192.168.28.71 master
192.168.28.72 node1
192.168.28.73 node2

1.6 将桥接的IPv4流量传递到iptables的链

(1)创建 k8s.conf 文件

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
vm.swappiness = 0
EOF

(2)加载br_netfilter模块

modprobe br_netfilter
lsmod | grep br_netfilter

(3)使以上配置生效

sysctl --system

1.7 系统时间

(1)查看时间

timedatectl status

(2)修改区时

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

(3)安装工具&手动执行对时

yum -y install ntp ntpdate
ntpdate ntp1.aliyun.com #在线环境可以使用

1.8 安装docker-ce

(1)安装Docker-ce源

yum install -y wget && wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo

(3)安装Docker-ce

yum -y install docker-ce-20.10.12-3.el7.x86_64

(4)开启自启和启动

systemctl enable docker && systemctl start docker

(5)查看版本

docker --version

2 安装k8s组件

2.1 安装kubeadm、kubelet、kubectl

kubeadm、kubelet、kubectl 集群所有服务器都安装。

(1)添加阿里云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

(2)安装kubeadm、kubelet、kubectl
由于版本更新频繁,这里指定版本号部署:

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

(3)设置开机自启

systemctl enable kubelet

(4)清空配置

kubelet reset

2.2 部署Master节点

(1)初始化master

注意修改apiserver-advertise-address值为master的ip。
另外建议将此条命令单独保存为一个脚本,方便后续重置再部署。

kubeadm init \
--apiserver-advertise-address=192.168.28.71 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.23.1 \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16

(2)使kubelet正常工作

普通用户执行

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

root用户执行:

export KUBECONFIG=/etc/kubernetes/admin.conf

以下信息保存备用,添加node节点使用,忘了也没有关系,可以使用命令查看。

kubeadm join 192.168.6.19:6443 --token dnzeik.j4kmojcalxcezr96 \
    --discovery-token-ca-cert-hash sha256:8fb439131e4c8a490c38a0453a37ca897ec34851b70be2c70d19c0a4692161fb

查看命令:

kubeadm token create --print-join-command

(3)解除master节点不能跑pod
默认k8s的master节点是不能跑pod的业务,需要执行以下命令解除限制

kubectl taint node xxx-nodename node-role.kubernetes.io/master-

kubectl taint nodes --all node-role.kubernetes.io/master-

将 Master 恢复成 Master Only 状态

kubectl taint node xxx-nodename node-role.kubernetes.io/master="":NoSchedule

2.3 安装Flannel网络插件(CNI)

可以从下面地址获取到 kube-flannel.yml文件:
github地址

另外这里有一份附件可供参考:
kube-flannel.yml

coredns依赖于网络插件,如果不安装网络插件coredns将一直处于pending状态

部署kube-flannel:

kubectl apply -f kube-flannel.yml

2.4 node节点 加入Kubernetes

在要加入的node节点上执行

kubeadm join 192.168.56.102:6443 --token h573iu.t1al4xn1cq26yll9 \
    --discovery-token-ca-cert-hash sha256:ec895dbb8fc0cd180b8b17e96feefb27ae5a74abe379e01f5d8ddf49b663a394

如果找不到可以在master节点执行以下命令可以获取

kubeadm token create --print-join-command

重置节点的所有配置

安装报错无法解决时可重置,有问题可以尝试重置。

kubeadm reset

2.5 安装ingress-nginx

(1)下载官方默认配置文件
wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-0.32.0/deploy/static/provider/cloud/deploy.yaml

github地址:
https://github.com/kubernetes/ingress-nginx/blob/main/deploy/static/provider/cloud/1.23/deploy.yaml

在原文件中,涉及到一个镜像地址,这个地址国内的网络是无法访问的,这里需要特别处理一下。
我选择的是用阿里云的地址替换原来的k8s地址。
https://cr.console.aliyun.com/images/cn-hangzhou/google_containers/nginx-ingress-controller/detail

PS:这里的坑点很多,需要具备对容器编排、pods日志查看能力。

(2)修改配置

type: NodePort //原来是LoadBalancer NodePort只能⽤30000+的端⼝号,ClusterIP 没有限制
#externalTrafficPolicy: Local //注释或者删掉这⾏。

(3)执行部署

kubectl create -f deploy.yaml

(4) 查看结果

kubectl get deployment -n ingress-nginx

(5) 失败重新部署

//部署失败的话,可以先删掉
kubectl delete -f deploy.yaml

//再实⾏命令安装
kubectl apply -f deploy.yaml

暂时先到这里,待续。。。。。


3 相关资料

https://kubernetes.io/zh/docs/concepts/overview/

http://docs.kubernetes.org.cn/232.html

https://www.bookstack.cn/read/kubernetes-practice-guide/troubleshooting-problems-pod-keep-crashloopbackoff.md

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

k8s系列——部署k8s集群 的相关文章

  • 安装--centos7上使用kubeadm安装三节点的k8s集群

    安装文档 https kubernetes io zh cn docs setup production environment tools kubeadm install kubeadm 参考 https blog csdn net qq
  • CNI Plugin 介绍

    CNI 插件包括两种类型 CNI Plugin 和 IPAM IP Address Management Plugin CNI Plugin 负责为容器配置网络资源 IPAM Plugin 负责对容器的 IP 地址进行分配和管理 IPAM
  • KVM-7、KVM 虚拟机创建的几种方式

    通过对 qemu kvm libvirt 的学习 总结三种创建虚拟机的方式 1 通过 qemu kvm 创建 2 通过 virt install 创建 3 通过 virt manager 创建 在使用这三种创建虚拟机前提是 宿主机必须支持
  • K8S 工作负载(一)

    K8S 工作负载 1 Pod Pod 是 Kubernetes 中创建 管理和调度的最小计算单元 用户可以在 K8S 中通过调用 Pod API生成一个 Pod 让 K8S 对其进行调度 Pod 是一组 一个或多个 容器 这些容器共享存储
  • kubeadm常用

    kubeadm常用 配置kubeadm自动补全 初始化一个master节点 导出kubeadm默认配置文件 将node节点加入集群 生成node配置 升级k8s版本 kubeadm升级node 维护或下线node节点 管理kubeadm j
  • 局域网使用kubeadm安装高可用k8s集群

    主机列表 ip 主机名 节点 cpu 内存 192 168 23 100 k8smaster01 master 2核 2G 192 168 23 101 k8smaster02 node 2核 2G 192 168 23 102 k8sma
  • k8s v1.16设置Job ttlSecondsAfterFinished不生效

    目录 Completed的job默认不会清理 配置自动清理job ttl机制自动清理完成的job ttl controller 开启 TTLAfterFinished kube apiserver开启TTLAfterFinished kub
  • K8s-yaml的使用及命令

    YAML配置文件管理对象 对象管理 创建deployment资源 kubectl create f nginx deployment yaml 查看deployment kubectl get deploy 查看ReplicaSet kub
  • k8s-3:集群的三种网络

    k8s集群一共有三种网络模型 Node IP Node节点的IP地址 即物理网卡的IP地址 Pod IP Pod的IP地址 即docker容器的IP地址 此为虚拟IP地址 Cluster IP Service的IP地址 此为虚拟IP地址 N
  • calico分配网络使k8s节点指定固定网段

    文章目录 calico分配网络使k8s节点指定固定网段 1 配置calicoctl 1 1 下载calicoctl 1 2 配置calicoctl 1 3 测试calicoctl 2 配置ippool 3 添加ippool 4 创建pod测
  • docker下mysql镜像初始化

    目录 1 介绍 2 部署及验证 2 1 场景复现 2 2 创建dockerfile 2 3 初始化脚本 2 4 构建镜像并查看 2 5 创建容器并验证 2 6 完成 1 介绍 原理 当Mysql容器首次启动时 会在 docker entry
  • IDEA远程调试

    1 概述 原理 本机和远程主机的两个 VM 之间使用 Debug 协议通过 Socket 通信 传递调试指令和调试信息 被调试程序的远程虚拟机 作为 Debug 服务端 监听 Debug 调试指令 jdwp是Java Debug Wire
  • Kubernetes 集群部署 ------ 二进制部署(二)

    单节点 https blog csdn net Yplayer001 article details 104234807 先具备单master1节点部署环境 三 master02部署 优先关闭防火墙和selinux服务 在master01上
  • k8s 裸机安装 nginx1.19 ingrass

    k8s 裸机安装 nginx1 19 ingrass deploy yaml文件如下 apiVersion v1 kind Namespace metadata name ingress nginx labels app kubernete
  • k8备份与恢复-Velero

    简介 Velero 是一款可以安全的备份 恢复和迁移 Kubernetes 集群资源和持久卷等资源的备份恢复软件 Velero 实现的 kubernetes 资源备份能力 可以轻松实现 Kubernetes 集群的数据备份和恢复 复制 ku
  • K8s基础6——应用配置管理方案、调度策略、污点和污点容忍

    文章目录 一 应用配置管理方案 1 1 ConfigMap 1 1 1 注入变量 1 1 2 挂载数据卷 1 2 Secret 1 2 1 数据卷挂载 1 2 2 变量注入 二 调度策略 2 1 nodeSelector定向调度 2 1 1
  • 从Docker到Kubernetes——Kubernetes设计解读之ReplicationController、Service

    文章目录 Kubernetes的设计解读 replication controller 设计解读 replication controller 使用示例 service的设计解读 service的使用示例 Kubernetes的设计解读 r
  • k8s部署Prometheus抓取pods的metrics

    1 暴露pods给Prometheus抓取 spec replicas app replicas template metadata annotations prometheus io scrape true prometheus io p
  • K8S学习--Kubeadm-7--Ansible二进制部署

    K8S学习 Kubeadm 安装 kubernetes 1 组件简介 K8S学习 Kubeadm 安装 kubernetes 2 安装部署 K8S学习 Kubeadm 3 dashboard部署和升级 K8S学习 Kubeadm 4 测试运
  • flannel和calico区别

    k8s网络模式 Flannel数据包在主机间转发是由backend实现的 目前已经支持UDP VxLAN host gw等多种模式 VxLAN 使用内核中的VxLAN模块进行封装报文 也是flannel推荐的方式 host gw虽然VXLA

随机推荐

  • Spring Boot —— Security 控制按钮权限

    文章目录 Spring Boot Security 控制按钮权限 前言 实现 引入对应的依赖 配置标签 Spring Boot Security 控制按钮权限 前言 在freemarker中 通过Security根据用户角色控制页面按钮或菜
  • win8.1仅允许运行使用网络级别身份认证的远程桌面计算机连接,使用Win10通过Mstsc远程连接 Server 2012 R2 时出现 身份验证错误,要求的函数不受支持,这可能是由于CredSSP...

    使用Win10通过Mstsc远程连接 Server 2012 R2 时出现 身份验证错误 要求的函数不受支持 这可能是由于CredSSP加密Oracle修正 最终解决方法 原因 因为CVE 2018 0886 的 CredSSP 2018
  • unity shader 之基础四 数学

    4 2 笛卡尔坐标系 笛卡尔坐标系分为二维和三维坐标系 4 2 1二位坐标系 OpenGL 和 DirectX 二位坐标系是不同的 OpenGL 和 DirectX 是不同的图形访问接口 用来和硬件交互的 二维坐标系 是可以相互转换的 既
  • 【经典】centos 安装 mysql

    CentOS第一次安装MySQL的完整步骤 目录 1 官方安装文档 2 下载 Mysql yum包 3 安转软件源 4 安装mysql服务端 5 首先启动mysql 6 接着检查mysql 的运行状态 7 修改临时密码 7 1 获取MySQ
  • [转] 英文写作中分号和冒号的使用

    我们先来了解下分号和冒号的作用 分号的主要作用是来连接两个在语法上平等的成分 冒号的主要作用是引起读者对冒号后面内容的注意力 下面总结下规则 用分号的情况 1 用分号连接两个独立的句子 两个独立的句子不能够用逗号隔开 如果用逗号 必须逗号后
  • idea忽略.iml文件

    1 点击file文件下的设置中 2 点下file types 文件类型 进入到file types窗口 如图 然后点击忽略文件那添加需要忽略的类型
  • 自用HTML+CSS学习笔记

    HTML CSS学习笔记 1 Web标准 Web标准也称为网页标准 由一系列的标准组成 大部分由W3C World Wide Web Consortium 万维网联盟 负责制定 由三个组成部分 HTML 负责网页的结构 页面元素和内容 CS
  • IT的教育

    IT的教育 李颜芯 CSDN的网友大家好 欢迎大家收看这一起的CSDN视频访谈节目 今天我们请到了两位嘉宾 一位是 金旭亮 老师 一位是 金戈 老师 两位老师作一下自我介绍怎么样 金旭亮 我先介绍一下吧 我叫金旭亮是北京理工大学的讲师 我在
  • 怎样把pdf转换成word-多语言ocr支持

    http jingyan baidu com article 86fae34699bb4e3c49121a23 html PDF格式良好的视觉阅读性和通用性使得PDF文件的使用越来越广泛了 网络上的PDF资料也越来越多 但是我们往往想要提出
  • 【大屏】 amap + echarts 踩坑以及避免办法

    amap echarts 踩坑以及避免办法 大屏 踩坑 代码 大屏 html body container margin 0 padding 0 width 5376px height 1944px background color 000
  • softmax用于分类问题/逻辑回归

    参考 d2l 线性回归问题最后输出一个参数用于预测 多分类问题最后输出多个维度的数据 多少个output channels就有多少个类别 softmax是一种激活函数 它常见于分类问题的最后一层激活函数 目的是让输出属于一个概率密度函数 我
  • AI「领悟」有理论解释了!谷歌:两种脑回路内部竞争,训练久了突然不再死记硬背...

    梦晨 发自 凹非寺量子位 公众号 QbitAI 谷歌PAIR团队不久前撰文介绍了AI的 领悟 Grokking 现象 训练久了突然不再死记硬背 而是学会举一反三 有了泛化能力 不出一个月 另一只团队 主要成员来自DeepMind 表示 已经
  • 说实话,其实Spring Security并没有看起来那么复杂(附源码)

    权限管理是每个项目必备的功能 只是各自要求的复杂程度不同 简单的项目可能一个 Filter 或 Interceptor 就解决了 复杂一点的就可能会引入安全框架 如 Shiro Spring Security 等 其中 Spring Sec
  • Android Studio使用技巧:添加Module依赖

    今天在学习使用Volley的时候 下载好了Volley的Module文件 成功import到了Android Studio 但是却不知道怎么在自己的项目 Module 里使用 经朋友指点才知道原来还有给自己的项目添加Module Depen
  • JVM反射的实现

    实现方式 有两种不同的实现方式 一种是本地实现 一种是动态实现 JVM开始运行之后 方法的代码和入口地址都能获取到 想要通过反射调用方法 无非就是找到方法地址 然后将参数传递进去执行 本地实现就是使用native方法直接调用方法 但是这种方
  • PS调节图片:拉伸、变形

    一 对图片进行变形处理 打开PS软件 选中需要处理的图片 ctrl J复制一层图层 点击编辑选项 在下拉菜单里找到变换 变形选项 即可对图片进行变形操作 注意变形的图片下边还有一层图形 那即是我们复制图层的效果 复制图层相当于在图片上面加了
  • 计算机网络基础知识总结及思维导图(六)应用层

    文章目录 六 应用层 6 1 域名系统DNS 6 1 1 基础概念 6 1 2 域名服务器 6 2 文件传送协议 6 2 1 介绍 6 2 2 FTP协议 6 2 3 简单文件传送协议TFTP 6 3 远程终端协议TELNET 6 4 万维
  • 哪个网站云服务器最便宜,哪家云服务器比较便宜

    哪家 云服务器 是一种简单高效 安全可靠 处理能力可弹性伸缩的计算服务 其管理方式比物理服务器更简单高效 用户无需提前购买硬件 即可迅速创建或释放任意多台云服务器 我们在选择云服务器时 多从CPU 内存和磁盘特性等方面来对比 在这些因素相差
  • webdriver在浏览器中显示版本不对的解决方法

    相信看到这的小伙伴已经安装好了selenium包了 pip3 install selenium 可能是运行的时候出现这样的错误 SessionNotCreatedException Message session not created T
  • k8s系列——部署k8s集群

    1 环境准备 1 1 安装操作系统 此处选用centos 7 操作系统进行安装操作 1 2 关闭防火墙 systemctl stop firewalld systemctl disable firewalld 1 3 关闭selinux s