准备环境:

想体验下新的版本

主机名 IP 资源
k8s-master 192.168.1.191 2u2G内存20G磁盘
k8s-node 192.168.1.192 2u2G内存20G磁盘

1 修改主机名,配置hosts文件

# 修改主机名
hostnamectl set-hostname k8s-master
hostnamectl set-hostname k8s-node
# 修改hosts文件
cat >> /etc/hosts << EOF
192.168.1.191 k8s-master
192.168.1.192 k8s-node
EOF

2  关闭防火墙、selinux和交换空间

# 关闭卸载防火墙
systemctl stop firewalld
systemctl disable firewalld# 关闭selinux
# 临时关闭
setenforce 0
# 永久禁用
sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config# 关闭swap交换空间
# 临时关闭;关闭swap主要是为了性能考虑
swapoff -a
# 可以通过这个命令查看swap是否关闭了
free
# 永久关闭
sed -ri 's/.*swap.*/#&/' /etc/fstab

3 时间同步

yum install ntpdate -y && ntpdate time.windows.com

4 开启路由转发

1、加载 br_netfilter模块
modprobe br_netfilter
2、内核参数写到文件中
cat > /etc/sysctl.d/docker.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
3、加载参数
sysctl -p /etc/sysctl.d/docker.conf

5 开启ipvs

# 集群小可以不开启ipvsvi /etc/sysconfig/modules/ipvs.modules#!/bin/bash
ipvs_modules="ip_vs ip_vs_lc ip_vs_wlc ip_vs_rr ip_vs_wrr ip_vs_lblc ip_vs_lblcr ip_vs_dh ip_vs_sh ip_vs_nq ip_vs_sed ip_vs_ftp nf_conntrack"
for kernel_module in ${ipvs_modules}; do/sbin/modinfo -F filename ${kernel_module} > /dev/null 2>&1if [ 0 -eq 0 ]; then/sbin/modprobe ${kernel_module}fi
donechmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep ip_vs

6 安装containerd

# k8s 1.25已经启用docker# 先安装一些常见的依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2 wget net-tools nfs-utils lrzsz gcc gcc-c++ make cmake libxml2-devel openssl-devel curl curl-devel unzip sudo ntp libaio-devel wget vim ncurses-devel autoconf automake zlib-devel python-devel epel-release openssh-server socat ipvsadm conntrack ntpdate# 增加yum源地址
yum-config-manager --add-repo  http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo# 安装 containerd
yum install containerd -y# 启动 containerd
systemctl start  containerd && systemctl enable containerd# 创建 containerd 配置文件
mkdir -p /etc/containerd
containerd config default > /etc/containerd/config.toml
# 修改容器镜像地址
grep sandbox_image  /etc/containerd/config.toml
sed -i "s#registry.k8s.io/pause#registry.aliyuncs.com/google_containers/pause#g" /etc/containerd/config.toml
grep sandbox_image  /etc/containerd/config.toml
# 修改containerd systemdCgroup
grep SystemdCgroup  /etc/containerd/config.toml
sed -i 's#SystemdCgroup = false#SystemdCgroup = true#g' /etc/containerd/config.toml
# 重启containerd
systemctl restart containerd

7 安装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
# 安装 disableexcludes=kubernetes:禁掉除了这个kubernetes之外的别的仓库,不指定会安装最新版本的
# 指定版本号kubectl-1.25.2
yum install -y kubelet kubeadm kubectl disableexcludes=kubernetes
# 设置开机启动 --now:立刻启动服务
systemctl enable --now kubelet# k8s 设置容器进行时
crictl config runtime-endpoint /run/containerd/containerd.sock

前1-7步骤master和node节点都需要执行一遍

8 初始化集群

方法一

# 通过命令初始化集群配置
kubeadm init \
--apiserver-advertise-address=192.168.1.191 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.25.2 \
--service-cidr=10.96.0.0/16 \
--pod-network-cidr=10.244.0.0/16 \

方法二

