首页 > 其他分享 >k8s安装v1.30.2(contanerd容器运行时)实录

k8s安装v1.30.2(contanerd容器运行时)实录

时间:2024-07-10 23:53:10浏览次数:16  
标签:kubectl kubelet containerd sudo contanerd v1.30 kubeadm k8s

一、主机准备

主机名 NAT IP 系统 配置
k8s-master 192.168.1.201 ubuntu 18.04.6 2C2G
k8s-node01 192.168.1.202 ubuntu 18.04.6 2C2G
k8s-node02 192.168.1.203 ubuntu 18.04.6 2C2G

 

 

 

二、前提

主机配置好网络、ntp,关闭ufw,swap,安装好containerd,runc服务

三、安装步骤

master、node01、node02均运行:

转发 IPv4 并让 iptables 看到桥接流量

执行下述指令:

cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF

sudo modprobe overlay
sudo modprobe br_netfilter
# 设置所需的 sysctl 参数,参数在重新启动后保持不变
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward                 = 1
EOF

# 应用 sysctl 参数而不重新启动
sudo sysctl --system

通过运行以下指令确认 br_netfilter 和 overlay 模块被加载:

lsmod | grep br_netfilter
lsmod | grep overlay

 

通过运行以下指令确认 net.bridge.bridge-nf-call-iptablesnet.bridge.bridge-nf-call-ip6tables 和 net.ipv4.ip_forward 系统变量在你的 sysctl 配置中被设置为 1:

sysctl net.bridge.bridge-nf-call-iptables net.bridge.bridge-nf-call-ip6tables net.ipv4.ip_forward

 

配置containerd systemd cgroup 驱动

结合 runc 使用 systemd cgroup 驱动,在 /etc/containerd/config.toml (没有的就手动生成)中设置:

containerd config default > /etc/containerd/config.toml 

#编辑配置文件

