k8s搭建部署--三个节点服务器(超详细)

本文档详细介绍了如何在三个节点上搭建Kubernetes集群,包括Docker环境准备、kubeadm、kubelet和kubectl的安装、Centos和Ubuntu的系统配置、节点的加入以及Flannel网络插件的部署。最后,通过创建nginx pod进行测试,确保集群正常运行。
摘要由CSDN通过智能技术生成

目录

k8s搭建部署--三个节点服务器

 docker环境准备

 安装kubeadm,kubelet和kubectl

    Centos添加kubernetes YUM软件源    

    ubuntu修改源

 master主机执行

 node节点执行

部署flannel

查看集群状态  

测试


k8s搭建部署--三个节点服务器

#建议:先全部在一台master上执行完成集群的安装,最后node节点再加入集群

#硬件环境的要求:
    cpu:2c
    memory:4G/2G
#软件环境的要求:


# docker环境准备

准备4台虚拟机(centos,一台master,三台node)并运行以下脚本:
    
    #!/bin/bash
    
    #解决依赖关系
   

yum install -y yum-utils zlib zlib-devel openssl openssl-devel pcre pcre-devel gcc gcc-c++ autoconf automake make  psmisc  lsof  net-tools vim python3 


    #关闭防火墙
 

   systemctl stop  firewalld
   systemctl disable  firewalld


    #关闭selinux
    setenforce 0   #临时关闭
    #永久关闭
    sed -i  '/^SELINUX/ s/enforcing/disabled/' /etc/selinux/config

# 安装docker
## 卸载旧版本

    yum remove docker \
                      docker-client \
                      docker-client-latest \
                      docker-common \
                      docker-latest \
                      docker-latest-logrotate \
                      docker-logrotate \
                      docker-engine


               

docker版本

```
[root@k8s-master ~]# docker version
Client: Docker Engine - Community
 Version:           20.10.8
 API version:       1.41
 Go version:        go1.16.6
 Git commit:        3967b7d
 Built:             Fri Jul 30 19:53:39 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.8
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.16.6
```

## 安装yum-utils软件包(提供yum-config-manager 实用程序),配置加速源

    

yum install -y yum-utils
    yum-config-manager \
            --add-repo \
                http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

## 安装docker,设置开机自启
  

 yum install -y docker-ce docker-ce-cli containerd.io
    systemctl start docker
    systemctl enable docker

## 配置 Docker使用systemd作为默认Cgroup驱动

每台服务器上都要操作,master和node上都要操作

  

 cat <<EOF > /etc/docker/daemon.json
    {
       "exec-opts": ["native.cgroupdriver=systemd"]
    }
    EOF


    #重启docker
    systemctl restart docker
## 关闭swap分区,每台服务器都需要操作

    swapoff -a # 临时
    sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab #永久
## 重新命名主机,在所有主机上上添加如下命令,修改hosts文件

    hostnamectl set-hostname master
    
    hostnamectl set-hostname node1
    
    hostnamectl set-hostname node2
## 修改主机名后使用su - root重新登陆

每台机器上的/etc/hosts文件都需要修改

    

su  - root
    
    cat >> /etc/hosts << EOF 
    192.168.0.17 master
    192.168.0.89 node1
    192.168.0.11 node2
    192.168.0.19 node3
    EOF

# 安装kubeadm,kubelet和kubectl

kubeadm --》k8s的管理程序--》在master上运行的--》建立整个k8s集群,背后是执行了大量的脚本,帮助我们去启动k8s

kubelet --》在node节点上用来管理容器的--》管理docker,告诉docker程序去启动容器
            master和node通信用的--》管理docker,告诉docker程序去启动容器
一个在集群中每个节点(node)上运行的代理。 它保证容器(containers)都 运行在 Pod 中。

kubectl --》在master上用来给node节点发号施令的程序,用来控制node节点的,告诉它们做什么事情的,是命令行操作的工具

    集群里的每台服务器都需要安装
    
    # Centos添加kubernetes YUM软件源
    

cat > /etc/yum.repos.d/kubernetes.repo << EOF
    [kubernetes]
    name=Kubernetes
    baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
    enabled=1
    gpgcheck=0
    repo_gpgcheck=0
    gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/y

