首页 > 其他分享 >k8s1.27.x 最新版本使用kubeadm 的containerd的方式安装

k8s1.27.x 最新版本使用kubeadm 的containerd的方式安装

时间:2023-04-13 12:35:06浏览次数:43  
标签:kubectl kubernetes k8s1.27 -- containerd etc yum kubeadm

标签(空格分隔): kubernetes系列


一:k8s1.27.x 的概述

1.1:k8s 1.27.x 更新

Kubernetes v1.27正式发布,这是 2023 年的第一个版本!

此版本包含 60 个增强功能。其中 18 个增强功能进入 Alpha 阶段,29 个进入 Beta 阶段,13 个进入 Stable 阶段。

版本主题和标志
Kubernetes v1.27:Chill Vibes
Kubernetes v1.27 的主题是 Chill Vibes。

更多内容查看k8s 更新介绍
    https://mp.weixin.qq.com/s/TVGQ4EMXGFNqcS-7ncui0w

logo 如下:

k8s1.27.x 最新版本使用kubeadm 的containerd的方式安装_k8s1.27 安装

二:k8s1.27.x 的安装

2.1 系统安装介绍

操作系统:
   Rockylinux8.7x64 
主机名:
   cat /etc/hosts 
---
172.16.10.81    flyfish81
172.16.10.82    flyfish82
172.16.10.83    flyfish83
172.16.10.84    flyfish84
172.16.10.85    flyfish85
172.16.10.86    flyfish86
----

注: 本次安装前三台,flyfish81 作为 master  flyfish82/flyfish83 作为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

k8s1.27.x 最新版本使用kubeadm 的containerd的方式安装_containerd_02

k8s1.27.x 最新版本使用kubeadm 的containerd的方式安装_k8s1.27 安装_03

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

###系统依赖包
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

k8s1.27.x 最新版本使用kubeadm 的containerd的方式安装_containerd_04

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

k8s1.27.x 最新版本使用kubeadm 的containerd的方式安装_k8s1.27 安装_05

获取阿里云YUM源
wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo


下载安装:

yum install -y containerd.io

k8s1.27.x 最新版本使用kubeadm 的containerd的方式安装_k8s1.27 安装_06

k8s1.27.x 最新版本使用kubeadm 的containerd的方式安装_containerd_07

生成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.6"


------

# 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

k8s1.27.x 最新版本使用kubeadm 的containerd的方式安装_k8s1.27 安装_08

三:安装 k8s1.27.x

3.1 配置k8s1.27.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

k8s1.27.x 最新版本使用kubeadm 的containerd的方式安装_k8s1.27.x_09

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

k8s1.27.x 最新版本使用kubeadm 的containerd的方式安装_k8s1.27 安装_10

3.2 安装kubeadm,kubelet和kubectl

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

yum install -y kubectl kubelet kubeadm

k8s1.27.x 最新版本使用kubeadm 的containerd的方式安装_k8s1.27 安装_11

k8s1.27.x 最新版本使用kubeadm 的containerd的方式安装_k8s1.27.x_12

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

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

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

k8s1.27.x 最新版本使用kubeadm 的containerd的方式安装_containerd_13

准备k8s1.27.0 所需要的镜像

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

k8s1.27.x 最新版本使用kubeadm 的containerd的方式安装_containerd_14

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

在flyfish81上执行,报错请看k8s报错汇总
 
kubeadm init --kubernetes-version=v1.27.0 --pod-network-cidr=10.224.0.0/16 --apiserver-advertise-address=172.16.10.81 --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中保持一致

k8s1.27.x 最新版本使用kubeadm 的containerd的方式安装_k8s1.27 安装_15

k8s1.27.x 最新版本使用kubeadm 的containerd的方式安装_containerd_16

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.81:6443 --token ggamya.2vrdww877b7hllp0 \
        --discovery-token-ca-cert-hash sha256:f031f144612ba3a912f1bf22a397565eaaad6b218693740d4f3c0e7d63810b40

k8s1.27.x 最新版本使用kubeadm 的containerd的方式安装_k8s1.27 安装_17

flyfish82/flyfish83 执行

kubeadm join 172.16.10.81:6443 --token ggamya.2vrdww877b7hllp0 \
        --discovery-token-ca-cert-hash sha256:f031f144612ba3a912f1bf22a397565eaaad6b218693740d4f3c0e7d63810b40

k8s1.27.x 最新版本使用kubeadm 的containerd的方式安装_k8s1.27 安装_18

k8s1.27.x 最新版本使用kubeadm 的containerd的方式安装_k8s1.27.x_19

# 查看集群节点:
kubectl get node

k8s1.27.x 最新版本使用kubeadm 的containerd的方式安装_k8s1.27 安装_20

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.24/manifests/calico.yaml

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

k8s1.27.x 最新版本使用kubeadm 的containerd的方式安装_k8s1.27 安装_21

kubectl apply -f calico.yaml

k8s1.27.x 最新版本使用kubeadm 的containerd的方式安装_k8s1.27 安装_22

kubectl get pod -n kube-system

k8s1.27.x 最新版本使用kubeadm 的containerd的方式安装_k8s1.27 安装_23

kubectl get node
kubectl get pod -n kube-system

k8s1.27.x 最新版本使用kubeadm 的containerd的方式安装_containerd_24

