Centos7安装部署k8s(kubernetes)最新v1.27.1版本超详细安装教程

这篇具有很好参考价值的文章主要介绍了Centos7安装部署k8s(kubernetes)最新v1.27.1版本超详细安装教程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

k8s安装

centos7.9最小安装版本

从零开始的k8s安装

硬件配置要求
  1. cpu >= 2核
  2. 硬盘 >= 20G
  3. 内存 >= 2G
  4. 节点数量建议为奇数(3, 5, 7, 9等)(1台好像也能搭,没试过)

以下命令出除特殊要求外,其余都建议在master主机执行

本教程配置如下
主机名 IP 配置
master 192.168.42.150 2核+2G+20G
node1 192.168.42.151 2核+2G+20G
node2 192.168.42.152 2核+2G+20G
一. 安装(所有机器都要执行)
  1. 执行以下命令安装必备插件

    # yum 更新
    sudo yum update -y
    # tab 命令补全
    sudo yum install -y bash-completion
    # wget
    sudo yum install -y wget
    # vim 编辑器
    sudo yum install -y vim-enhanced
    # 网络工具
    sudo yum install -y net-tools
    # gcc 编译器
    sudo yum install -y gcc
    
  2. 将主机名指向本机IP,主机名只能包含:字母、数字、-(横杠)、.(点)

    获取主机名

    hostname
    

    设置主机名

    hostnamectl set-hostname  主机名
    
  3. 将节点加入到 hosts 中

    cat >> /etc/hosts << EOF
    192.168.42.150 master
    192.168.42.151 node1
    192.168.42.152 node2
    EOF
    
  4. 设置时间同步

    sudo yum -y install ntpdate
    sudo ntpdate ntp1.aliyun.com
    sudo systemctl status ntpdate
    sudo systemctl start ntpdate
    sudo systemctl status ntpdate
    sudo systemctl enable ntpdate
    
  5. 关闭防火墙或者开通指定端口(这里使用关闭防火墙)

    sudo systemctl stop firewalld.service 
    sudo systemctl disable firewalld.service
    
  6. 关闭 swap 交换空间

    free -h
    sudo swapoff -a
    sudo sed -i 's/.*swap.*/#&/' /etc/fstab
    free -h
    
  7. 关闭 selinux

    getenforce
    cat /etc/selinux/config
    sudo setenforce 0
    sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
    cat /etc/selinux/config
    
  8. 安装 docker , Containerd

    # 删除 docker(如果有的话)
    sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
    # 安装必备工具
    sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    # 加入 docker 源
    sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo 
    
    # 安装 docker
    sudo yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
    # 安装 containerd
    sudo yum install -y containerd
    
    # 停止 containerd
    sudo systemctl stop containerd.service
    
    # 生成并修改配置文件
    sudo cp /etc/containerd/config.toml /etc/containerd/config.toml.bak
    sudo containerd config default > $HOME/config.toml
    sudo cp $HOME/config.toml /etc/containerd/config.toml
    
    sudo sed -i "s#registry.k8s.io/pause#registry.cn-hangzhou.aliyuncs.com/google_containers/pause#g" /etc/containerd/config.toml
    
    sudo sed -i "s#SystemdCgroup = false#SystemdCgroup = true#g" /etc/containerd/config.toml
    
    # 将 containerd 加入开机自启
    sudo systemctl enable --now containerd.service
    
    # 启动 docker
    sudo systemctl start docker.service
    # 将 docker 加入开机自启
    sudo systemctl enable docker.service
    sudo systemctl enable docker.socket
    sudo systemctl list-unit-files | grep docker
    
    # 设置 docker 镜像加速
    sudo mkdir -p /etc/docker
    # 镜像地址换成你自己的阿里云镜像地址
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
      "registry-mirrors": ["https://z5d2yy4c.mirror.aliyuncs.com"],
      "exec-opts": ["native.cgroupdriver=systemd"]
    }
    EOF
    
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    sudo docker info
    
    sudo systemctl status docker.service
    sudo systemctl status containerd.service
    
  9. 添加阿里云 k8s 镜像仓库

    cat <<EOF > /etc/yum.repos.d/kubernetes.repo
    [kubernetes]
    name=Kubernetes
    baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
    # 是否开启本仓库
    enabled=1
    # 是否检查 gpg 签名文件
    gpgcheck=0
    # 是否检查 gpg 签名文件
    repo_gpgcheck=0
    gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
    
    EOF
    
  10. 转发IPv4并让iptables看到桥接流量

    cat >/etc/modules-load.d/k8s.conf <<EOF
    overlay
    br_netfilter
    EOF
    modprobe overlay
    modprobe br_netfilter
    
    cat >/etc/sysctl.d/k8s.conf <<EOF
    net.bridge.bridge-nf-call-iptables=1
    net.bridge.bridge-nf-call-ip6tables=1
    net.ipv4.ip_forward=1
    EOF
    sysctl --system
    
    # 通过运行以下指令确认 br_netfilter 和 overlay 模块被加载
    lsmod | egrep 'overlay|br_netfilter'
    # 通过运行以下指令确认 net.bridge.bridge-nf-call-iptables、net.bridge.bridge-nf-call-ip6tables 系统变量在你的 sysctl 配置中被设置为 1
    sysctl net.bridge.bridge-nf-call-iptables net.bridge.bridge-nf-call-ip6tables net.ipv4.ip_forward
    
  11. 安装 k8s

    # 安装 1.27.1 版本
    sudo yum install -y kubelet-1.27.1-0 kubeadm-1.27.1-0 kubectl-1.27.1-0 --disableexcludes=kubernetes --nogpgcheck
    
    # 安装最新版本(生产环境不建议)
    # sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes --nogpgcheck
    
    systemctl daemon-reload
    sudo systemctl restart kubelet
    sudo systemctl enable kubelet
    
