文章目录

  • 从0开始安装k8s1.25
    • 一、准备工作
      • 1、安装Vmware和虚拟机CentOS
      • 2、虚拟机CentOS环境初始化
      • 3、安装容器运行时Containerd
    • 二、安装kubelet kubeadm kubectl
      • 1、使用阿里云镜像安装
      • 2、使用kubeadm创建集群
      • 3、初始化master节点
      • 4、安装 Pod 网络附加组件
      • 5、加入node节点
      • 6、验证是否安装成功

从0开始安装k8s1.25

相关链接:
VMware官网:https://www.vmware.com/
containerd官网:https://containerd.io/
kubernetes官网: https://kubernetes.io/
阿里云镜像官网:https://developer.aliyun.com/mirror/
Caclio官网:https://www.tigera.io/project-calico/
Containerd【轻量级容器管理工具】:https://blog.csdn.net/qq_41822345/article/details/126677121
安装高可用版k8s集群:https://mp.weixin.qq.com/s/lqasax-2-t4QpzgcCOqF-A

一、准备工作

1、安装Vmware和虚拟机CentOS

假设现在我们有了VMware,并在其中安装了三台虚拟机。
虚拟机安装流程:https://blog.csdn.net/qq_41822345/article/details/105567852

2、虚拟机CentOS环境初始化

下面进行系统环境的初始化。
Linux系统初始化环境【docker安装部分可以选择跳过】:https://blog.csdn.net/qq_41822345/article/details/118096213

3、安装容器运行时Containerd

容器运行时containerd安装【弃用docker】,所有主机都需要安装 容器运行时。
Containerd安装:https://blog.csdn.net/qq_41822345/article/details/126677121

二、安装kubelet kubeadm kubectl

所有主机都需要安装 kubelet和kubeadm

kubernetes官网: https://kubernetes.io/
阿里云镜像官网:https://developer.aliyun.com/mirror/

kubernetes官方镜像安装一般会报错【无法解析url】:

failure: repodata/repomd.xml from kubernetes: [Errno 256] No more mirrors to try.
https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64/repodata/repomd.xml: [Errno 14] curl#7 - "Failed connect to packages.cloud.google.com:443; Connection refused"

1、使用阿里云镜像安装

# 阿里云最新镜像[2022-0901]
$ cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF$ setenforce 0
# ps: 由于官网未开放同步方式, 可能会有索引gpg检查失败的情况, 这时需要跳过gpg检查
$ yum install -y --nogpgcheck kubelet kubeadm kubectl
$ systemctl enable kubelet && systemctl start kubelet# 安装完成验证
$ kubelet --version
Kubernetes v1.25.0

2、使用kubeadm创建集群

先初始化一些必要配置【所有机器】

# 设计hostname
$ hostnamectl set-hostname k8s201
$ hostnamectl set-hostname k8s202
$ hostnamectl set-hostname k8s203$ hostname
k8s201
$ hostname
k8s202
$ hostname
k8s203#以方便互相访问
$ cat >>/etc/hosts<<EOF
192.168.168.201 k8s201
192.168.168.202 k8s202
192.168.168.203 k8s203
EOF#关闭防火墙和关闭SELinux
$ systemctl stop firewalld
$ systemctl disable firewalld
$ setenforce 0 # 临时关闭
$ vim /etc/sysconfig/selinux #永久关闭
# 改为SELINUX=disabled# 所有节点关闭swap
$ swapoff -a  #临时关闭
$ vim /etc/fstab #永久关闭
#注释掉以下字段
/dev/mapper/cl-swap swap swap defaults 0 0#设置允许路由转发,不对bridge的数据进行处理,先创建文件
$ vim /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
# 执行文件
$ sysctl -p /etc/sysctl.d/k8s.conf# kube-proxy 开启ipvs的前置条件【极其重要】
# 安装ipvsadm工具
$ yum install ipset ipvsadm -y
$ cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
EOF
# 添加文件权限
$ chmod 755 /etc/sysconfig/modules/ipvs.modules && bash
$ /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4# 加载 br_netfilter模块【默认是不加载的,所以需要手动加载】
$ modprobe br_netfilter

