使用kubeadm部署kubernetes 1.24.3

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

 节点信息:

172.31.7.101   master1     控制节点
172.31.7.102     node1     工作节点
172.31.7.103     node2     工作节点

 这里使用containerd作为运行时,部署可参照

https://blog.csdn.net/weixin_46476452/article/details/127670046

目录

一、系统环境初始化

二、配置apt源、下载kubeadm

三、安装cni

四、初始化kubernetes

五、配置节点认证,加入集群

六、部署calico网络插件

七、验证

八、报错处理


一、系统环境初始化

1、关闭swap
# swapoff  -a
# sed -i 's@/swap@#/swap@' /etc/fstab

2、时钟同步
如果没有时钟服务下载一个
# apt install chrony
# systemctl status chronyd
# # systemctl status chronyd

3、配置内核参数
   (1)、加载模块
     # modprobe br_netfilter
   (2)、添加内核参数
     # echo -e "net.ipv4.ip_forward = 1\nnet.bridge.bridge-nf-call-iptables = 1 " >> /etc/sysctl.conf

   (3)、配置生效
     # sysctl -p
     net.ipv4.ip_forward = 1
     net.bridge.bridge-nf-call-iptables = 1

 我系统防火墙本身就已经关闭,因此未列出,请知悉

二、配置apt源、下载kubeadm

1、安装https包传输工具apt-transport-https,支持https的apt源
# apt-get update && apt-get install -y apt-transport-https

2、把key导入,用于校验包的完整性
# curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
 
3、此时还没用添加仓库源,因此没有kubeadm
# apt-cache madison kubeadm
 N: Unable to locate package kubeadm

3、添加kubeadm镜像阿里云的仓库源
# cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
> deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
> EOF

4、更新仓库
# apt-get update

 可以看见很多版本的kubeadm包,都是阿里云镜像仓库提供的,版本号要与k8s版本号保持一致package.nymcni.com,kubernetes,云原生,容器

  下载 1.24.3版本

# apt-get install kubeadm=1.24.3-00 kubectl=1.24.3-00 kubelet=1.24.3-00

 

三、安装cni

cni 是 K8s 中标准调用网络实现的接口。Kubelet 通过这个标准的 API 来调用不同的网络插件以实现不同的网络配置方式。实现了这个接口的就是 CNI 插件,它实现了一系列的 CNI API 接口。常见的 CNI 插件包括 Calico、flannel

Releases · containernetworking/plugins · GitHub

1、下载cni
# wget https://github.com/containernetworking/plugins/releases/download/v1.1.1/cni-plugins-linux-amd64-v1.1.1.tgz
 

2、cni解压(提前创建/opt/cni/bin/目录)
# tar xvf cni-plugins-linux-amd64-v1.1.1.tgz -C /opt/cni/bin/

 四、初始化kubernetes

1、下载镜像(提前下载,初始化集群的时候可节省时间)

      1.1、列出我们初始化v1.24.3版本kubernetes,所需要的镜像

package.nymcni.com,kubernetes,云原生,容器 这些镜像默认是使用Google官方镜像仓库,无法直接访问,我们可以从国内的阿里镜像仓库下载

     1.2、编写脚本,执行脚本下载镜像

root@master1:/usr/local/src# cat images-down.sh
#!/bin/bash
nerdctl pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.24.3
nerdctl pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.24.3
nerdctl pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.24.3
nerdctl pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.24.3
nerdctl pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.7
nerdctl pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.5.3-0

      1.3、下载完毕

package.nymcni.com,kubernetes,云原生,容器

   2、修改配置文件

# vim /etc/containerd/config.toml

61  sandbox_image = "registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.7"
127 SystemdCgroup = true