# 可以通过yaml 文件初始化集群
# 获取yaml文件
kubeadm config print init-defaults > init.default.yaml
# 修改yaml文件
vim init.default.yamlapiVersion: kubeadm.k8s.io/v1beta3
bootstrapTokens:
- groups:- system:bootstrappers:kubeadm:default-node-tokentoken: abcdef.0123456789abcdefttl: 24h0m0susages:- signing- authentication
kind: InitConfiguration
localAPIEndpoint:// 指定k8smaster使用那个网口通讯,不指定默认使用有网关的接口advertiseAddress: 192.168.1.191 bindPort: 6443
nodeRegistration:# 设置用containerd做容器进行时criSocket: /run/containerd/containerd.sockimagePullPolicy: IfNotPresent// master主机名name: k8s-master taints: null
---
apiServer:timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta3
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns: {}
etcd:local:dataDir: /var/lib/etcd
// 镜像下载地址,改为阿里源
imageRepository: registry.aliyuncs.com/google_containers
kind: ClusterConfiguration
// k8s版本
kubernetesVersion: 1.25.2
networking:dnsDomain: cluster.local// 指定pod地址范围podSubnet: 10.244.0.0/16// 指定service地址范围serviceSubnet: 10.96.0.0/16scheduler: {}
// 开始ipvs, 如果使用IPtables可以不开启
---
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
mode: ipvs
// 设置k8scgroup 为systemd
---
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
cgroupDriver: systemd# 通过yaml文件初始化集群
kubeadm init --config=init.default.yaml

9 master 添加证书,扩容一个node节点

# master 节点安装完毕后,复制授权证书到home文件夹中mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/config
# 在node 节点执行kubeadm join加入集群
kubeadm join 192.168.1.191:6443 --token abcdef.0123456789abcdef \--discovery-token-ca-cert-hash sha256:8f52f81b611acd4b44512e48245ea33a58d4ab75e5d1d036aa33f38a45d08cd3 # 使用命令查看集群节点
kubectl get nodes# 获得新的token
kubeadm token create --print-join-command# 通过标签给新加入的节点设置个角色
kubectl label node k8s-node node-role.kubernetes.io/work=work

设置标签后

10 安装网络插件 calico

kubectl apply -f "https://docs.projectcalico.org/manifests/calico.yaml"

11 测试集群是否能正常使用

# 创建pod
kubectl create deployment my-web --image=nginx
# 创建service
kubectl expose deployment my-web --port=80 --target-port=80 --type=NodePort# 运行个pod测试是否可以ping通百度
kubectl run busybox --image busybox:1.28 --restart=Never --rm -it busybox -- sh

 问题:

刚开始配置集群时一直报错后来百度后才知道原来k8s已经弃用了docker

[etcd] Creating static Pod manifest for local etcd in "/etc/kubernetes/manifests"
[wait-control-plane] Waiting for the kubelet to boot up the control plane as static Pods from directory "/etc/kubernetes/manifests". This can take up to 4m0s
[kubelet-check] Initial timeout of 40s passed.Unfortunately, an error has occurred:timed out waiting for the conditionThis error is likely caused by:- The kubelet is not running- The kubelet is unhealthy due to a misconfiguration of the node in some way (required cgroups disabled)If you are on a systemd-powered system, you can try to troubleshoot the error with the following commands:- 'systemctl status kubelet'- 'journalctl -xeu kubelet'