3、初始化master节点

kubeadm init 首先运行一系列预检查以确保机器 准备运行 Kubernetes。这些预检查会显示警告并在错误时退出。然后 kubeadm init 下载并安装集群控制平面组件。这可能会需要几分钟。

$ kubeadm init --help$ kubeadm init --kubernetes-version=1.25.0 \
--apiserver-advertise-address=192.168.168.201 \
--image-repository registry.aliyuncs.com/google_containers \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16#注意:
# kubernetes-version的值 即为 kubelet --version获得的值
# apiserver-advertise-address这个地址必须是master机器的IP# 如果有报错,可以执行以下命令进行排查【一般都是因为外网原因拉取不到镜像,可以拉取国内镜像代替】
$ systemctl status kubelet -l
$ systemctl status containerd -l# 查看安装k8s所需的镜像列表
$ kubeadm config images list
# 通过查询拉取k8s所需的镜像,看缺哪些镜像
$ ctr -n k8s.io images ls | grep 镜像名
# 比如缺乏pause:3.6镜像
### 由于k8s.gcr.io 需要连外网才可以拉取到,导致 k8s 的基础容器 pause 经常无法获取。k8s docker 可使用代理服拉取,再利用 docker tag 解决问题
$ docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.6
$ docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.6 k8s.gcr.io/pause:3.6
#但是我们k8s集群中使用的CRI是containerd。所以只能通过 docker tag 镜像,再使用 ctr 导入镜像.
$ docker save k8s.gcr.io/pause -o pause.tar
$ ctr -n k8s.io images import pause.tar# 解决报错后,要再次运行 kubeadm init,必须首先卸载集群
$ kubeadm reset#成功示例:
Your Kubernetes control-plane has initialized successfully!To start using your cluster, you need to run the following as a regular user:mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/configAlternatively, if you are the root user, you can run:export KUBECONFIG=/etc/kubernetes/admin.confYou should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:https://kubernetes.io/docs/concepts/cluster-administration/addons/Then you can join any number of worker nodes by running the following on each as root:
# 这一行生成的临时令牌[24h过期]是用来加入node节点
kubeadm join 192.168.168.201:6443 --token pq5otc.ker47p9nails0xsf \--discovery-token-ca-cert-hash sha256:7a256694edafdbd21b52ca729b0b7ebc142c7fe8435657a6115b95019d2a3178

配置可以运行 kubectl,请运行以下命令:

$ mkdir -p $HOME/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config
# 验证
$ kubectl get pods --all-namespaces

4、安装 Pod 网络附加组件

每个集群只能安装一个 Pod 网络。这里安装calico网络。

相关链接:https://www.tigera.io/project-calico

$ curl https://docs.projectcalico.org/manifests/calico.yaml -O
# 把calico.yaml里pod所在网段改成kubeadm init时选项--pod-network-cidr所指定的网段
$ sed -i 's/192.168.0.0/10.244.0.0/g' calico.yaml
$ kubectl apply -f calico.yaml
# 验证
$ kubectl get pods --all-namespaces
NAMESPACE     NAME                                       READY   STATUS    RESTARTS   AGE
kube-system   calico-kube-controllers-58dbc876ff-bhmdv   1/1     Running   0          2m39s
kube-system   calico-node-9qppz                          1/1     Running   0          2m39s
kube-system   coredns-c676cc86f-f4vwx                    1/1     Running   0          54m
kube-system   coredns-c676cc86f-htq2v                    1/1     Running   0          54m
kube-system   etcd-k8s201                                1/1     Running   1          54m
kube-system   kube-apiserver-k8s201                      1/1     Running   0          54m
kube-system   kube-controller-manager-k8s201             1/1     Running   1          54m
kube-system   kube-proxy-pn4k7                           1/1     Running   0          54m
kube-system   kube-scheduler-k8s201                      1/1     Running   1          54m

5、加入node节点