二. 启动
  1. master 初始化(仅在master节点主机上执行)

    kubeadm init --image-repository=registry.aliyuncs.com/google_containers --apiserver-advertise-address=192.168.42.150 --kubernetes-version=v1.27.1
    
    # --image-repository 					镜像加速地址,一般不动
    # --apiserver-advertise-address  master 节点IP地址,自己改
    # --kubernetes-version 					kubernetes 版本,自己选择的什么版本就改成什么版本
    
    
    # 初始化失败可以使用 kubeadm reset 重置
    # 失败原因多半是因为网络问题,可以换个网络试试
    
  2. 初始化成功后执行(仅在master节点主机上执行)

    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    
  3. 将 node 加入集群(仅在node节点主句执行)不要直接复制,每个人不一样

    # 执行成功后,会出现类似下列内容:
    # kubeadm join 192.168.80.60:6443 --token f9lvrz.59mykzssqw6vjh32 \
    # --discovery-token-ca-cert-hash sha256:4e23156e2f71c5df52dfd2b9b198cce5db27c47707564684ea74986836900107
    # 将控制台打印的这句复制到 node 节点主机上执行就行
    
    # 如果忘记或者过期可以使用以下命令重新生成
    # kubeadm token create --print-join-command
    
  4. 查看集群状态(master 节点执行)

    kubectl get nodes
    

    输出:

    NAME     STATUS   ROLES           AGE     VERSION
    master   NotReady    control-plane   7h21m   v1.27.1
    node1    NotReady    <none>          7h20m   v1.27.1
    node2    NotReady    <none>          7h20m   v1.27.1
    

    可以看到所有节点都是 NotReady ,这是因为还没有配置网络

  5. 配置网络(仅在master节点执行)

    k8s与Calico版本对应

    Kubernetes 版本 Calico 版本 Calico 文档
    1.18、1.19、1.20 3.18 https://projectcalico.docs.tigera.io/archive/v3.18/getting-started/kubernetes/requirements https://projectcalico.docs.tigera.io/archive/v3.18/manifests/calico.yaml
    1.19、1.20、1.21 3.19 https://projectcalico.docs.tigera.io/archive/v3.19/getting-started/kubernetes/requirements https://projectcalico.docs.tigera.io/archive/v3.19/manifests/calico.yaml
    1.19、1.20、1.21 3.20 https://projectcalico.docs.tigera.io/archive/v3.20/getting-started/kubernetes/requirements https://projectcalico.docs.tigera.io/archive/v3.20/manifests/calico.yaml
    1.20、1.21、1.22 3.21 https://projectcalico.docs.tigera.io/archive/v3.21/getting-started/kubernetes/requirements https://projectcalico.docs.tigera.io/archive/v3.21/manifests/calico.yaml
    1.21、1.22、1.23 3.22 https://projectcalico.docs.tigera.io/archive/v3.22/getting-started/kubernetes/requirements https://projectcalico.docs.tigera.io/archive/v3.22/manifests/calico.yaml
    1.21、1.22、1.23 3.23 https://projectcalico.docs.tigera.io/archive/v3.23/getting-started/kubernetes/requirements https://projectcalico.docs.tigera.io/archive/v3.23/manifests/calico.yaml
    1.22、1.23、1.24 3.24 https://projectcalico.docs.tigera.io/archive/v3.24/getting-started/kubernetes/requirements https://projectcalico.docs.tigera.io/archive/v3.24/manifests/calico.yaml
    1.23、1.24、1.25、1.26、1.27 3.25 https://projectcalico.docs.tigera.io/archive/v3.25/getting-started/kubernetes/requirements https://projectcalico.docs.tigera.io/archive/v3.25/manifests/calico.yaml

    或者自己去官网查看版本对应关系

    https://docs.tigera.io/calico/latest/getting-started/kubernetes/requirements

    下载(网址换成自己版本对应的即可)

    wget --no-check-certificate https://projectcalico.docs.tigera.io/archive/v3.25/manifests/calico.yaml
    

    下载不了的可以把后面网址复制到浏览器下载下来后在传到虚拟机

    修改 calico.yaml 文件

    vim calico.yaml
    
    # 在 - name: CLUSTER_TYPE 下方添加如下内容
    - name: CLUSTER_TYPE
      value: "k8s,bgp"
      # 下方为新增内容
    - name: IP_AUTODETECTION_METHOD
      value: "interface=master节点主机的网卡名称"
    

    配置网络

    kubectl apply -f calico.yaml
    
  6. 再次查看节点信息

    查看 node 状态

    kubectl get nodes 
    

    输出:

    NAME     STATUS   ROLES           AGE     VERSION
    master   NotReady    control-plane   21m   v1.27.1
    node1    NotReady    <none>          20m   v1.27.1
    node2    NotReady    <none>          20m   v1.27.1
    

    查看 pod 状态

    kubectl get pods --all-namespaces -o wide
    

    输出:

    [root@master ~]# kubectl get pods --all-namespaces -o wide
    NAMESPACE     NAME                                      READY   STATUS     RESTARTS   AGE     IP              NODE            NOMINATED NODE   READINESS GATES
    kube-system   calico-kube-controllers-f79f7749d-rkqgw   0/1     Pending    0          11s     <none>          <none>          <none>           <none>
    kube-system   calico-node-7698p                         0/1     Init:0/3   0          11s     192.168.80.60   k8s             <none>           <none>
    kube-system   calico-node-tvhnb                         0/1     Init:0/3   0          11s     192.168.0.18    centos-7-9-16   <none>           <none>
    kube-system   coredns-c676cc86f-4lncg                   0/1     Pending    0          8m14s   <none>          <none>          <none>           <none>
    kube-system   coredns-c676cc86f-7n9wv                   0/1     Pending    0          8m14s   <none>          <none>          <none>           <none>
    kube-system   etcd-k8s                                  1/1     Running    0          8m21s   192.168.80.60   k8s             <none>           <none>
    kube-system   kube-apiserver-k8s                        1/1     Running    0          8m18s   192.168.80.60   k8s             <none>           <none>
    kube-system   kube-controller-manager-k8s               1/1     Running    0          8m18s   192.168.80.60   k8s             <none>           <none>
    kube-system   kube-proxy-87lx5                          1/1     Running    0          6m16s   192.168.0.18    centos-7-9-16   <none>           <none>
    kube-system   kube-proxy-rctn6                          1/1     Running    0          8m14s   192.168.80.60   k8s             <none>           <none>
    kube-system   kube-scheduler-k8s                        1/1     Running    0          8m18s   192.168.80.60   k8s             <none>           <none>
    [root@k8s ~]# 
    

    可以看到正在初始化,现在稍等一段时间(多久看网络情况)

    初始化失败大部分情况也是因为网络原因,建议换个网络试试

  7. 初始化成功

    查看 node 状态

    kubectl get nodes 
    

    输出:

    NAME     STATUS   ROLES           AGE     VERSION
    master   Ready    control-plane   7h21m   v1.27.1
    node1    Ready    <none>          7h20m   v1.27.1
    node2    Ready    <none>          7h20m   v1.27.1
    

    全部 Ready

    查看 pod 状态

    kubectl get pods --all-namespaces -o wide
    

    输出:

    NAMESPACE     NAME                                       READY   STATUS    RESTARTS      AGE     IP               NODE     NOMINATED NODE   READINESS GATES
    kube-system   calico-kube-controllers-6c99c8747f-92ctj   1/1     Running   1 (64m ago)   31m   172.16.219.69    master   <none>           <none>
    kube-system   calico-node-72n28                          1/1     Running   2 (64m ago)   31m   192.168.42.150   master   <none>           <none>
    kube-system   calico-node-jb2n8                          1/1     Running   1 (64m ago)   31m   192.168.42.152   node2    <none>           <none>
    kube-system   calico-node-m6ndl                          1/1     Running   1 (64m ago)   31m   192.168.42.151   node1    <none>           <none>
    kube-system   coredns-7bdc4cb885-6l9dk                   1/1     Running   1 (64m ago)   33m   172.16.219.70    master   <none>           <none>
    kube-system   coredns-7bdc4cb885-j7qlm                   1/1     Running   1 (64m ago)   33m   172.16.219.68    master   <none>           <none>
    kube-system   etcd-master                                1/1     Running   1 (64m ago)   33m   192.168.42.150   master   <none>           <none>
    kube-system   kube-apiserver-master                      1/1     Running   1 (64m ago)   33m   192.168.42.150   master   <none>           <none>
    kube-system   kube-controller-manager-master             1/1     Running   1 (64m ago)   33m   192.168.42.150   master   <none>           <none>
    kube-system   kube-proxy-558cb                           1/1     Running   1 (64m ago)   33m   192.168.42.150   master   <none>           <none>
    kube-system   kube-proxy-fpk62                           1/1     Running   1 (64m ago)   32m   192.168.42.152   node2    <none>           <none>
    kube-system   kube-proxy-sm4ph                           1/1     Running   1 (64m ago)   32m   192.168.42.151   node1    <none>           <none>
    kube-system   kube-scheduler-master                      1/1     Running   1 (64m ago)   33m   192.168.42.150   master   <none>           <none>
    
    

    全部 Ready

  8. k8s 命令补全

    ! grep -q kubectl "$HOME/.bashrc" && echo "source /usr/share/bash-completion/bash_completion" >>"$HOME/.bashrc"
    ! grep -q kubectl "$HOME/.bashrc" && echo "source <(kubectl completion bash)" >>"$HOME/.bashrc"
    ! grep -q kubeadm "$HOME/.bashrc" && echo "source <(kubeadm completion bash)" >>"$HOME/.bashrc"
    ! grep -q crictl "$HOME/.bashrc" && echo "source <(crictl completion bash)" >>"$HOME/.bashrc"
    source "$HOME/.bashrc"
    
  9. 常用命令

    # 获取节点
    kubectl get nodes -o wide
    # 实时查询nodes状态
    watch kubectl get nodes -o wide
    # 获取pod
    kubectl get pods --all-namespaces -o wide
    # 查看镜像列表
    kubeadm config images list
    # 节点加入集群
    kubeadm token create --print-join-command
    # 描述node
    kubectl describe node k8s-master
    # 描述pod
    kubectl describe pod kube-flannel-ds-hs8bq --namespace=kube-system
    