部署一个dashborad 
wget https://raw.githubusercontent.com/cby-chen/Kubernetes/main/yaml/dashboard.yaml

kubectl apply -f dashboard.yaml

k8s1.27.x 最新版本使用kubeadm 的containerd的方式安装_k8s1.27 安装_25

k8s1.27.x 最新版本使用kubeadm 的containerd的方式安装_k8s1.27 安装_26

kubectl get pod -n kubernetes-dashboard -o wide
kubectl get svc -n kubernetes-dashboard
kubectl edit svc kubernetes-dashboard -n kubernetes-dashboard
---
将ClusterIP 改为NodePort

---
kubectl get svc -n kubernetes-dashboard

k8s1.27.x 最新版本使用kubeadm 的containerd的方式安装_k8s1.27 安装_27

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

kubectl apply -f dashboard-user.yaml

k8s1.27.x 最新版本使用kubeadm 的containerd的方式安装_k8s1.27 安装_28

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

k8s1.27.x 最新版本使用kubeadm 的containerd的方式安装_containerd_29

打开浏览器访问:
https://172.16.10.81:31619/#/login

k8s1.27.x 最新版本使用kubeadm 的containerd的方式安装_k8s1.27.x_30

k8s1.27.x 最新版本使用kubeadm 的containerd的方式安装_containerd_31

k8s1.27.x 最新版本使用kubeadm 的containerd的方式安装_containerd_32

标签:kubectl,kubernetes,k8s1.27,--,containerd,etc,yum,kubeadm
From: https://blog.51cto.com/flyfish225/6187876

相关文章

  • Containerd基础用法
    1)关于Containerd的基础知识从Docker1.11版本开始,Docker容器运行就不是简单通过DockerDaemon来启动了,而是通过集成containerd、runc等多个组件来完成的。虽然DockerDaemon守护进程模块在不停地重构,但是基本功能和定位没有太大的变化,一直都是CS架构,守护进程负责和DockerCl......
  • Kubeadm在线安装k8s_超详细
     生产环境可以采取这种方式安装k8sv1.23.17,版本兼容很好,你的支持就是我最大的动力。服务器要求:建议最小硬件配置:2核CPU、2G内存、20G硬盘服务器最好可以访问外网,会有从网上拉取镜像需求,如果服务器不能上网,需要提前下载对应镜像并导入节点软件环境:操作系统:centos7.9_x64(mini......
  • Containerd接入Harbor仓库【3】
    1.说明在使用容器时,避免不了会使用到私有仓库,一般都是采用harbor作为私有仓库,docker对接harbor仓库非常简单,哪containerd如何对接harbor呢?在内网使用harbor根据个人习惯,一般都是非http并且是通过IP直接访问,如下:harbor仓库地址为:http://192.168.199.102:80,cont......
  • 使用 kubeadm 安装单 master kubernetes 集群
    配置要求检查centos/hostname检查网络安装docker及kubelet初始化master节点初始化worker节点获得join命令参数初始化worker常见错误原因移除worker节点并重试检查初始化结果安装IngressController配置要求对于Kubernetes初学者,在搭建K8S集群时,推荐在阿里云或......
  • Containerd高阶命令行工具 - nerdctl 【2】
    1.前言对于用惯了dockercli的用户来说,containerd的命令行工具ctr使用起来不是很顺手,此时别慌,还有另外一个命令行工具项目nerdctl可供我们选择。nerdctl是一个与dockercli风格兼容的containerd的cli工具。nerdctl已经作为子项目加入了containerd项目,它的github地址是https:/......
  • kubeadm安装kubernetes
    kubeadm安装kuberneteskubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具。这个工具能通过两条指令完成一个kubernetes集群的部署:$kubeadminit创建一个master节点$kubeadmjoin将一个Node节点加入到当前集群中试验背景在学习k8s搭建中,网上大部分......
  • containerd命令--ctr和crictl
    ctr[root@master~]#ctr--helpNAME:ctr-containerdCLIUSAGE:ctr[globaloptions]command[commandoptions][arguments...]VERSION:v1.6.19DESCRIPTION:ctrisanunsupporteddebugandadministrativeclientforinteractingwiththeconta......
  • 第一章 1.2节 Kubeadm安装K8S高可用集群(二)
    1.1查看Token过期时间执行下面命令查看所有Token:kubectlgetsecret-nkube-system找到之前创建的new.yaml文件,进去查看使用的Token:[root@k8s-master01~]#catnew.yamlapiVersion:kubeadm.k8s.io/v1beta3bootstrapTokens:-groups:-system:bootstrappers:kube......
  • Containerd的使用
    我们知道很早之前的DockerEngine中就有了containerd,只不过现在是将containerd从DockerEngine里分离出来,作为一个独立的开源项目,目标是提供一个更加开放、稳定的容器运行基础设施。分离出来的containerd将具有更多的功能,涵盖整个容器运行时管理的所有需求,提供更强大的......
  • K8s 弃用 Docker!一文介绍 containerd ctr、crictl 使用
    containerd是一个高级容器运行时,又名容器管理器。简单来说,它是一个守护进程,在单个主机上管理完整的容器生命周期:创建、启动、停止容器、拉取和存储镜像、配置挂载、网络等......