首页 > 其他分享 >kubeadm 安装k8s1.28.x 底层走containerd 容器

kubeadm 安装k8s1.28.x 底层走containerd 容器

时间:2023-08-27 15:35:57浏览次数:34  
标签:kubernetes k8s1.28 containerd etc yum io -- kubeadm k8s


一:k8s1.28.x 的概述

1.1:k8s 1.28.x 更新

Kubernetes v1.28 是 2023 年的第二个大版本更新,包含了 46 项主要的更新。 
而今年发布的第一个版本 v1.27 有近 60 项,所以可以看出来,在发布节奏调整后,
每个 Kubernetes 版本中都会包含很多新的变化。

其中 20 个增强功能正在进入 Alpha 阶段,14 个将升级到 Beta 阶段,而另外 12 个则将升级到稳定版。
可以看出来很多都是新特性。

更多内容查看k8s 更新介绍
    https://zhuanlan.zhihu.com/p/649838674

logo 如下:

image.png

二:k8s1.27.x 的安装

2.1 系统安装介绍

操作系统:
   OpenEuler23.03x64 
主机名:
   cat /etc/hosts 
---
172.16.10.51    flyfish51
172.16.10.52    flyfish52
172.16.10.53    flyfish53
172.16.10.54    flyfish54
172.16.10.55    flyfish55
----

注: 本次安装前三台,flyfish51 作为 master  flyfish52/flyfish53 作为worker

系统关闭selinux / 关闭firewalld 清空iptables防火墙规则

2.2 系统初始化

#修改时区,同步时间
yum install chrond -y
vim /etc/chrony.conf
-----
ntpdate ntp1.aliyun.com iburst
-----
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
echo 'Asia/Shanghai' > /etc/timezone

#关闭防火墙,selinux
systemctl stop firewalld
systemctl disable firewalld
sed -i 's/enforcing/disabled/' /etc/selinux/config 
setenforce 0

## 关闭swap

swapoff -a  
sed -ri 's/.*swap.*/#&/' /etc/fstab


#系统优化
cat > /etc/sysctl.d/k8s_better.conf << EOF
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
net.ipv4.ip_forward=1
vm.swappiness=0
vm.overcommit_memory=1
vm.panic_on_oom=0
fs.inotify.max_user_instances=8192
fs.inotify.max_user_watches=1048576
fs.file-max=52706963
fs.nr_open=52706963
net.ipv6.conf.all.disable_ipv6=1
net.netfilter.nf_conntrack_max=2310720
EOF
modprobe br_netfilter
lsmod |grep conntrack
modprobe ip_conntrack
sysctl -p /etc/sysctl.d/k8s_better.conf


#确保每台机器的uuid不一致,如果是克隆机器,修改网卡配置文件删除uuid那一行
cat /sys/class/dmi/id/product_uuid

image.png

2.2 安装ipvs 转发支持 【所有节点】

###系统依赖包
yum -y install wget jq psmisc vim net-tools nfs-utils socat telnet device-mapper-persistent-data lvm2 git network-scripts tar curl -y

yum install -y conntrack ipvsadm ipset jq iptables curl sysstat libseccomp wget vim net-tools git

### 开启ipvs 转发
modprobe br_netfilter 

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
EOF 

chmod 755 /etc/sysconfig/modules/ipvs.modules 

bash /etc/sysconfig/modules/ipvs.modules 

lsmod | grep -e ip_vs -e nf_conntrack

image.png image.png

2.3 安装containerd [全部节点安装]

创建 /etc/modules-load.d/containerd.conf 配置文件:

cat << EOF > /etc/modules-load.d/containerd.conf
overlay
br_netfilter
EOF

modprobe overlay
modprobe br_netfilter

image.png