通过在 kubectl get pods --all-namespaces 输出中检查 CoreDNS Pod 是否 Running 来确认其是否正常运行。只有 CoreDNS Pod 启用并运行成功,才可以加入node节点。

$ kubectl get node
NAME     STATUS   ROLES           AGE   VERSION
k8s201   Ready    control-plane   54m   v1.25.0# 执行master节点初始化成功后的输出
$ kubeadm join 192.168.168.201:6443 --token pq5otc.ker47p9nails0xsf \--discovery-token-ca-cert-hash sha256:7a256694edafdbd21b52ca729b0b7ebc142c7fe8435657a6115b95019d2a3178# 验证
$ kubectl get node
NAME     STATUS     ROLES           AGE   VERSION
k8s201   Ready      control-plane   57m   v1.25.0
k8s202   NotReady   <none>          70s   v1.25.0# 再加入一个node节点
$ kubeadm join 192.168.168.201:6443 --token pq5otc.ker47p9nails0xsf \--discovery-token-ca-cert-hash sha256:7a256694edafdbd21b52ca729b0b7ebc142c7fe8435657a6115b95019d2a3178# 验证
$ kubectl get po --all-namespaces
NAMESPACE     NAME                                       READY   STATUS    RESTARTS   AGE
kube-system   calico-kube-controllers-58dbc876ff-bhmdv   1/1     Running   0          17m
kube-system   calico-node-9qppz                          1/1     Running   0          17m
kube-system   calico-node-j28p5                          1/1     Running   0          11m
kube-system   calico-node-jbwn7                          1/1     Running   0          12m
kube-system   coredns-c676cc86f-f4vwx                    1/1     Running   0          69m
kube-system   coredns-c676cc86f-htq2v                    1/1     Running   0          69m
kube-system   etcd-k8s201                                1/1     Running   1          69m
kube-system   kube-apiserver-k8s201                      1/1     Running   0          69m
kube-system   kube-controller-manager-k8s201             1/1     Running   1          69m
kube-system   kube-proxy-8czn5                           1/1     Running   0          12m
kube-system   kube-proxy-pn4k7                           1/1     Running   0          69m
kube-system   kube-proxy-vcgwv                           1/1     Running   0          11m
kube-system   kube-scheduler-k8s201                      1/1     Running   1          69m
$ kubectl get node
NAME     STATUS   ROLES           AGE   VERSION
k8s201   Ready    control-plane   69m   v1.25.0
k8s202   Ready    <none>          12m   v1.25.0
k8s203   Ready    <none>          11m   v1.25.0

完成

如果想安装高可用版k8s集群,可参考:https://mp.weixin.qq.com/s/lqasax-2-t4QpzgcCOqF-A

6、验证是否安装成功

使用k8s启动一个deployment资源。

$ vim deploy-nginx.yaml
$ cat deploy-nginx.yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: nginx-deployment
spec:selector:matchLabels:app: nginxreplicas: 3 # 告知 Deployment 运行 3 个与该模板匹配的 Podtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:1.14.2ports:- containerPort: 80
$ kubectl apply -f deploy-nginx.yaml
deployment.apps/nginx-deployment created
$ kubectl get po
NAME                                READY   STATUS    RESTARTS   AGE
nginx-deployment-7fb96c846b-6xxw8   1/1     Running   0          6s
nginx-deployment-7fb96c846b-r2s9z   1/1     Running   0          6s
nginx-deployment-7fb96c846b-tsmhh   1/1     Running   0          6s