k8s-kubeadm安装1.25.5相关推荐

  1. k8s kubeadm 安装

    kubernetes 是什么 kubernetes 是 google 在2014 年开源的一个容器集群管理系统 kuberetes 简述 k8s k8s 用于容器化应用程序的部署 扩展和管理 k8s ...

  2. Kubernetes学习-K8S安装篇-Kubeadm安装高可用K8S集群

    Kubernetes学习-K8S安装篇-Kubeadm高可用安装K8S集群 1. Kubernetes 高可用安装 1.1 kubeadm高可用安装k8s集群1.23.1 1.1.1 基本环境配置 1 ...

  3. 从0开始安装k8s1.25【最新k8s版本——20220904】

    文章目录 从0开始安装k8s1.25 一.准备工作 1.安装Vmware和虚拟机CentOS 2.虚拟机CentOS环境初始化 3.安装容器运行时Containerd 二.安装kubelet kube ...

  4. 使用kubeadm安装k8s集群的完整步骤(k8sv15.1)

    一.创建虚拟机 首先使用vmware15 pro创建了4台centos7虚拟机,其中,3台用来组建k8s集群,1台为master节点,2台为node节点, 剩下的一台用来安装harbor配置私有仓库( ...

  5. K8S介绍并使用kubeadm安装k8s1.26.3-Day 01

    1. 云原生介绍 1.1 云原生简介 1.2 云原生定义 官网地址:https://github.com/cncf/toc/blob/main/DEFINITION.md#%E4%B8%AD%E6%9 ...

  6. 【k8s系列】vmware中ubuntu22.04使用kubeadm安装k8s集群(1.24.4 or higher)(cka考试环境搭建)

    文章目录 部署环境准备 环境修改 修改hostname(各修改各的) 修改hosts文件(master 和所有node ) 禁用swap(master 和所有node) 修改内核参数(master 和 ...

  7. centos7下使用kubeadm安装k8s

    kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具.这个工具能通过两条指令完成一个kubernetes集群的部署. 在开始之前,部署Kubernetes集群机器需要满足以下几 ...

  8. kubeadm安装K8S单master双节点集群

    宿主机: master:172.16.40.97 node1:172.16.40.98 node2:172.16.40.99 # 一.k8s初始化环境:(三台宿主机) 关闭防火墙和selinux sy ...

  9. 用Kubeadm安装K8s后,kube-flannel-ds一直CrashLoopBackOff

    2019独角兽企业重金招聘Python工程师标准>>> 如果使用Kubeadm安装K8s集群,在安装flannel网络插件后,发现pod: kube-flannel-ds 一直是Cr ...

  10. (亲测无坑)Centos7.x使用kubeadm安装K8s集群1.15.0版本

    基础环境配置 三台Centos7.x的服务器,主节点 cpu >=2,node节点>=1 注:(上述cpu为最低配置,否则集群安装部署会报错,无法启动,对其他硬件无硬性要求) 以下操作若无 ...

最新文章

  1. plsql误删除数据,提交事务后如何找回?
  2. linux挂载到哪个分区,Linux中直接挂载硬盘和挂载分区有什么区别?
  3. 一般计算 【2007】三3 C++版
  4. Java项目课程01:课程概述
  5. 如果没有云栖大会,中国云计算将要落后多少年?
  6. docker容器无法删除——状态Dead
  7. Java题库(为了这辈子能吃上俩个菜好好学Java)
  8. 【小程序-开篇】国内IT技术圈的技能树貌似点歪了?
  9. godaddy域名转入步骤
  10. cadence软件问题解决集
  11. ubuntu9.10 添加bones7456源
  12. React Native UI渲染流程分析(Android)
  13. 记录制作音响的青葱岁月
  14. 夫兵形象水,水之行避高趋下,兵之形避实击虚;水因地制流,兵因故制胜。故兵无常势水无常形。能因敌变化取胜者谓之神。
  15. 怎么将CAJ转换成PDF
  16. android期末课设选题_基于本科计算机安卓android毕业设计选题题目
  17. bzoj 3055 礼物运送
  18. 32.768K的晶振用途
  19. Python数据分析——上海市二手房价格分析
  20. 工信部前部长苗圩:5G应用场景约80%是To B,车联网或是最大应用(附关键数据)...

热门文章

  1. 机器学习-线性判别分析
  2. 小白数据分析行业,给大家推荐几本有用的书籍
  3. 生物麦克斯韦妖:生命如何利用信息产生秩序
  4. 二级域名小语种互译批量翻译的技巧
  5. 微信小程序七夕节礼物
  6. android显示每一年所有日期的功能,Android获取一天前的时间、一个月前的时间、一年前的时间...
  7. 百度ocr次数50,000次/天 调整
  8. MMORPG网络游戏如何实现玩家同步
  9. 百格活动:还在回复“嗯” “好的”?四步教你如何与老板聊天
  10. 搭档之家:身价2000亿!“大自然的搬运工”农夫山泉≈3个康师傅