初始化

# 关闭防火墙 selinux
systemctl disable --now firewalld
setenforce 0
sed -i '/SELINUX=/s@enforcing@disabled@g' /etc/selinux/config # 设置最大文件打开数 最大进程数
cat << EOF | tee -a /etc/security/limits.conf
* soft nofile 655350
* hard nofile 655350
* soft nproc 655350
* hard nproc 655350
EOF # 开启IP转发 swap优化等
cat << EOF | tee /etc/sysctl.d/k8s.conf
wappiness = 5
vm.panic_on_oom = 0
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_syncookies = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-arptables = 1
net.ipv4.ip_forward = 1
net.ipv6.conf.all.disable_ipv6 = 1
net.netfilter.nf_conntrack_max = 2310720
fs.inotify.max_user_instances=8192
fs.inotify.max_user_watches=1048576
fs.file-max=52706963
fs.nr_open=52706963
EOF
# 配置生效
sysctl -p /etc/sysctl.d/k8s.conf

docker k8s yum源

cat << EOF | tee /etc/yum.repos.d/docker-ce.repo
[docker-ce-stable]
name=Docker CE Stable - \$basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/\$releasever/\$basearch/stable
enabled=1
gpgcheck=0
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
EOF cat << EOF | tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.29/rpm/
enabled=1
gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.29/rpm/repodata/repomd.xml.key
EOF

docker 安装 和cri-docker