从0开始安装k8s1.25【最新k8s版本——20220904】相关推荐

  1. Centos+Nginx+PHP7.0编译安装(和PHP5.6老版本共存)

    来源:http://blog.csdn.net/liuxinmingcode/article/details/50319145 场景 LNMP  当前版本:PHP 5.5.7  为了体验PHP7的速度 ...

  2. AltiumDesigner20.0.10安装+防局域网(多版本支持)+许可带视频教程

    有帮助就点个赞呗 2021-3-3更新 Altium Designer 20.0.10正式版 链接:https://pan.baidu.com/s/12g9vy8D5aYcN9Iq8BLFsSg 提取 ...

  3. Windows系统MySQL8.0的安装教程

    1 2 3 4 5 6 7 分步阅读 MySQL推出的8.0版本亮点多多,尤其是两倍的提速更让我们迫不及待地安装一睹为快.然而目前我们所用的版本还在5.7之前,今天小编给家分享一下MySQL8.0的安 ...

  4. Ubuntu 18.04 安装显卡驱动+CUDA10+多版本CUDA+Tensorflow gpu1.13.1

    废话不多说,直奔主题! 一.安装驱动 1.去官网下载驱动,这个根据自己的显卡去搜索,比如我的卡是RTX2070: 然后点击"搜索"按钮,出现界面: 这里提示对应的驱动版本,点击下载 ...

  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. 2021年最新 k8s安装部署步骤 kubernetes从入门到实践 K8S实战容器化迁移实战教程 K8S存储之Ceph分布式存储系统 K8S架构师实战指南

    2021年最新 k8s安装部署步骤 kubernetes从入门到实践 K8S实战容器化迁移实战教程 K8S存储之Ceph分布式存储系统 K8S架构师实战指南

  7. Windows10最新MySQL8.0.23安装教程(超级详细)

    MySQL8.0.23安装教程 一.下载地址 二.安装步骤 2.1 解压 2.2 创建my.ini配置文件 2.3 配置系统环境变量 2.4 打开CMD命令窗口 2.5 安装服务 2.6 启动服务 2 ...

  8. python3.9安装教程_Python最新3.9.0编译器安装教程

    一.小编有话说 随着人工智能的快速发展,Python 语言越来越受大家的欢迎,那么如何安装 Python 编译器便成了小白们学习路上的第一只拦路虎,小编在这对小白们如何安装 Python 编译器做了一 ...

  9. ShopXO本地化部署安装之centeros 安装Apache2.4.6 + PHP7.0.33 + Mysql5.7.25环境

    对于centerOS安装PHP环境,目前网上的帖子都已经比较成熟,具体步骤大家可以自行搜索查看,但是在安装过程中遇到的一些小细节,这些内容往往需要结合多个帖子才能找到答案,在这里简单记录一下. 细节一 ...

最新文章

  1. java安全地生成128,256,512bit随机数
  2. 判断一个变量是不是数组
  3. c语言内存拷贝 memcpy()函数
  4. mysql 怎么在VS2017上附加进去
  5. web移动端性能调优及16ms优化
  6. HDLBits答案(2)_Verilog向量基础
  7. EAS WebService部署
  8. WPF 实现调用本机摄像头~
  9. 在Windows系统下搭建ELK日志分析平台
  10. 阿里云自研数据仓库 AnalyticDB 再捧 TPC 全球冠军
  11. 静态配置_配置静态LSP示例
  12. 关于Mysql datetime类型存储范围测试
  13. JSP 中 forward 转发 和 sendRedirect 重定向的区别
  14. 常见设计稿字体对应字重font-weight大小
  15. 颜色六位码和八位码表示
  16. NOTEXPRESS 链接文件夹——让题录在文件夹中共享
  17. 戴尔 微博 服务器 销售,微博营销案例之戴尔
  18. Android兼容性测试的一些坑
  19. 开关调色新世界BP2888电源解决方案
  20. ue4物品审视功能及景深效果

热门文章

  1. 进击的巨人 《兵王》6月28日启动新服【游戏资讯】
  2. ipad/iphone的浏览器,为啥可以播放优酷土豆等在线视频
  3. springboot之ice规则引擎探索
  4. 基于微信共享洗衣小程序系统设计与实现 开题报告
  5. matplotlib 辅助线
  6. Numerical Summation of a Series
  7. 共享企业文化造就企业明天
  8. U-BOOT启动流程【03】
  9. 【3D游戏模型】在ZBrush中制作3D兽人
  10. 铕掺杂的氧化钇纳米片/片状氧化钴二维层状碳化钛复合材料-瑞禧