将61行Google镜像替换成阿里云的镜像
将127行值改为true

 在K8S中创建容器时默认使用google官方镜像仓库的镜像k8s.gcr.io/pause:3.7 ,需要修改为国内的镜像 (3.7版本是根据上面#kubeadm config images list --kubernetes-version v1.24.3 列出的),该镜像是封装POD底层网络的,实现一个POD内多个容器公用同一个网络

   3、kubeadm初始化:

root@master1:~# kubeadm init --apiserver-advertise-address=172.31.7.101 \
> --apiserver-bind-port=6443  \
> --kubernetes-version=v1.24.3  \
> --pod-network-cidr=10.100.0.0/16 \
> --service-cidr=10.200.0.0/16 \
> --service-dns-domain=cluster.local \
> --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers \
> --ignore-preflight-errors=swap

命令注解:

--apiserver-advertise-address=172.31.7.101(监听地址就是当前本机ip地址)

--apiserver-bind-port=6443 (apiserver监听端口默认就是6443)

--kubernetes-version=v1.24.3 (当前K8S实际版本号)

--pod-network-cidr=10.100.0.0/16  (pod网络)
--service-cidr=10.200.0.0/16   (service网络,和pod网络不能一样)

--service-dns-domain=cluster.local  (service域名后缀,默认是cluster.local)
--image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers (把镜像仓库指向阿里云的仓库)
--ignore-preflight-errors=swap   (忽略因开启swap而报错)

 初始化成功

package.nymcni.com,kubernetes,云原生,容器

上面的回显包括两四部分信息

第一:表示初始化成功

第二:表示某个节点想要使用集群需要配置认证文件,具体命令以给出

第三:需要安装网络插件flannel或者calico,并且给出了下载地址

第四: 添加worker节点需要执行的指令

五、配置节点认证,加入集群

刚初始化完成后是无法使用kubectl get查看到资源信息的,因为节点上的api service默认会连接本机的8080端口而不是api service默认的6443端口,因此各节点都需要config文件来获取这些信息package.nymcni.com,kubernetes,云原生,容器

查看config配置文件的信息
root@master1:~# kubectl config view
apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: DATA+OMITTED
    server: https://172.31.7.101:6443

指定了连接172.31.7.101:6443,
DATA+OMITTED并且使用了证书做认证,因此每个节点都需要有这个文件才能连接到api service

 kubectl默认使用$HOME/.kube/config文件,向集群提供认证信息的

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

将 $HOME/.kube/config文件拷贝到两个node节点上,否则会有认证问题服务正常执行kubectl

root@node1:~# mkdir /root/.kube/
root@node2:~# mkdir /root/.kube/

root@master1:~# scp /root/.kube/config node1:/root/.kube/
root@master1:~# scp /root/.kube/config node2:/root/.kube/

 依次加入worker节点

root@node1:~# kubeadm join 172.31.7.101:6443 --token qwqjvh.0pg5kl4crvetbjce \
>         --discovery-token-ca-cert-hash sha256:f02108644fd8bb51862765f604ee5dc59630e66d535b25191bf32644df835871

六、部署calico网络插件

calico.yaml官网路径如下截图

Customize Calico configuration

package.nymcni.com,kubernetes,云原生,容器

1、下载calico.yaml

curl https://raw.githubusercontent.com/projectcalico/calico/v3.24.4/manifests/calico.yaml -O

2、修改calico.yaml

它默认的是192.168.0.0/16 把这个地址修改成我们初始化时给定的pod地址

package.nymcni.com,kubernetes,云原生,容器

3、启动calico网络插件

# kubectl apply -f calico.yaml 

七、验证

1、查看节点状态,都已ready

package.nymcni.com,kubernetes,云原生,容器

2、查看pod状态

package.nymcni.com,kubernetes,云原生,容器

3、服务测试

root@master1:~# cat nginx.yaml
kind: Deployment
#apiVersion: extensions/v1beta1
apiVersion: apps/v1
metadata:
  labels:
    app: myserver-nginx-deployment-label
  name: myserver-nginx-deployment
  namespace: myserver
spec:
  replicas: 1
  selector:
    matchLabels:
      app: myserver-nginx-selector
  template:
    metadata:
      labels:
        app: myserver-nginx-selector
    spec:
      containers:
      - name: myserver-nginx-container
        image: nginx
        #command: ["/apps/tomcat/bin/run_tomcat.sh"]
        #imagePullPolicy: IfNotPresent
        imagePullPolicy: Always
        ports:
        - containerPort: 80
          protocol: TCP
          name: http
        - containerPort: 443
          protocol: TCP
          name: https
        env:
        - name: "password"
          value: "123"
        - name: "age"
          value: "18"

---
kind: Service
apiVersion: v1
metadata:
  labels:
    app: myserver-nginx-service-label
  name: myserver-nginx-service
  namespace: myserver
spec:
  type: NodePort
  ports:
  - name: http
    port: 80
    protocol: TCP
    targetPort: 80
    nodePort: 30004
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
    nodePort: 30443
  selector:
    app: myserver-nginx-selector

 创建nginx.yaml资源

root@master1:~# kubectl create ns myserver
namespace/myserver created

root@master1:~# kubectl apply -f nginx.yaml
deployment.apps/myserver-nginx-deployment created
service/myserver-nginx-service created

 访问任意节点的30004端口

package.nymcni.com,kubernetes,云原生,容器

package.nymcni.com,kubernetes,云原生,容器

 八、报错处理

          第一次初始化不成功,看了下containerd服务状态有pause字段告警

package.nymcni.com,kubernetes,云原生,容器

 恢复到初始化前状态

还原初始化之前状态
# kubeadm reset
# systemctl restart containerd.service

 查看配置文件发现镜像路径少一个符号,导致拉不到镜像,修改后再进行初始化就OK了文章来源地址https://www.toymoban.com/news/detail-638844.html

到了这里,关于使用kubeadm部署kubernetes 1.24.3的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 云原生|kubernetes|centos7下的kubeadm部署的集群内在线部署kubesphere(外部etcd)

    云原生|kubernetes|centos7下的kubeadm部署的集群内在线部署kubesphere(外部etcd)

    本文将主要就在centos7操作系统下已有的一个利用kubeadm部署的集群内在线安装kubesphere做一个介绍,该kubernetes集群是使用的etcd外部集群。 kubernetes集群的搭建本文不做过多介绍,具体的搭建流程见我的博客: 云原生|kubernetes|kubeadm部署高可用集群(一)使用外部etcd集群_kubeadm

    2024年02月11日
    浏览(12)
  • 云原生Kubernetes: Kubeadm部署K8S 1.29版本 单Master架构

    云原生Kubernetes: Kubeadm部署K8S 1.29版本 单Master架构

    目录 一、实验 1.环境 2.K8S master节点环境准备 3.K8S master节点安装kubelet、kubeadm、kubectl 3.K8S node节点环境准备与软件安装 4.K8S master节点部署服务 5.K8S node节点部署 6.K8S master节点查看集群 7.容器网络(CNI)部署 8.K8S 集群测试 二、问题 1.calico生成资源报错 2.为何要安装docker和ci-d

    2024年02月01日
    浏览(49)
  • 使用 kubeadm 部署 kubernetes 1.27.1 版本

    使用 kubeadm 部署 kubernetes 1.27.1 版本

    目录 前言 一、搭建前的准备 1. 搭建k8s的平台规划 2. 服务器硬件配置要求 3. 搭建部署的方式 二、搭建流程 1. kubeadm搭建方式 a. 准备工作,系统初始化 c. 设置一下ipv4,否则会失败(此处为坑,不设置无法初始化成功) d. 安装containerd  e. 安装kubectl、kubelet、kubeadm  f. master节点

    2024年02月06日
    浏览(13)
  • 【kubernetes】Debian使用Kubeadm部署Kubernetes失败:Connection Refused

    这篇文章也可以在我的博客中查看 今天废话不多说直接解决一个阴间问题 在部署kubernetes后(执行完 kubeadm init 后),执行任何 kubectl 命令,都会报以下错误: 此后执行 kubectl get pods -A 你会看到一些容器在无规律地被摧毁 在过一段时间后, Api-server 直接开摆,你无法再连接上

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

    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日
    浏览(64)
  • centos安装部署Kubernetes(k8s)步骤使用kubeadm方式

    centos安装部署Kubernetes(k8s)步骤使用kubeadm方式

    机器地址: 192.168.0.35 k8s-master 192.168.0.39 k8s-node1 192.168.0.116 k8s-node2 修改每台机器的名字 关闭防火墙和selinux 临时关闭selinux: 永久关闭: 修改selinux为disabled或者permissive 重启生效 配置本地解析 确保每个节点MAC地址和 product_uuid 的唯一性 同步时间 如果各机器上时间都没有问题

    2024年02月06日
    浏览(19)
  • kubeadm部署k8sv1.24使用cri-docker做为CRI

    测试使用cri-docker做为containerd和docker的中间层垫片。 IP 系统 主机名 10.0.6.5 ubuntu 22.04.3 jammy master01.kktb.org 10.0.6.6 ubuntu 22.04.3 jammy master02.kktb.org 10.0.6.7 ubuntu 22.04.3 jammy master03.kktb.org 步骤: 系统优化 禁用swap,设置ip_forward hosts地址配置 等 配置docker源 配置kubernetes源 kubeadm初始化

    2024年02月07日
    浏览(32)
  • CentOS 7/8使用kubeadm部署kubernets(k8s)集群【附阿里云实验室】

    CentOS 7/8使用kubeadm部署kubernets(k8s)集群【附阿里云实验室】

    好消息好消息,阿里云全线降价,大量服务提供免费甚至永久的试用,赶紧来薅大厂羊毛吧,坐电梯即可直达! 送福利!阿里云热门产品免费领(含ECS),点击进入 :https://click.aliyun.com/m/1000370359/ 送福利!阿里云热门产品免费领(含ECS),点击进入 :https://click.aliyun.com/m/

    2023年04月22日
    浏览(15)
  • CentOS 7/8使用kubeadm部署kubernets(k8s)集群【附阿里云实验室】内有福利

    CentOS 7/8使用kubeadm部署kubernets(k8s)集群【附阿里云实验室】内有福利

    好消息好消息,阿里云全线降价,大量服务提供免费甚至永久的试用,赶紧来薅大厂羊毛吧,坐电梯即可直达! 送福利!阿里云热门产品免费领(含ECS),点击进入 :https://click.aliyun.com/m/1000370359/ 送福利!阿里云热门产品免费领(含ECS),点击进入 :https://click.aliyun.com/m/

    2023年04月27日
    浏览(12)
  • 【Kubernetes】Kubernetes之Kubeadm部署

    【Kubernetes】Kubernetes之Kubeadm部署

    集群服务器主机名 服务器IP地址 集群服务器部署的服务 master(2C/4G,cpu核心数要求大于2) 192.168.145.15 docker、kubeadm、kubelet、kubectl、flannel node01(2C/2G) 192.168.145.30 docker、kubeadm、kubelet、kubectl、flannel node02(2C/2G) 192.168.145.45 docker、kubeadm、kubelet、kubectl、flannel 4.1 配置 master0

    2024年02月14日
    浏览(9)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包