# 安装docker
yum -y install docker # 创建配置
mkdir -p /etc/docker/ cat << EOF | tee /etc/docker/daemon.json
{
"data-root": "/data/docker",
"registry-mirrors": ["https://frz7i079.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
# 重载配置
systemctl daemon-reload
# 启动
systemctl enable --now docker containerd # 下载 cri-docker
curl -o cri-dockerd-0.3.12-3.el7.x86_64.rpm https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.12/cri-dockerd-0.3.12-3.el7.x86_64.rpm # 安装
yum -y install ./cri-dockerd-0.3.12-3.el7.x86_64.rpm # 配置
cat << EOF | tee /usr/lib/systemd/system/cri-docker.socket
[Unit]
Description=CRI Docker Socket for the API
PartOf=cri-docker.service [Socket]
ListenStream=/var/run/cri-dockerd.sock
SocketMode=0660
SocketUser=root
SocketGroup=docker [Install]
WantedBy=sockets.target
EOF cat << EOF | tee /usr/lib/systemd/system/cri-docker.service
[Unit]
Description=CRI Interface for Docker Application Container Engine
Documentation=https://docs.mirantis.com
After=network-online.target firewalld.service docker.service
Wants=network-online.target
Requires=cri-docker.socket [Service]
Type=notify ExecStart=/usr/bin/cri-dockerd \
--container-runtime-endpoint=unix:///var/run/cri-docker.sock \
--network-plugin=cni \
--cni-bin-dir=/opt/cni/bin \
--cni-conf-dir=/etc/cni/net.d \
--image-pull-progress-deadline=30s \
--pod-infra-container-image=registry.k8s.io/pause:3.9 \
--docker-endpoint=unix:///run/docker.sock \
--cri-dockerd-root-directory=/data/docker
ExecReload=/bin/kill -s HUP \$MAINPID
TimeoutSec=0
RestartSec=2
Restart=always # Note that StartLimit* options were moved from "Service" to "Unit" in systemd 229.
# Both the old, and new location are accepted by systemd 229 and up, so using the old location
# to make them work for either version of systemd.
StartLimitBurst=3 # Note that StartLimitInterval was renamed to StartLimitIntervalSec in systemd 230.
# Both the old, and new name are accepted by systemd 230 and up, so using the old name to make
# this option work for either version of systemd.
StartLimitInterval=60s # Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity # Comment TasksMax if your systemd version does not support it.
# Only systemd 226 and above support this option.
TasksMax=infinity
Delegate=yes
KillMode=process [Install]
WantedBy=multi-user.target EOF # 重载配置
systemctl daemon-reload
# 启动
systemctl enable --now cri-docker

安装k8s

# 安装 1.29.3 版本
yum -y install kubeadm-1.29.3-150500.1.1 kubectl-1.29.3-150500.1.1 kubelet-1.29.3-150500.1.1
# 配置
cat << EOF | tee /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"
EOF
# 设置自启
systemctl enable kubelet

拉取国内镜像

# 源镜像
kubeadm config images list > source.images.list
# 阿里镜像
sed 's@registry.k8s.io@registry.cn-hangzhou.aliyuncs.com/google_containers@g' source.images.list > ali.images.list
sed -i '/dns/s@coredns/coredns@coredns@g' ali.images.list
# 拉取阿里镜像
awk '{print "docker pull " $1}' ali.images.list | bash
# 改名
paste ali.images.list source.images.list | awk '{print "docker tag " $1 " " $2}' | bash
# 删除阿里镜像
awk '{print "docker rmi " $1}' ali.images.list | bash
# 删除临时记录文件
rm -rf source.images.list ali.images.list

单节点初始化

# 初始化 注意网段别重复
kubeadm init --cri-socket unix:///var/run/cri-docker.sock --pod-network-cidr 10.1.0.0/16 --service-cidr 10.2.0.0/16
# 指定镜像仓库 初始化
kubeadm init --cri-socket unix:///var/run/cri-docker.sock --pod-network-cidr 10.1.0.0/16 --service-cidr 10.2.0.0/16 --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers
# 获取权限
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
# 删除污点(根据需求,这里删除是为了在master上跑任务)
kubectl taint node --all node-role.kubernetes.io/control-plane-

calico网络插件

# 下载网络插件
wget https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/calico.yaml
# 安装网络插件
kubectl apply -f calico.yaml

K8s 1.29.3 on Docker的更多相关文章

  1. K8S 1.20 弃用 Docker 评估之 Docker CLI 的替代产品

    title: K8S 1.20 弃用 Docker 评估之 Docker CLI 的替代产品 tags: - Docker - K8S - OCI - 容器 - 最佳实践 - RedHat - Sko ...

  2. K8S 1.20 弃用 Docker 评估之 Docker CLI 的替代产品 nerdctl

    背景 2020 年 12 月初,Kubernetes 在其最新的 Changelog 中宣布,自 Kubernetes 1.20 之后将弃用 Docker 作为容器运行时. 弃用 Docker 带来的 ...

  3. K8S 1.20 弃用 Docker 评估之 Docker 和 OCI 镜像格式的差别

    背景 2020 年 12 月初,Kubernetes 在其最新的 Changelog 中宣布,自 Kubernetes 1.20 之后将弃用 Docker 作为容器运行时. 弃用 Docker 带来的 ...

  4. [k8s]k8s的控制层kubelet+docker配合调度机制(k8架构)

    意外停掉一台node的kubelet,发现调度有问题,研究了下调度的细节 k8s架构 控制层- kubelet(配合节点docker工作) 数据层- kube-proxy 逻辑图: object 参考 ...

  5. k8s删除pod时,docker服务出现挂载点泄漏问题的解决

    k8s更新版本后,老的POD一直出现Terminating,多久都不能删除. 然后,进入具体的节点机器之后,查看日志输出如下类似: ERROR: driver "overlay" ...

  6. K8S为什么要弃用Docker?Dockershim将移除

    一.背景由于最近知道了 K8s 新版本(v1.20)确定弃用 Docker 的消息,为了明确是否会对现有系统架构产生响,所以对涉及到的相关技术进行了一定的梳理(索性的是对现有的系统架构基本无影响:&g ...

  7. multipass指定virualbox搭建k8s集群(选择docker作为默认容器)

    目录 前言 步骤 初始化三台虚拟机 统一安装docker 修改docker镜像源 查看masterIP 安装master节点(重点设置) 查看master的token 安装worker节点 测试 部署 ...

  8. K8s 终将废弃 docker,TKE 早已支持 containerd

    近日 K8s 官方称最早将在 1.23版本弃用 docker 作为容器运行时,并在博客中强调可以使用如 containerd 等 CRI 运行时来代替 docker.本文会做详细解读,并介绍 dock ...

  9. 在 Docker Desktop 中启用 K8s 服务

    Overview 作为目前事实上的容器编排系统标准,K8s 无疑是现代应用的基石,很多同学入门可能直接就被卡到第一关,从哪去弄个 K8s 的环境 自己搭吧,要求的硬件资源太高,基本上搭建一个 K8s ...

  10. K8s 为什么会抛弃 docker

    为什么 K8s 会抛弃 docker 前言 CRI containerd 参考 为什么 K8s 会抛弃 docker 前言 在这之前先来了解下,k8s 是如何和 docker 进行交互的. CRI k ...

随机推荐

  1. php文件和文件夹操作类

    文件和文件夹操作 移动 | 复制 | 删除 | 重命名 | 下载 <?php namespace Framework\Tools; use PharData; class FileManager ...

  2. MySQL 的默认字符集为什么是 latin1?

    是处于历史原因还是其他? 为什么至今不选择utf-8? West European Character Sets

  3. study PostgreSQL【3-get数据库中all表以及表的字段信息】

    get一表的字段相关信息: SELECT col_description(a.attrelid,a.attnum) as comment,pg_type.typname as typename,a.a ...

  4. HTTP 分段下载

    GET /user_crc.bin HTTP/1.1 Host: mnif.cn Range: bytes=0-1000

  5. Asp.net core基础(一)Entity FrameworkCore的增删查改

    一.EntityFramework Core的介绍 EntityFramework Core是.net core中的ORM(object relational mapping[对象关系映射])框架,它 ...

  6. DP刷题总结-2

    同步于Luogu blog T1 AT_joisc2007_buildi ビルの飾り付け (Building) 简化题意 最长上升子序列模板 分析 \(O(n^2)\)做法 考虑DP 定义状态:\(d ...

  7. sonarqube+gitlab+jenkins+maven集成搭建 (五)

    Jenkins与SonarQube Jenkins 配置 SonarQube在 SonarQube 中生成 Server authentication token登录 SonarQube 后,在 &q ...

  8. 【Elasticsearch】一文读懂ES向量搜索:原理剖析与技术全景

    大家好,我是大任,今天给大家分享一下Elasticsearch的向量搜索技术 注:本文若未说明ES版本则为7.10,其他版本会特别标记,由于ES版本不同,部分差异较大,具体请以官方文档为准 一.向量搜 ...

  9. Django实例(3)-用户连数据库登入系统

    App01--->urls.py from django.contrib import adminfrom django.conf.urls import urlfrom app01 impor ...

  10. 关于I/O与并发

    前言 由于笔者在之前发布的一文玩转NGINX中提到过I/O复用模型,在此另起一篇文章简述相关技术. 什么是I/O I/O输入/输出(Input/Output),分为IO设备和IO接口两个部分. 在PO ...