首页 > 其他分享 >光速上手k8s(2023)(containerd)(未完待续)

光速上手k8s(2023)(containerd)(未完待续)

时间:2023-01-09 21:57:11浏览次数:76  
标签:-- containerd sudo apt 未完待续 imageName 2023 com

又过了好久没写了,主要是近来状况也无聊

一、了解概念(参考

概念

Kubernetes 是一个可移植、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化。 Kubernetes 拥有一个庞大且快速增长的生态,其服务、支持和工具的使用范围相当广泛。

Kubernetes 这个名字源于希腊语,意为“舵手”或“飞行员”。k8s 这个缩写是因为 k 和 s 之间有八个字符的关系。 Google 在 2014 年开源了 Kubernetes 项目。 Kubernetes 建立在 Google 大规模运行生产工作负载十几年经验的基础上, 结合了社区中最优秀的想法和实践。

Pod的概念

在K8S中,调度的最小是Pod,一个Pod中可以运行一个或者多个容器。在一个集群中,K8S会为每个Pod都分配一个集群内唯一的IP地址。因为K8S要求底层网络支持集群内的任意节点之间的两个Pod能够直接通信。这些容器共享当前Pod的文件系统和网络。而这些容器之所以能够共享,是因为Pod中有一个叫Pause的根容器,其余的用户业务容器都是共享这个根容器的IP和Volume。所以这些容器之间都可以通过localhost进行通信。

二、安装(参考

kubernetes的国外安装其实非常简单,国内安装的主要问题在于kubernetes部件所需的官方镜像在 http://gcr.io(Google Cloud Container Registry)上,很不幸,这个网站被墙了。

添加key

下载这个,有梯子的话也可以直接 sudo curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - 

没有梯子的,下载好之后

sudo apt-key add ./apt-key.gpg
sudo apt-get update

添加源

sudo nano /etc/apt/sources.list.d/kubernetes.list

添加 deb http://mirrors.ustc.edu.cn/kubernetes/apt kubernetes-xenial main 

安装

sudo apt-get update
sudo apt install kubelet kubernetes-cni kubeadm docker.io

验证k8s是否安装好即可,直接敲kubectl + 回车。

关闭swap

  • 暂时关闭 直接使用命令 sudo swapoff -a ,但是重启之后会失效。会导致k8s无法正常运行。
  • 永久关闭  sudo vim /etc/fstab 将有swap.img那行注释掉,保存即可。

三、初始化Master节点

 设置HostName

修改主机名

sudo hostnamectl set-hostname master-node

 

 初始化

方法一(推荐):

sudo kubeadm init --pod-network-cidr=10.244.0.0/16

 使用镜像:

kubeadm init --image-repository="registry.cn-hangzhou.aliyuncs.com/google_containers" --pod-network-cidr=10.244.0.0/16

忽略一些报错:

sudo kubeadm init --image-repository="registry.cn-hangzhou.aliyuncs.com/google_containers" --pod-network-cidr=10.244.0.0/16  --ignore-preflight-errors=SystemVerification --ignore-preflight-errors=Mem

 

方法二:

首先 kubeadm config images list ,然后新建一个sh文件,内容:

images=(  # 下面的镜像应该去除"k8s.gcr.io/"的前缀,版本换成上面获取到的版本
    #你刚刚获取的
)

for imageName in ${images[@]} ; do
    docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
    docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName
    docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
done
images=(  # 下面的镜像应该去除"k8s.gcr.io/"的前缀,版本换成上面获取到的版本
    kube-apiserver:v1.12.1
    kube-controller-manager:v1.12.1
    kube-scheduler:v1.12.1
    kube-proxy:v1.12.1
    pause:3.1
    etcd:3.2.24
    coredns:1.2.2
)

for imageName in ${images[@]} ; do
    docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
    docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName
    docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
done
例子
sudo kubeadm init --pod-network-cidr=10.244.0.0/16

目前最大问题(参考

日志: "command failed" err="failed to run Kubelet: validate service connection: CRI v1 runtime API is not implemented for endpoint \"> 

似乎与K8s 1.26中的这个变化有关。 解决方案是安装 containerd 1.6,但是......似乎还没有 APT 包

通过下载和替换二进制文件手动将 containerd 升级到 1.6 或更高版本

wget https://github.com/containerd/containerd/releases/download/v1.6.12/containerd-1.6.12-linux-amd64.tar.gz
tar xvf containerd-1.6.12-linux-amd64.tar.gz
systemctl stop containerd
cd bin
cp * /usr/bin/
systemctl start containerd

 

 

其他节点的加入

命令执行完成之后,会打印一个有kubeadm join的命令,需要保存下来。

大概长这样。

kubeadm join 你的IP地址:6443 --token 你的TOKEN --discovery-token-ca-cert-hash sha256:你的CA证书哈希

token是有时效性的,过期时间一般是86400000毫秒(一天)

 

记亿些我遇到的问题

① /var/run/containerd/containerd.sock: connect: no such file or directory\

 

 解决方案 sudo apt install containerd 

如果还不行(来自网络,未测试):

rm -rf /var/lib/containerd
systemctl start containerd
systemctl start docker

 

② /proc/sys/net/bridge/bridge-nf-call- iptables does not exist 

sudo modprobe br_netfilter

 

③ container runtime is not running 

 

 

 安装一下:

sudo apt install container

如果还不行(来自网络,未测试):

rm -rf /etc/containerd/config.toml
systemctl restart containerd

 

④忽略一些错误

例如 [ERROR SystemVerification]: failed to parse kernel config: unable to load kernel module: “configs“ ,一些教程建议忽略,那么你可以使用 --ignore-preflight-errors=SystemVerification 来忽略这个错误

 

⑤ [kubelet-check] The HTTP call equal to ‘curl -sSL http://localhost:10248/healthz’ failed 

 

检查docker是否安装,服务是否启动。启动服务 sudo systemctl enable --now docker   sudo systemctl restart kubelet 

目前卡这里了

 

 

⑥ /etc/kubernetes/manifests/etcd.yaml already exists 

重启服务即可 sudo kubeadm reset 

 

标签:--,containerd,sudo,apt,未完待续,imageName,2023,com
From: https://www.cnblogs.com/Ctrl-cCtrl-v/p/17030193.html

相关文章

  • C++ATM取存款机模拟程序[2023-01-09]
    C++ATM取存款机模拟程序[2023-01-09]ATM取存款机模拟程序要求:设计一个程序,当输入给定的卡号和密码(初始卡号和密码为123456)时,系统能登录ATM取款机系统,用户可以按照以下......
  • 2023.1.9周报
    本周总结:《算法竞赛》5.3、5.4,《算法竞赛进阶指南》0x56、0x5C、靠队友录屏白嫖了namomocamp的内容。大方向:动态规划小专题:数位DP、状压DP题目完成情况:div2、abc各......
  • 20230109今天遇见的问题?学代码 多思考多敲多看
    20230109今天遇见的问题?学代码多思考多敲多看1)detailOther(this.$route.params.id).then((res)=>{console.log(res.result,"详细信息");this.form=res......
  • ## SZTUACM周报(2023.1.2 ~ 2023.1.8)
    图论刷题昂贵的聘礼(单源最短路,图论建模)思路:将每个物品看作一个点,到达这个点表示获得该物品,获取该物品的代价就是边权,用0号点表示初始状态(不拥有任何物品),......
  • 2023/1/9 20221321杨渝学习打卡
    Python入门学习学习链接:https://www.bilibili.com/video/BV14r4y1k7F9/?spm_id_from=333.999.0.0&vd_source=a989a1afa6cb8b6527dd9bf059d71439输入,输出,计算1.输入:在c语......
  • 2023/1/9.1
    For循环虽然所有循环结构都可以用while或者do...while表示,但Java提供了另一种语句——for循环,使一些循环循环结构变得更加简单。for循环语句是支持迭代的一种通......
  • 2023/1/9.2
    breakcontinue认识break在任何循环语句的主题部分,均可用break控制循环的流程。break用户强行退出循环,不执行循环中剩余的语句。(break语句也在switch语句中使用)i......
  • 「Codeforces」寒假训练 2023 #3
    A.StringLCM原题链接#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;constintN=1e5+10;intq;strings,t;intlens,lent;int_lcm;......
  • 2023新年红包,兔年HTML红包页面代码【2023新年快乐_附源码】
    一.新年红包,兔年HTML红包页面1.1资源获取和效果预览1.源码资源获取:https://download.csdn.net/download/weixin_52908342/87373505快速通道:点击跳转下载新年红包,兔年......
  • C语言学生管理系统[2023-01-09]
    C语言学生管理系统[2023-01-09]学生管理系统利用数据结构的单链表的框架实现学生管理系统以下功能要求:1)学生个人信息:姓名、学号、专业、性别、年龄、联系方式、成绩。......