[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]

  ...
  [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
    SystemdCgroup = true
#重启并启用 containerd 服务
systemctl daemon-reload
systemctl restart containerd
systemctl enable containerd

 

安装 kubeadm、kubelet 和 kubectl

安装 CNI 插件(大多数 Pod 网络都需要):

CNI_PLUGINS_VERSION="v1.1.1"
ARCH="amd64"
DEST="/opt/cni/bin"
sudo mkdir -p "$DEST"
curl -L "https://github.com/containernetworking/plugins/releases/download/${CNI_PLUGINS_VERSION}/cni-plugins-linux-${ARCH}-${CNI_PLUGINS_VERSION}.tgz" | sudo tar -C "$DEST" -xz
定义要下载命令文件的目录。
说明:

DOWNLOAD_DIR 变量必须被设置为一个可写入的目录。

DOWNLOAD_DIR="/usr/local/bin"
sudo mkdir -p "$DOWNLOAD_DIR"

安装 crictl(kubeadm/kubelet 容器运行时接口(CRI)所需)

CRICTL_VERSION="v1.25.0"
ARCH="amd64"
curl -L "https://github.com/kubernetes-sigs/cri-tools/releases/download/${CRICTL_VERSION}/crictl-${CRICTL_VERSION}-linux-${ARCH}.tar.gz" | sudo tar -C $DOWNLOAD_DIR -xz

创建crictl配置文件:/etc/crictl.yaml。修改crictl默认配置,把runtime-endpoint和image-endpoint指向containerd

vim /etc/crictl.yaml
runtime-endpoint: unix:///run/containerd/containerd.sock image-endpoint: unix:///run/containerd/containerd.sock timeout: 2 debug: true pull-image-on-create: false

安装 kubeadmkubelet并添加 kubelet 系统服务:

RELEASE="$(curl -sSL https://dl.k8s.io/release/stable.txt)"
ARCH="amd64"
cd $DOWNLOAD_DIR
sudo curl -L --remote-name-all https://dl.k8s.io/release/${RELEASE}/bin/linux/${ARCH}/{kubeadm,kubelet}
sudo chmod +x {kubeadm,kubelet}

RELEASE_VERSION="v0.4.0"
curl -sSL "https://raw.githubusercontent.com/kubernetes/release/${RELEASE_VERSION}/cmd/kubepkg/templates/latest/deb/kubelet/lib/systemd/system/kubelet.service" | sed "s:/usr/bin:${DOWNLOAD_DIR}:g" | sudo tee /etc/systemd/system/kubelet.service
sudo mkdir -p /etc/systemd/system/kubelet.service.d
curl -sSL "https://raw.githubusercontent.com/kubernetes/release/${RELEASE_VERSION}/cmd/kubepkg/templates/latest/deb/kubeadm/10-kubeadm.conf" | sed "s:/usr/bin:${DOWNLOAD_DIR}:g" | sudo tee /etc/systemd/system/kubelet.service.d/10-kubeadm.conf

 激活并启动 kubelet

systemctl enable --now kubelet

安装工具conntrack

sudo apt-get install conntrack

kubeadm init初始化管理平面

master执行

kubeadm init --apiserver-advertise-address 192.168.1.201 --apiserver-bind-port 6443 --cri-socket=/run/containerd/containerd.sock --cri-socket=/run/containerd/containerd.sock -–pod-network-cidr=10.244.0.0/16

 完成如上图,可以执行如下命令让其他节点加入集群。

kubeadm join 192.168.1.201:6443 --token qtj2on.fbg7att0xixsdnew \
--discovery-token-ca-cert-hash sha256:9fbf4265d1350b7ddf65b5e8cdea34fea93d42fca469e49255cd10ca66e8b9ef

安装kubectl

用 curl 在 Linux 系统中安装 kubectl

 

用以下命令下载最新发行版:

curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
说明:

如需下载某个指定的版本,请用指定版本号替换该命令的这一部分: $(curl -L -s https://dl.k8s.io/release/stable.txt)

例如,要在 Linux 中下载 v1.26.15 版本,请输入:

curl -LO https://dl.k8s.io/release/v1.26.15/bin/linux/amd64/kubectl

安装 kubectl

sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl

执行测试,以保障你安装的版本是最新的:

kubectl version --client
  (可选)安装bash-completion
apt-get install bash-completion
#启动 kubectl 自动补全功能
echo 'source <(kubectl completion bash)' >>~/.bashrc

 

安装flannel网络插件

kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml

如果你的容器子网CIDR (不是 10.244.0.0/16)那可以把yml下载下来后修改再apply,注意需要和init初始化管理平面时 kubeadm init命令中--pod-network-cidr=10.244.0.0/16 的值保持一致。

 

最终结果:

 参考文档:

安装 kubeadm | Kubernetes

containerd/docs/getting-started.md at main · containerd/containerd · GitHub

GitHub - flannel-io/flannel: flannel is a network fabric for containers, designed for Kubernetes

标签:kubectl,kubelet,containerd,sudo,contanerd,v1.30,kubeadm,k8s
From: https://www.cnblogs.com/JiaoTou/p/18294735

相关文章

  • k8s集群安装-kubeadm安装
    kubeadm安装集群准备工作角色IP组件k8s-master192.168.1.20kube-apiserver,kube-controller-manager,kube-scheduler,docker,etcdk8s-node01192.168.1.18kubelet,kube-proxy,docker,etcdk8s-node02192.168.1.19kubelet,kube-proxy,docker,etcddocker版......
  • K8s笔记
    参考链接:完整版Kubernetes(K8S)全套入门+微服务实战-哔哩哔哩_bilibili1.1简介1.1.1背景介绍市场需求(与后端相关)技术竞争力(K8S工程师)行业发展方向1.1.2课程模块解读:核心概念需要理解的内容:有哪些组件,分层架构中各层的调用关系服务的分类(无状态和有状态),处理方式不同......
  • 实战 k8s----标签
    如果你对k8s还不了解,可以看下前文k8s实战1----初识(https://www.cnblogs.com/jilodream/p/18245222)k8s实战2----pod基础(https://www.cnblogs.com/jilodream/p/18284282)什么是标签?标签也就是Label,是作用在k8s的资源上的,用来记录的资源的状态,或元数据的一组数......
  • k8s中pod滚动更新如何减少流量丢失
    有一个大前提,在旧pod状态更新为Terminating并且SIGTERM后,容器仍然会将已经接收到的流量正常完成后才会销毁。1.流量上线时的有损情况,添加健康检测,防止新pod还没准备好就分配流量2.流量下线时的有损情况,添加preStop生命周期挂钩, 在容器终止之前调用此钩子防止在新pod还没分配流......
  • K8s 驱逐场景以及规避方案
    Pod驱逐场景总结从一个SRE角度看,Pod驱逐分为两种情况:较安全驱逐&提高稳定性的良性驱逐API发起驱逐,典型案例:kubectldrainNodeNotReady时,ControllerManager发起的驱逐有风险的驱逐节点压力驱逐节点磁盘空间不足、内存不足或Pid不足,kubelet发起驱逐......
  • K8s 无备份,不运维
    出故障时,就知道是谁在裸泳......
  • K8s 开启审计日志
    一、背景应安全规范,对apiserver核心组件,需要记录,"谁在什么时候操作了什么"方便故障排查二、操作步骤apiserver开启审计日志在所有master节点执行备份配置文件mkdir-p/home/clay/bak$(date+%F)cp/etc/kubernetes/manifests/kube-apiserver.yaml/home/clay/......
  • 【云原生之kubernetes实战】在k8s环境下部署OrangeHRM人力资源管理系统
    【云原生之kubernetes实战】在k8s环境下部署OrangeHRM人力资源管理系统一、OrangeHRM介绍1.1OrangeHRM简介1.2OrangeHRM特点1.3OrangeHRM使用场景二、相关知识介绍2.1本次实践存储介绍2.2k8s存储介绍三、本次实践介绍3.1本次实践简介3.2本次......
  • 实践1-使用 ansible 快速安装 k8s 机器
    推荐:kubeadm安装用:kubesprayopeninnewwindow二进制安装用:kubeaszopeninnewwindow此安装方式参考上面两个项目创建,如果刚开始搭建,直接使用上面的安装方式即可,可根据实际情况微调项目地址:https://github.com/clay-wangzhi/ansible-collection-k8s 相关支持支......
  • K8s 一条默认参数引起的性能问题-Pod enableServiceLinks
    问题时间线xx:xx]开发收到业务反馈接口响应超时[xx:xx]开发&SRE&中间件联合排查代码、网关、底层网络问题,无果[xx:xx] 测试环境复现排查[xx:xx] 利用差异法、排除法和经验解决,先上线[xx:xx] 根因定位 问题现象1)接口偶发性超时image-202401161814518792)容器化......