美文网首页
6.0 k8s(ubuntu版)-Kubernetes安装

6.0 k8s(ubuntu版)-Kubernetes安装

作者: bobokaka | 来源:发表于2022-12-01 22:57 被阅读0次

    3.0 k8s-Kubernetes高可用部署(上)——部署前准备

    1. 安装docker

    仍然以masterServer1服务器为例,5台服务器都需要运行。

    当然可以一台服务器安装好后,再做其他4个快照,但作为能看我这些文章的吗,大概都是初学者,因此按我当下的想法,就同样的安装方法自己安装5次,熟悉好过程。

    Docker从17.03开始分为企业版(EE)与社区版(CE),社区版并非阉割版,而是改了个名称;企业版则提供了一些收费的高级特性。

    EE版本维护期1年;CE的stable版本三个月发布一次,维护期四个月;另外CE还有edge版,一个月发布一次。

    1.1 如果过去安装过 docker,先删掉
    apt-get remove docker docker-engine docker.io containerd runc
    

    参考输出

    root@masterServer1:~# apt-get remove docker docker-engine docker.io containerd runc
    Reading package lists... Done
    Building dependency tree... Done
    Reading state information... Done
    E: Unable to locate package docker-engine
    root@masterServer1:~# 
    
    1.2 安装curl gnupg2 software-properties-common apt-transport-https ca-certificates
    apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common
    

    参考输出:

    root@masterServer1:~# apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common
    Reading package lists... Done
    Building dependency tree... Done
    Reading state information... Done
    ......
    Scanning processes...                                                                                
    Scanning linux images...                                                                             
    
    Running kernel seems to be up-to-date.
    
    No services need to be restarted.
    
    No containers need to be restarted.
    
    No user sessions are running outdated binaries.
    
    No VM guests are running outdated hypervisor (qemu) binaries on this host.
    root@masterServer1:~#
    

    PS:

    • docker当年的实现:被拆分出了几个标准化的模块,标准化的目的是模块是可被其他实现替换的,不由任何一个厂商控制。
      docker由 docker-client ,dockerd,containerd,docker-shim,runc组成,所以containerd是docker的基础组件之一

    • 调用链
      Docker 作为 k8s 容器运行时,调用关系如下:
      kubelet --> docker shim (在 kubelet 进程中) --> dockerd --> containerd
      Containerd 作为 k8s 容器运行时,调用关系如下:
      kubelet --> cri plugin(在 containerd 进程中) --> containerd

    • containerd.io : 守护进程 containerd。 它在 docker 包上独立工作,并且是 docker 包所必需的。
      containerd 可用作 Linux 和 Windows 的守护程序。 它管理其主机系统的完整容器生命周期,从图像传输和存储到容器执行和监督,再到低级存储到网络附件等等。

    • docker-ce-cli : docker 引擎的命令行界面,社区版

    • docker-ce : docker 引擎,社区版。 需要 docker-ce-cli

    1.3 安装GPG证书

    信任Docker的GPG公钥

    # (华为源,推荐)
    curl -fsSL https://repo.huaweicloud.com/docker-ce/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/trusted.gpg.d/docker.gpg
    # 或者(阿里云)
    curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/trusted.gpg.d/docker.gpg
    # 或者(Docker官方)
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/trusted.gpg.d/docker.gpg
    

    参考输出:

    root@masterServer1:/etc/apt/trusted.gpg.d# curl -fsSL https://repo.huaweicloud.com/docker-ce/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/trusted.gpg.d/docker.gpg
    root@masterServer1:/etc/apt/trusted.gpg.d# 
    
    1.4 写入软件源信息

    对于amd64架构的计算机,添加软件仓库:

    # (华为源,推荐)
    add-apt-repository "deb [arch=amd64] https://repo.huaweicloud.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
    # 或者(阿里云)
    add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
    # 或者(Docker官方)
     add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
    # 对于树莓派或其它Arm架构计算机,请运行:
    echo "deb [arch=armhf] https://repo.huaweicloud.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list
    

    参考输出:

    root@masterServer1:/opt/kubernetes/docker# add-apt-repository "deb [arch=amd64] https://repo.huaweicloud.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
    Repository: 'deb [arch=amd64] https://repo.huaweicloud.com/docker-ce/linux/ubuntu jammy stable'
    Description:
    Archive for codename: jammy components: stable
    More info: https://repo.huaweicloud.com/docker-ce/linux/ubuntu
    Adding repository.
    Press [ENTER] to continue or Ctrl-c to cancel.# 这里按回车键
    
    Adding deb entry to /etc/apt/sources.list.d/archive_uri-https_repo_huaweicloud_com_docker-ce_linux_ubuntu-jammy.list
    Adding disabled deb-src entry to /etc/apt/sources.list.d/archive_uri-https_repo_huaweicloud_com_docker-ce_linux_ubuntu-jammy.list
    Hit:1 https://repo.huaweicloud.com/ubuntu jammy InRelease
    Hit:2 https://repo.huaweicloud.com/ubuntu jammy-updates InRelease
    Hit:3 https://repo.huaweicloud.com/ubuntu jammy-backports InRelease
    Hit:4 https://repo.huaweicloud.com/ubuntu jammy-security InRelease
    Get:5 https://repo.huaweicloud.com/docker-ce/linux/ubuntu jammy InRelease [48.9 kB]
    Get:6 https://repo.huaweicloud.com/docker-ce/linux/ubuntu jammy/stable amd64 Packages [9632 B]
    Fetched 58.5 kB in 2s (35.5 kB/s) 
    Reading package lists... Done
    root@masterServer1:/opt/kubernetes/docker# 
    
    
    1.5 更新索引文件并安装Docker
    apt-get install docker-ce
    

    参考输出docker版:

    root@masterServer1:/opt/kubernetes/docker# apt-get update
    Hit:1 https://repo.huaweicloud.com/ubuntu jammy InRelease
    ......
    Reading package lists... Done
    root@masterServer1:/opt/kubernetes/docker# apt-get install docker-ce
    Reading package lists... Done
    Building dependency tree... Done
    Reading state information... Done
    ......
    Scanning processes...                                                      
    Scanning linux images...                                                   
    
    Running kernel seems to be up-to-date.
    
    No services need to be restarted.
    
    No containers need to be restarted.
    
    No user sessions are running outdated binaries.
    
    No VM guests are running outdated hypervisor (qemu) binaries on this host.
    root@masterServer1:/opt/kubernetes/docker# 
    

    本质上,我们直接安装containerd即可,但这里是安装docker,优先按docker方案来。

    containerd安装方案(本案例未执行)
    apt-get update
    #安装containerd
    apt install -y containerd.io
    #生成containetd的配置文件
    containerd config default | sudo tee /etc/containerd/config.toml >/dev/null 2>&1
    # 配置 containerd 用systemdcgroup启动,修改cgroup Driver为systemd
    sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/g' /etc/containerd/config.toml
    # 重启和启用
    systemctl restart containerd
    systemctl enable containerd
    

    因为这是演示安装示例,这里我们直接安装docker完整包。
    参考输出containerd版:

    root@masterServer1:/opt/kubernetes/docker# apt-get update
    Hit:1 https://repo.huaweicloud.com/ubuntu jammy InRelease
    Hit:2 https://repo.huaweicloud.com/ubuntu jammy-updates InRelease
    Hit:3 https://repo.huaweicloud.com/ubuntu jammy-backports InRelease
    Hit:4 https://repo.huaweicloud.com/ubuntu jammy-security InRelease
    Hit:5 https://repo.huaweicloud.com/docker-ce/linux/ubuntu jammy InRelease
    Reading package lists... Done
    root@masterServer1:/opt/kubernetes/docker# apt install -y containerd.io
    Reading package lists... Done
    Building dependency tree... Done
    Reading state information... Done
    ......
    Scanning processes...                                                      
    Scanning linux images...                                                   
    
    Running kernel seems to be up-to-date.
    
    No services need to be restarted.
    
    No containers need to be restarted.
    
    No user sessions are running outdated binaries.
    
    No VM guests are running outdated hypervisor (qemu) binaries on this host.
    root@masterServer1:/opt/kubernetes/docker# containerd config default | sudo tee /etc/containerd/config.toml >/dev/null 2>&1
    root@masterServer1:/opt/kubernetes/docker# sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/g' /etc/containerd/config.toml
    root@masterServer1:/opt/kubernetes/docker# systemctl enable containerd
    root@masterServer1:/opt/kubernetes/docker#
    

    将镜像源设置为阿里源 google_containers 镜像源
    华为源没找到。

    (阿里源)
    sed -i 's/k8s.gcr.io/registry.aliyuncs.com\/google_containers/g' /etc/containerd/config.toml
    

    参考输出:

    root@masterServer1:~# sed -i 's/k8s.gcr.io/registry.aliyuncs.com\/google_containers/g' /etc/containerd/config.toml
    root@masterServer1:~#
    
    1.6 设置为开机启动
    systemctl enable docker
    

    参考输出:

    root@masterServer1:/opt/kubernetes/docker# systemctl enable docker
    Synchronizing state of docker.service with SysV service script with /lib/systemd/systemd-sysv-install.
    Executing: /lib/systemd/systemd-sysv-install enable docker
    root@masterServer1:/opt/kubernetes/docker# 
    
    1.7 设置参数
    1.7.1 查看磁盘挂载
    df -h
    

    参考输出:

    root@masterServer1:/opt/kubernetes/docker# df -h
    Filesystem                         Size  Used Avail Use% Mounted on
    tmpfs                              393M  732K  392M   1% /run
    /dev/mapper/ubuntu--vg-ubuntu--lv   15G  6.1G  7.9G  44% /
    tmpfs                              2.0G     0  2.0G   0% /dev/shm
    tmpfs                              5.0M     0  5.0M   0% /run/lock
    /dev/sda2                          2.0G  127M  1.7G   7% /boot
    tmpfs                              393M  4.0K  393M   1% /run/user/0
    root@masterServer1:/opt/kubernetes/docker# 
    
    1.7.2 设置docker启动参数
    • 设置docker数据目录:选择比较大的分区(我这里是/,默认为/var/lib/docker)

    • 设置cgroup driver(默认是cgroupfs,主要目的是与kubelet配置统一,这里可以不设置后面在kubelet中指定cgroupfs)

    mkdir -p /library/dock-data
    # 以下代码一次执行
    cat <<EOF >/etc/docker/daemon.json
    {
     "graph":"/library/dock-data"
    }
    EOF
    

    参考输出:

    root@masterServer1:/opt/kubernetes/docker# mkdir -p /library/dock-data
    root@masterServer1:/opt/kubernetes/docker# cat <<EOF >/etc/docker/daemon.json
    {
     "graph":"/library/dock-data"
    }
    EOF
    root@masterServer1:/opt/kubernetes/docker# 
    

    重新启动docker服务

    service docker restart
    

    参考输出:

    root@masterServer1:/opt/kubernetes/docker# service docker restart
    root@masterServer1:/opt/kubernetes/docker# 
    

    2. 安装必要工具(所有节点)

    仍然以masterServer1服务器为例,5台服务器都需要运行。

    2.1 工具说明
    • kubeadm: 部署集群用的命令
    • kubelet: 在集群中每台机器上都要运行的组件,负责管理pod、容器的生命周期
    • kubectl: 集群管理工具(可选,只要在控制集群的节点上安装即可)

    2.2 安装方法

    1、备份/etc/apt/sources.list.d/kubernetes.list文件:

    cp /etc/apt/sources.list.d/kubernetes.list /etc/apt/sources.list.d/kubernetes.list.bak
    

    2、修改/etc/apt/sources.list.d/kubernetes.list文件:

    # (华为源,推荐)
    cat <<EOF > /etc/apt/sources.list.d/kubernetes.list
    deb https://repo.huaweicloud.com/kubernetes/apt/ kubernetes-xenial main
    EOF
    # (阿里源)
    cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
    deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
    EOF
    

    3、添加kuberneteskey
    ubuntu-server 22.04以上安装命令和华为源官方阿里源官方不一样。

    具体解决方案来源于Install Docker Engine on Ubuntu (在 Ubuntu 上安装 Docker 引擎)

    # (华为源,推荐)
    curl -s https://repo.huaweicloud.com/kubernetes/apt/doc/apt-key.gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
    # (阿里源)
    curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
    

    4、更新索引文件并安装kubernetes

    apt update
    apt install -y kubeadm kubelet kubectl
     apt-mark hold kubelet kubeadm kubectl
    #apt-mark 用于将软件包标记/取消标记为自动安装。 hold 选项用于将软件包标记为保留,以防止软件包被自动安装、升级或删除。
    

    参考输出:

    root@masterServer1:~# apt update
    Hit:1 https://repo.huaweicloud.com/ubuntu jammy InRelease
    ......
    Fetched 70.8 kB in 2s (28.8 kB/s) 
    Reading package lists... Done
    Building dependency tree... Done
    Reading state information... Done
    1 package can be upgraded. Run 'apt list --upgradable' to see it.
    W: https://repo.huaweicloud.com/kubernetes/apt/dists/kubernetes-xenial/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.
    root@masterServer1:~# apt install -y kubeadm kubelet kubectl
    Reading package lists... Done
    Building dependency tree... Done
    Reading state information... Done
    .....
    Scanning processes...                                                                                      
    Scanning linux images...                                                                                   
    
    Running kernel seems to be up-to-date.
    
    No services need to be restarted.
    
    No containers need to be restarted.
    
    No user sessions are running outdated binaries.
    
    No VM guests are running outdated hypervisor (qemu) binaries on this host.
    root@masterServer1:~# apt-mark hold kubelet kubeadm kubectl
    kubelet set on hold.
    kubeadm set on hold.
    kubectl set on hold.
    root@masterServer1:~# systemctl enable kubelet && systemctl start kubelet 
    root@masterServer1:~# 
    

    `

    相关文章

      网友评论

          本文标题:6.0 k8s(ubuntu版)-Kubernetes安装

          本文链接:https://www.haomeiwen.com/subject/ssukfdtx.html