### 回答1: K8sKubernetes)是一种开源的容器编排系统,可用于部署、管理和自动扩展容器化的应用程序。在搭建 K8s 集群之前,我们需要先准备好以下环境: - 一组至少 3 台具有 Ubuntu 16.04 操作系统的服务器(1 个 Master 节点和至少 2 个 Worker 节点)。 - 所有服务器的 root 用户的 SSH 密钥登录已启用。 以下是搭建 K8s 集群详细步骤: 第一步:安装 Docker 在所有节点上安装 Docker,可以通过以下命令安装: sudo apt-get update sudo apt-get install -y docker.io 启动 Docker: sudo systemctl start docker sudo systemctl enable docker 第二步:安装 Kubernetes 在所有节点上安装 kubeadm、kubelet 和 kubectl,可以通过以下命令安装: sudo apt-get update && sudo apt-get install -y apt-transport-https curl curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list deb https://apt.kubernetes.io/ kubernetes-xenial main EOF sudo apt-get update sudo apt-get install -y kubelet kubeadm kubectl sudo apt-mark hold kubelet kubeadm kubectl 第三步:初始化 Master 节点Master 节点上执行以下命令: sudo kubeadm init --pod-network-cidr=10.244.0.0/16 该命令将使用默认配置初始化 K8s Master。 在命令的末尾,您将看到以下输出: Your Kubernetes master has initialized successfully! To start using your cluster, you need to run the following as a regular user: mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config You should now deploy a pod network to the cluster. Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at: https://kubernetes.io/docs/concepts/cluster-administration/addons/ 您需要注意以下内容: - 节点加入命令(例如 kubeadm join) - 用于访问 K8s 集群的 kubeconfig 配置文件。 第四步:安装网络插件 在 K8s 网络中构建通信所需的插件是必需的。 可以使用 Flannel,该插件是最常见和推荐的插件之一,可以通过以下命令进行安装: kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml 第五步:加入 Worker 节点 将 Worker 节点加入 K8s 集群中,可以通过以下命令完成: kubeadm join <Master 节点的 IP 地址>:<Master 节点端口号> --token <Token> --discovery-token-ca-cert-hash <SHA256 值> 至此,K8s 集群搭建完毕,您现在可以使用 kubectl 命令与 K8s 集群进行交互,例如: kubectl get nodes 该命令将显示您的所有节点。 ### 回答2: Kubernetes(简称K8s)是一个由谷歌出品的开源容器管理平台,它实现了自动化容器部署、扩展、滚动升级、故障检测和修复等功能。在新一代微服务应用架构中,K8s已经成为必不可少的基础设施组件。本文将介绍如何在K8s版本1.8.3上搭建集群。 1. 硬件准备 在搭建K8s集群之前,需要确定好硬件配置,确保集群能够长期稳定运行。一般来说,每个节点至少需要2个CPU、4GB内存、50GB的磁盘空间以及1个网络接口。 2. 软件准备 在搭建K8s集群之前,需要安装好以下软件:Docker、Kubeadm、Kubelet、Kubectl等。可以通过以下命令安装: ``` $ sudo apt-get update $ sudo apt-get install -y docker.io kubelet kubeadm kubectl kubernetes-cni ``` 安装好软件之后,需要对DockerKubernetes做一些配置,具体操作可以参考Kubernetes官方文档。 3. 初始化Master节点 通过Kubeadm初始化Master节点,可以使用以下命令: ``` $ sudo kubeadm init --pod-network-cidr=10.244.0.0/16 ``` 其中--pod-network-cidr参数指定了Pod网络的CIDR地址。 初始化成功之后,会输出一些信息,包括Kubernetes的ApiServer、Token等信息。需要将这些信息保存下来备用。 4. 部署网络插件 Kubernetes的网络模型是基于容器网络接口(CNI)的,需要选择一个支持CNI的网络插件进行部署。目前比较流行的网络插件有Calico、Flannel、Weave等。 以Calico为例,可以通过以下命令部署网络插件: ``` $ kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml ``` 5. 加入Worker节点 将Worker节点加入集群很简单,只需要在Worker节点上执行以下命令: ``` $ sudo kubeadm join <Master节点IP>:<Master节点端口> --token <Token值> --discovery-token-ca-cert-hash <证书Hash值> ``` 其中,--token和--discovery-token-ca-cert-hash参数可以在Master节点上执行以下命令来获取: ``` $ kubeadm token create --print-join-command ``` 至此,K8s集群搭建工作就完成了。在实际环境中,还需要进行更多配置和调整,如制定调度策略、部署应用程序等,详细操作可以参考Kubernetes官方文档。 ### 回答3: Kubernetes(简称K8s)是一款用于容器编排和管理的开源平台。在生产环境中,K8s可以帮助我们管理大量的容器,并实现高可用性、弹性伸缩等功能。下面将介绍K8s集群搭建详细步骤。 首先需要准备好一台主机作为Master,其他的主机作为Nodes。将所有的主机都装上Kubernetes所需要的软件,如:Docker、slinux、kubeadm、kubelet等。 一、Master节点 1. 安装docker和kubelet 在Master节点上安装docker和kubelet来管理所有的容器: 安装Docker和kubelet: sudo apt-get update -y sudo apt-get install docker.io -y sudo apt-get install kubeadm kubelet kubernetes-cni 为了能够查看Kubernetes的状态,还需要安装kubectl: sudo apt-get install kubectl 2. 配置Master 在配置Master之前,需要选择一个Pod网络插件。我们可以选择 Calico、Weave Net等插件,这里选择calico。 安装calico插件: sudo kubectl apply -f https://docs.projectcalico.org/v3.9/manifests/calico.yaml 接下来配置Master: sudo kubeadm init --pod-network-cidr=10.244.0.0/16 操作完成后在控制台会输出相应的配置参数,可以先暂存一下,接下来需要用此参数去连接Node节点。 3. 安装网络 在Master节点上安装网络,用来为所有的节点提供网络服务: sudo kubectl apply -f https://docs.projectcalico.org/v3.9/manifests/calico.yaml 不过可能会遇到网络拉取问题,可以额外配置一下,在/opt/cni/bin下面放置calico文件夹,在calico中应该有多个文件和文件夹,这样就能解决网络连接问题。 4. 连接Node 将Master节点输出的参数使用kubeadm join命令连接到每个Node,连接成功后Node节点的状态应处于Ready状态: kubeadm join <master-ip>:<master-port> --token <token> --discovery-token-ca-cert-hash <hash> 二、Node节点 1. 安装docker和kubelet 在Node节点上安装docker和kubelet来管理所有的容器: sudo apt-get update -y sudo apt-get install docker.io -y sudo apt-get install kubeadm kubelet kubernetes-cni 2. 连接到Master 将Node节点使用kubeadm join命令连接到Master,连接成功后Node节点的状态应处于Ready状态: kubeadm join <master-ip>:<master-port> --token <token> --discovery-token-ca-cert-hash <hash> 三、验证 1. 查看节点状态 使用 kubectl get nodes 命令查看节点状态,如下所示: NAME STATUS ROLES AGE VERSION k8s-master Ready master 18s v1.8.3 k8s-node-1 Ready <none> 12s v1.8.3 k8s-node-2 Ready <none> 5s v1.8.3 2. 部署测试应用 使用kubectl create deployment命令来部署一个测试应用: kubectl create deployment nginx --image=nginx 使用 kubectl get pods 命令查看应用的状态,如下所示: NAME READY STATUS RESTARTS AGE nginx-5c7c5b974-n9bjd 1/1 Running 0 10s 使用kubectl expose deployment命令来暴露服务: kubectl expose deployment nginx --port=80 --type=NodePort 使用kubectl get service命令查看服务状态,如下所示: NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 13m nginx NodePort 10.98.80.0 <none> 80:30001/TCP 44s 可以访问节点的IP地址以及端口号,即可访问Nginx测试应用。 总结 Kubernetes是一个非常好用的容器编排平台,使用Kubernetes可以简化容器部署和管理,提高应用的可靠性和可维护性。本文主要介绍了Kubernetes集群搭建详细步骤,希望对大家有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值