gpt4 book ai didi

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

转载 作者:我是一只小鸟 更新时间:2023-01-09 22:35:26 26 4
gpt4 key购买 nike

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

1、了解概念( 参考 )

概念

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进行通信.

2、安装( 参考 )

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那行注释掉,保存即可。

3、 初始化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   。

  。

最后此篇关于光速上手k8s(2023)(containerd)(未完待续)的文章就讲到这里了,如果你想了解更多关于光速上手k8s(2023)(containerd)(未完待续)的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com