三. 测试
  1. 创建一个 nginx 来测试

    kubectl create deployment nginx --image=nginx
    
  2. 查看状态

    kubectl get pods -o wide
    

    输出:

    NAME                     READY   STATUS    RESTARTS   AGE
    nginx-77b4fdf86c-pfklq   1/1     ContainerCreating   0          72m
    

    等待一段时间,等 ContainerCreating 变成 Running 时进行下一步

  3. 暴露端口

    kubectl expose deployment nginx --port=80 --type=NodePort
    
  4. 查看 pos 及服务信息

    kubectl get pod,svc
    

    输出:

    NAME                         READY   STATUS    RESTARTS   AGE
    pod/nginx-77b4fdf86c-pfklq   1/1     Running   0          76m
    
    NAME                 TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
    service/kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP        7h47m
    service/nginx        NodePort    10.98.106.212   <none>        80:32403/TCP   74m
    
  5. 在浏览器中访问

    http://192.168.42.150:32403
    

    地址根据你自己的主机变化,端口上面输出的信息中 PORT(S) 这一栏会有

    访问成功就说明 k8s 安装部署成功!文章来源地址https://www.toymoban.com/news/detail-666499.html

到了这里,关于Centos7安装部署k8s(kubernetes)最新v1.27.1版本超详细安装教程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • centos安装部署Kubernetes(k8s)步骤使用kubeadm方式

    机器地址: 192.168.0.35 k8s-master 192.168.0.39 k8s-node1 192.168.0.116 k8s-node2 修改每台机器的名字 关闭防火墙和selinux 临时关闭selinux: 永久关闭: 修改selinux为disabled或者permissive 重启生效 配置本地解析 确保每个节点MAC地址和 product_uuid 的唯一性 同步时间 如果各机器上时间都没有问题

    2024年02月06日
    浏览(48)
  • m1使用VMware安装CentOS7并部署k8s高可用集群

    项目 版本 处理器 Apple M1 Max 操作系统 macOS Ventura 13.0 虚拟机应用 VMware Fusion 专业版 12.2.3 虚拟机操作系统 CentOS Linux 7 (AltArch) 容器运行时版本 docker 1.13.1 集群版本 Kubernetes 1.21.0 2.1 安装 VMware 安装包下载地址:VMware Fusion 专业版 12.2.3 应用许可证问题请自行解决 2.2 安装虚拟机 2.

    2024年02月02日
    浏览(40)
  • Centos7部署单机版K8S

    2024年02月04日
    浏览(44)
  • VMWare中Centos7部署K8S集群

    关于我们要搭建的K8S: Docker版本:docker-ce-19.03.9; K8S版本:1.20.2; 三个节点:master、node1、node2(固定IP); 容器运行时:仍然使用Docker而非Containerd; Pod网络:用Calico替换Flannel实现 Pod 互通,支持更大规模的集群; 集群构建工具:Kubeadm(这个没啥好说的吧); 关于网络配

    2024年02月15日
    浏览(38)
  • Centos7安装K8S

    根据以前一些博主写的博客,在小阳翻了不下几十篇博客之后,我果断是放弃了,于是找到了官网地址,然后也有 坑 1. 关闭防火墙 systemctl stop firewalld systemctl disable firewalld 2. 关闭 selinux(2,3根据自己情况选择哈) sed -i \\\'s/enforcing/disabled/\\\' /etc/selinux/config 这个是永久关闭 setenfor

    2024年01月16日
    浏览(40)
  • centos7安装k8s集群

    安装kubeadm、kubelet、kubectl 初始化成功,获得一下命令: 执行一下命令: 打开网络插件kube-flannel.yml文件,修改网络: 执行 kubectl apply -f kube-flannel.yml kubectl get all -A kubectl taint nodes k8s-master node-role.kubernetes.io/master- 1.克隆k8s-node1虚机,作为node节点 2.修改克隆的虚机的ip 和  hos

    2024年04月27日
    浏览(38)
  • centos7搭建k8s环境并部署springboot项目

    之前看了很多文章,都是部署后一直报错,百度解决后下次又忘了,这次决定把从头到尾的过程记录下来方便下次再看 ,部署参考文章尚硅谷Kubernetes(k8s)视频学习笔记_尚硅谷k8s笔记_溯光旅者的博客-CSDN博客 1、先去下载vmware虚拟机安装,我安装的是这个版本VMware Workstati

    2024年02月03日
    浏览(39)
  • CentOS7使用kubeadm部署k8s-1.28集群

    参考资料:生产环境 记录使用CentOS7.9进行k8s-1.28版本部署,运行时环境使用containerd,网络插件使用calic,集群搭建完成后。搭建NFS共享存储环境,测试运行pod并挂载使用持久卷。 主机名 **IP地址 ** 角色 基础组件 el7-linux-node-01 192.168.240.11 k8s-master kubeadm,kubelet,kubectl,containerd,nf

    2024年04月26日
    浏览(41)
  • CentOS7使用Yum安装k8s

    注意:这里安装测试的k8s版本比较低 k8s核心功能 自我修复 服务发现和负载均衡 自动部署和回滚 弹性伸缩 服务器环境准备 参考 k8s 安装部署 1 - 环境准备 准备3台服务器 Linux修改配置 配置Docker安装源 配置kubernetes安装源 安装etcd 在master节点安装配置etcd 安装k8s master 在master节

    2023年04月16日
    浏览(39)
  • Kubernetes(k8s)集群安装部署

    名称 IP 系统 配置 主控节点 192.168.202.101 CentOS 7.9.2009 2核4G 工作节点1 192.168.202.102 CentOS 7.9.2009 2核4G 工作节点2 192.168.202.103 CentOS 7.9.2009 2核4G 2.1 升级操作系统内核 导入elrepo gpg key 安装elrepo YUM源仓库 安装kernel-ml版本,ml为长期稳定版本,lt为长期维护版本 设置grub2默认引导为0 重

    2024年02月10日
    浏览(65)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包