获取阿里云YUM源
vim /etc/yum.repos.d/docker-ce.repo
------------------
[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/9/$basearch/stable
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
----------------------

yum makecache 

下载安装:

yum install -y containerd.io

image.png image.png

生成containerd的配置文件
mkdir /etc/containerd -p 
生成配置文件
containerd config default > /etc/containerd/config.toml
编辑配置文件
vim /etc/containerd/config.toml
-----
SystemdCgroup = false 改为 SystemdCgroup = true


# sandbox_image = "k8s.gcr.io/pause:3.6"
改为:
sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.9"


------

# systemctl enable containerd
Created symlink from /etc/systemd/system/multi-user.target.wants/containerd.service to /usr/lib/systemd/system/containerd.service.
# systemctl start containerd
# ctr images ls 

8image.png

三:安装 k8s1.28.x

3.1 配置k8s1.28.x的yum 源

1.添加阿里云YUM软件源

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=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


yum makecache 

image.png

## 查看所有的可用版本
yum list kubelet --showduplicates | sort -r |grep 1.28 

image.png

3.2 安装kubeadm,kubelet和kubectl

目前最新版本是1.28.1,我们直接上最新版

yum install -y kubectl kubelet kubeadm

image.png image.png

为了实现docker使用的cgroupdriver与kubelet使用的cgroup的一致性,建议修改如下文件内容。

# vim /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"

设置kubelet为开机自启动即可,由于没有生成配置文件,集群初始化后自动启动
# systemctl enable kubelet

image.png

准备k8s1.28.1 所需要的镜像

kubeadm config images list --kubernetes-version=v1.28.1

image.png

## 使用以下命令从阿里云仓库拉取镜像
# kubeadm config images pull --image-repository registry.aliyuncs.com/google_containers

image.png

集群初始化
使用kubeadm init命令初始化

在flyfish51上执行,报错请看k8s报错汇总
 
kubeadm init --kubernetes-version=v1.28.1 --pod-network-cidr=10.224.0.0/16 --apiserver-advertise-address=172.16.10.51 --image-repository registry.aliyuncs.com/google_containers

--apiserver-advertise-address 集群通告地址
--image-repository 由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址
--kubernetes-version K8s版本,与上面安装的一致
--service-cidr 集群内部虚拟网络,Pod统一访问入口
--pod-network-cidr Pod网络,,与下面部署的CNI网络组件yaml中保持一致


image.png image.png

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/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

Alternatively, if you are the root user, you can run:

  export KUBECONFIG=/etc/kubernetes/admin.conf

You 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:

kubeadm join 172.16.10.51:6443 --token l02pkw.2ccruhqj9qelkv3p \
        --discovery-token-ca-cert-hash sha256:a960721267396dd59a38d67a48be7e9afb42e6730ef666926ea535ccbb65591b

image.png

flyfish52/flyfish53 执行
kubeadm join 172.16.10.51:6443 --token l02pkw.2ccruhqj9qelkv3p \
        --discovery-token-ca-cert-hash sha256:a960721267396dd59a38d67a48be7e9afb42e6730ef666926ea535ccbb65591b


image.png image.png

# 查看集群节点:
kubectl get node 

image.png

3.3 集群部署网络插件

网络组件有很多种,只需要部署其中一个即可,推荐Calico。

Calico是一个纯三层的数据中心网络方案,Calico支持广泛的平台,包括Kubernetes、OpenStack等。

Calico 在每一个计算节点利用 Linux Kernel 实现了一个高效的虚拟路由器( vRouter) 来负责数据转发,而每个 vRouter 通过 BGP 协议负责把自己上运行的 workload 的路由信息向整个 Calico 网络内传播。

此外,Calico 项目还实现了 Kubernetes 网络策略,提供ACL功能。

1.下载Calico

wget https://docs.tigera.io/archive/v3.25/manifests/calico.yaml

vim calico.yaml
...
- name: CALICO_IPV4POOL_CIDR
  value: "10.244.0.0/16"
...

image.png image.png

kubectl apply -f calico.yaml

image.png

下载:
   
ctr -n k8s.io i pull -k docker.io/calico/cni:v3.25.0
ctr -n k8s.io i pull -k docker.io/calico/node:v3.25.0
ctr -n k8s.io i pull -k docker.io/calico/kube-controllers:v3.25.0

导出:

ctr -n k8s.io i export cni.tar.gz docker.io/calico/cni:v3.25.0
ctr -n k8s.io i export kube-controllers.tar.gz docker.io/calico/kube-controllers:v3.25.0
ctr -n k8s.io i export node.tar.gz docker.io/calico/node:v3.25.0


导入:

ctr -n k8s.io i import cni.tar.gz
ctr -n k8s.io i import kube-controllers.tar.gz
ctr -n k8s.io i import node.tar.gz

kubectl get pod -n kube-system 

image.png

kubectl get node
kubectl get node -o wide 

image.png

3.4 部署dashboard

1.下载yaml文件

官网下载地址

目前最新版本为v2.7.0

wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml

vim recommended.yaml
----
kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
spec:
  ports:
    - port: 443
      targetPort: 8443
      nodePort: 30001
  type: NodePort      
  selector:
    k8s-app: kubernetes-dashboard
----
kubectl apply -f recommended.yaml

kubectl get pods -n kubernetes-dashboard
kubectl get pods,svc -n kubernetes-dashboard

image.png image.png image.png

创建用户:
wget https://raw.githubusercontent.com/cby-chen/Kubernetes/main/yaml/dashboard-user.yaml

kubectl apply -f dashboard-user.yaml

image.png

创建token 
kubectl -n kubernetes-dashboard create token admin-user

image.png

token:
  eyJhbGciOiJSUzI1NiIsImtpZCI6InN0T0NrMDFPZTlqUk94c3BqOXk0cmphQW0yS2ZRTlNRVU5ENFc3MFZqLU0ifQ.eyJhdWQiOlsiaHR0cHM6Ly9rdWJlcm5ldGVzLmRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwiXSwiZXhwIjoxNjkzMTE5NTU0LCJpYXQiOjE2OTMxMTU5NTQsImlzcyI6Imh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2Yy5jbHVzdGVyLmxvY2FsIiwia3ViZXJuZXRlcy5pbyI6eyJuYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsInNlcnZpY2VhY2NvdW50Ijp7Im5hbWUiOiJhZG1pbi11c2VyIiwidWlkIjoiZjA3NDg3NmEtZjM0ZC00ODUzLWIzMjMtYTk4YzE4Zjk5NWE0In19LCJuYmYiOjE2OTMxMTU5NTQsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlcm5ldGVzLWRhc2hib2FyZDphZG1pbi11c2VyIn0.YRR_BsVxt09zJ-T5MjwFWTUYOAZHSzaKHh_WIoKevl0-M86p6E3UX3gMWLfOaNf0wRNfx7sa6tsjJjpHqty9Y5PfZSMESgeb6vkEBfJqy-AVotxJqZ-qhn2WIIzZ1RpJfpeswPWG8gM9Obl19GC25B4DQg_TUPoC07vyyH0pyyOrAQrjKfToswUjMHdL6kugumOC1we6rK0ckOozjywBRchFrwYICnbEPCNR4LkKrH-H888E8ACKNX5zEgWNFe_btnQrqfPatJW_xGwpByBG1CyG4pdwgbdStFTqSzSQalSo_wUIJcCKZr6i9l2teMTI2vYAlzvWNOIQRt6QMM05fg

http://172.16.10.51:30001

image.png image.png image.png

3.5 部署一个nginx测试服务:

部署一个nginx:


vim web.yaml
---
kind: Deployment
#apiVersion: extensions/v1beta1
apiVersion: apps/v1
metadata:
  labels:
    app: web-deployment-label
  name: web-deployment
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: web-selector
  template:
    metadata:
      labels:
        app: web-selector
    spec:
      containers:
      - name: web-container
        image: nginx:latest
        imagePullPolicy: Always
        ports:
        - containerPort: 80
          protocol: TCP
          name: http
        - containerPort: 443
          protocol: TCP
          name: https

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

----

kubectl apply -f web.yaml

image.png

查看服务:
    kubectl get deploy,svc,pod 

image.png image.png

浏览器访问:
http://172.16.10.51:30080

image.png

标签:kubernetes,k8s1.28,containerd,etc,yum,io,--,kubeadm,k8s
From: https://blog.51cto.com/flyfish225/7253183

相关文章

  • kubeadm部署k8s
    1、配置hostscat>>/etc/hosts<<EOF192.168.140.129master192.168.140.130node1192.168.140.131node2185.199.109.133raw.githubusercontent.comEOF2、关闭交换分区(swap)[root@master~]#swapoff-a   #临时关闭[root@master~]#sed-ri's/.*swap.......
  • 轻量级容器运行时:Containerd的部署与使用
    containerd作为轻量级容器运行时,被认为是最热门的Docker替代方案,目前已在阿里云、腾讯云等多家云商得到了支持,相信未来会有非常不错的发展前景。在前面的文章已对产品的功能架构进行了介绍,本文我们将更进一步,来学习containerd的部署与使用。01—部署containerd1.下载二进制文件 $......
  • [kubernetes]二进制部署k8s集群-基于containerd
    0.前言k8s从1.24版本开始不再直接支持docker,但可以自行调整相关配置,实现1.24版本后的k8s还能调用docker。其实docker自身也是调用containerd,与其k8s通过docker再调用containerd,不如k8s直接调用containerd,以减少性能损耗。除了containerd,比较流行的容器运行时还有podman,但是podm......
  • kubeadm 部署的集群升级教程
    1、确定升级的集群版本,查看现有的集群版本kubectl getnodes2、执行如下命令确定升级的版本,目标版本是v1.27.4yumlist--showduplicateskubeadm--disableexcludes=kubernetes3、升级master节点,所有master节点都要操作,并升级完验证版本yuminstall-ykubeadm-1.27.4-0-......
  • 执行kubeadm 出现 FATAL: the ConfigMap "kubeadm-config" in the kube-system namesp
    现象: [upgrade/config]Makingsuretheconfigurationiscorrect:[upgrade/config]Readingconfigurationfromthecluster...[upgrade/config]FYI:Youcanlookatthisconfigfilewith'kubectl-nkube-systemgetcmkubeadm-config-oyaml'[upgrade/c......
  • K8S 1.27.1版本初始化配置文件时报your configuration file uses an old API spec: "k
    现象:yourconfigurationfileusesanoldAPIspec:"kubeadm.k8s.io/v1beta2".Pleaseusekubeadmv1.22insteadandrun'kubeadmconfigmigrate--old-configold.yaml--new-confignew.yaml',whichwillwritethenew,similarspecusingan......
  • kubeadm 更新ca、front-proxy-ca 根证书到100年(基于现有的K8S环境)
    背景:在现有K8S环境中默认情况下编译新kubeadm只能更新组件证书的时间,至于ca,front-proxy-ca集群根证书是无法更新的#更新集群ca、front-proxy-ca根证书1、备份master节点的ca、front-proxy-ca根证书cp-a/etc/kubernetes/pki/ca.crt/etc/kubernetes/pki/ca.crt.oldcp-a......
  • 使用kubeadm快速部署一个k8s集群
    1.部署Kubernetes集群方式(1)kubeadmKubeadm是一个K8s部署工具,提供kubeadminit和kubeadmjoin,用于快速部署Kubernetes集群。官方地址:https://kubernetes.io/zh-cn/docs/reference/setup-tools/kubeadm/(2)二进制包从github下载发行版的二进制包,手动部署每个组件,组成Kube......
  • kubeadm集群添加新节点
    1.生成添加node节点tokenkubeadmtokencreate--print-join-command结果示例kubeadmjoin10.10.10.10:6443--tokenxxxxxx.xxx...xxx--discovery-token-ca-cert-hashsha256:xxxxx...xxxxb2.在master上生成用于新master加入的证书获取Usingcertificatekeykubeadmini......
  • kubeadm一主两从扩容到三主两从->失败结束
    需求:kubeadm一主两从扩容到三主两从参考:https://mp.weixin.qq.com/s?__biz=MzAxOTc3Mjk1Ng==&mid=2247485240&idx=1&sn=89c1e1aa4988ee4d1f2c134cdcf9c40b&chksm=9bc0a44bacb72d5d48f7f5b2d50edc3a9eb13bb10e554e9b5401143010e294f7634c93b8a795&scene=21#wechat_redir......