安装k8s集群

简介: 1. 使用 kubeadm CentOS 7 安装 Kubernetes 准备环境在开始之前,您需要准备以下环境:一组至少包含两台物理机或虚拟机的计算机,并且它们之间可以相互通信。每台计算机都应该运行一个支持 Kubernetes 的 Linux 操作系统,如 CentOS 7。每台计算机都应该有一个静态 IP 地址,并且您需要为每台计算机选择一个主机名。每台计算机上都需要安装 Docker。

1. 使用 kubeadm  CentOS 7 安装 Kubernetes  

准备环境

在开始之前,您需要准备以下环境:


一组至少包含两台物理机或虚拟机的计算机,并且它们之间可以相互通信。


每台计算机都应该运行一个支持 Kubernetes 的 Linux 操作系统,如 CentOS 7。


每台计算机都应该有一个静态 IP 地址,并且您需要为每台计算机选择一个主机名。


每台计算机上都需要安装 Docker。

安装 Docker

使用以下命令在每台计算机上安装 Docker:

$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
$ sudo yum install -y docker-ce docker-ce-cli containerd.io

安装完成后,您可以使用以下命令验证 Docker 是否已经成功安装:

$ sudo docker version

安装 kubeadm、kubelet 和 kubectl

在每台计算机上安装 kubeadm、kubelet 和 kubectl:

$ sudo vi /etc/yum.repos.d/kubernetes.repo

将以下内容粘贴到文件中:

[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg
         https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg

保存并退出编辑器。然后,使用以下命令安装 kubeadm、kubelet 和 kubectl:

$ sudo yum install -y kubelet kubeadm kubectl

安装完成后,您可以使用以下命令验证 kubeadm 和 kubelet 是否已经成功安装:

$ kubeadm version
$ kubelet --version

初始化主节点

在其中一台计算机上使用 kubeadm 初始化主节点:

$ sudo kubeadm init --pod-network-cidr=192.168.0.0/16

该命令将会自动下载必要的镜像并初始化 Kubernetes 集群。

在初始化完成后,kubeadm 将会输出一些命令,您需要记住这些命令,以便在后续步骤中使用。

部署网络插件

Kubernetes 集群需要一个网络插件才能正常工作。在这里,我们将会使用 Calico 网络插件。

在主节点上,使用以下命令部署 Calico 网络插件:

$ kubectl apply -f https://docs.projectcalico.org/v3.14/manifests/calico.yaml

添加工作节点

现在,您可以将其他计算机添加到 Kubernetes 集群中作为工作节点。

在每个工作节点上,使用 kubeadm join 命令将其加入到 Kubernetes 集群中。在第 4 步中,kubeadm init 命令输出的命令中包含了将工作节点加入到集群中所需的命令。

例如,如果 kubeadm init 命令输出的命令如下:

kubeadm join 192.168.0.1:6443 --token abcdef.0123456789abcdef \
   --discovery-token-ca-cert-hash sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef

则在工作节点上执行以下命令:

$ sudo kubeadm join 192.168.0.1:6443 --token abcdef.0123456789abcdef \
    --discovery-token-ca-cert-hash sha256:0123456789abcdef

上述步骤中,第 4 步初始化主节点时指定了 --pod-network-cidr 参数,用于指定 Pod 网络的 IP 地址范围。在本例中,我们使用了 192.168.0.0/16,但您可以根据您的需求选择适当的 IP 地址范围。


在第 5 步中,我们选择了 Calico 作为网络插件。您也可以选择其他网络插件,例如 Flannel、Weave Net 等。


在第 6 步中,我们使用 kubeadm join 命令将工作节点加入到 Kubernetes 集群中。在实际使用中,您需要将命令中的 IP 地址和令牌替换为主节点输出的实际值。

2. 使用 kubeadm 在Ubuntu 安装Kubernetes

使用 kubeadm 在Ubuntu 16.04、18.04 或 20.04 等基于 Debian 的 Linux 操作系统上安装 Kubernetes 集群的详细教程:

准备环境

在开始之前,您需要准备以下环境:


一组至少包含两台物理机或虚拟机的计算机,并且它们之间可以相互通信。


每台计算机都应该运行一个支持 Kubernetes 的 Linux 操作系统,如 Ubuntu 16.04、18.04 或 20.04。


每台计算机都应该有一个静态 IP 地址,并且您需要为每台计算机选择一个主机名。


每台计算机上都需要安装 Docker。

  1. 安装 Docker

使用以下命令在每台计算机上安装 Docker:

$ sudo apt-get update
$ sudo apt-get install docker.io -y

安装完成后,您可以使用以下命令验证 Docker 是否已经成功安装:

$ sudo docker version

3. 安装 kubeadm、kubelet 和 kubectl

在每台计算机上安装 kubeadm、kubelet 和 kubectl:

$ sudo apt-get update && sudo apt-get install -yapt-transport-https curl
$ curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
$ echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
$ sudo apt-get update
$ sudo apt-get install -y kubelet kubeadm kubectl

安装完成后,您可以使用以下命令验证 kubeadm 和 kubelet 是否已经成功安装:

$ kubeadm version
$ kubelet --version

4. 初始化主节点

在其中一台计算机上使用 kubeadm 初始化主节点:

$ sudo kubeadm init --pod-network-cidr=192.168.0.0/16

该命令将会自动下载必要的镜像并初始化 Kubernetes 集群。

在初始化完成后,kubeadm 将会输出一些命令,您需要记住这些命令,以便在后续步骤中使用。

5. 部署网络插件

Kubernetes 集群需要一个网络插件才能正常工作。在这里,我们将会使用 Calico 网络插件。

在主节点上,使用以下命令部署 Calico 网络插件:

$ kubectl apply -f https://docs.projectcalico.org/v3.14/manifests/calico.yaml

6. 添加工作节点

现在,您可以将其他计算机添加到 Kubernetes 集群中作为工作节点。

在每个工作节点上,使用 kubeadm join 命令将其加入到 Kubernetes 集群中。在第 4 步中,kubeadm init 命令输出的命令中包含了将工作节点加入到集群中所需的命令。

例如,如果 kubeadm init 命令输出的命令如下:

kubeadm join 192.168.0.1:6443 --token abcdef.0123456789abcdef \
    --discovery-token-ca-cert-hash sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef

则在工作节点上执行以下命令:

$ sudo kubeadm join 192.168.0.1:6443 --token abcdef.0123456789abcdef \
    --discovery-token-ca-cert-hash sha256:0123456789abcdef补充说明一下:

上述步骤中,第 4 步初始化主节点时指定了 `--pod-network-cidr` 参数,用于指定 Pod 网络的 IP 地址范围。在本例中,我们使用了 `192.168.0.0/16`,但您可以根据您的需求选择适当的 IP 地址范围。


在第 5 步中,我们选择了 Calico 作为网络插件。您也可以选择其他网络插件,例如 Flannel、Weave Net 等。


在第 6 步中,我们使用 kubeadm join 命令将工作节点加入到 Kubernetes 集群中。在实际使用中,您需要将命令中的 IP 地址和令牌替换为主节点输出的实际值。

 

[root@localhost k8s_install_package]# kubeadm init --kubernetes-version=v1.17.3 --pod-network-cidr=10.244.0.0/16 
W0315 15:08:54.903194   97206 validation.go:28] Cannot validate kube-proxy config - no validator is available
W0315 15:08:54.903264   97206 validation.go:28] Cannot validate kubelet config - no validator is available
[init] Using Kubernetes version: v1.17.3
[preflight] Running pre-flight checks
        [WARNING IsDockerSystemdCheck]: detected "cgroupfs" as the Docker cgroup driver. The recommended driver is "systemd". Please follow the guide at https://kubernetes.io/docs/setup/cri/
[preflight] Pulling images required for setting up a Kubernetes cluster
[preflight] This might take a minute or two, depending on the speed of your internet connection
[preflight] You can also perform this action in beforehand using 'kubeadm config images pull'
[kubelet-start] Writing kubelet environment file with flags to file "/var/lib/kubelet/kubeadm-flags.env"
[kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
[kubelet-start] Starting the kubelet
[certs] Using certificateDir folder "/etc/kubernetes/pki"
[certs] Generating "ca" certificate and key
[certs] Generating "apiserver" certificate and key
[certs] apiserver serving cert is signed for DNS names [k8s-master kubernetes kubernetes.default kubernetes.default.svc kubernetes.default.svc.cluster.local] and IPs [10.96.0.1 192.168.8.168]
[certs] Generating "apiserver-kubelet-client" certificate and key
[certs] Generating "front-proxy-ca" certificate and key
[certs] Generating "front-proxy-client" certificate and key
[certs] Generating "etcd/ca" certificate and key
[certs] Generating "etcd/server" certificate and key
[certs] etcd/server serving cert is signed for DNS names [k8s-master localhost] and IPs [192.168.8.168 127.0.0.1 ::1]
[certs] Generating "etcd/peer" certificate and key
[certs] etcd/peer serving cert is signed for DNS names [k8s-master localhost] and IPs [192.168.8.168 127.0.0.1 ::1]
[certs] Generating "etcd/healthcheck-client" certificate and key
[certs] Generating "apiserver-etcd-client" certificate and key
[certs] Generating "sa" key and public key
[kubeconfig] Using kubeconfig folder "/etc/kubernetes"
[kubeconfig] Writing "admin.conf" kubeconfig file
[kubeconfig] Writing "kubelet.conf" kubeconfig file
[kubeconfig] Writing "controller-manager.conf" kubeconfig file
[kubeconfig] Writing "scheduler.conf" kubeconfig file
[control-plane] Using manifest folder "/etc/kubernetes/manifests"
[control-plane] Creating static Pod manifest for "kube-apiserver"
[control-plane] Creating static Pod manifest for "kube-controller-manager"
W0315 15:09:07.165562   97206 manifests.go:214] the default kube-apiserver authorization-mode is "Node,RBAC"; using "Node,RBAC"
[control-plane] Creating static Pod manifest for "kube-scheduler"
W0315 15:09:07.172549   97206 manifests.go:214] the default kube-apiserver authorization-mode is "Node,RBAC"; using "Node,RBAC"
[etcd] Creating static Pod manifest for local etcd in "/etc/kubernetes/manifests"
[wait-control-plane] Waiting for the kubelet to boot up the control plane as static Pods from directory "/etc/kubernetes/manifests". This can take up to 4m0s
[kubelet-check] Initial timeout of 40s passed.
[apiclient] All control plane components are healthy after 63.874249 seconds
[upload-config] Storing the configuration used in ConfigMap "kubeadm-config" in the "kube-system" Namespace
[kubelet] Creating a ConfigMap "kubelet-config-1.17" in namespace kube-system with the configuration for the kubelets in the cluster
[upload-certs] Skipping phase. Please see --upload-certs
[mark-control-plane] Marking the node k8s-master as control-plane by adding the label "node-role.kubernetes.io/master=''"
[mark-control-plane] Marking the node k8s-master as control-plane by adding the taints [node-role.kubernetes.io/master:NoSchedule]
[bootstrap-token] Using token: qx6lk0.d8pi788ch7giznhj
[bootstrap-token] Configuring bootstrap tokens, cluster-info ConfigMap, RBAC Roles
[bootstrap-token] configured RBAC rules to allow Node Bootstrap tokens to post CSRs in order for nodes to get long term certificate credentials
[bootstrap-token] configured RBAC rules to allow the csrapprover controller automatically approve CSRs from a Node Bootstrap Token
[bootstrap-token] configured RBAC rules to allow certificate rotation for all node client certificates in the cluster
[bootstrap-token] Creating the "cluster-info" ConfigMap in the "kube-public" namespace
[kubelet-finalize] Updating "/etc/kubernetes/kubelet.conf" to point to a rotatable kubelet client certificate and key
[addons] Applied essential addon: CoreDNS
[addons] Applied essential addon: kube-proxy
Your Kubernetes control-plane 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/
Then you can join any number of worker nodes by running the following on each as root:
kubeadm join 192.168.8.168:6443 --token qx6lk0.d8pi788ch7giznhj \
    --discovery-token-ca-cert-hash sha256:8b3d277ab546a7e6856933fd4150a85b96c2e81c0abdd05460517ac370a26fbb 


相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
10天前
|
Prometheus Kubernetes 监控
OpenAI故障复盘 - 阿里云容器服务与可观测产品如何保障大规模K8s集群稳定性
聚焦近日OpenAI的大规模K8s集群故障,介绍阿里云容器服务与可观测团队在大规模K8s场景下我们的建设与沉淀。以及分享对类似故障问题的应对方案:包括在K8s和Prometheus的高可用架构设计方面、事前事后的稳定性保障体系方面。
|
8天前
|
Kubernetes Ubuntu 网络安全
ubuntu使用kubeadm搭建k8s集群
通过以上步骤,您可以在 Ubuntu 系统上使用 kubeadm 成功搭建一个 Kubernetes 集群。本文详细介绍了从环境准备、安装 Kubernetes 组件、初始化集群到管理和使用集群的完整过程,希望对您有所帮助。在实际应用中,您可以根据具体需求调整配置,进一步优化集群性能和安全性。
44 12
|
20天前
|
Kubernetes 应用服务中间件 nginx
二进制安装Kubernetes(k8s)v1.32.0
本指南提供了一个详细的步骤,用于在Linux系统上通过二进制文件安装Kubernetes(k8s)v1.32.0,支持IPv4+IPv6双栈。具体步骤包括环境准备、系统配置、组件安装和配置等。
189 10
|
12天前
|
Kubernetes 网络协议 应用服务中间件
Kubernetes Ingress:灵活的集群外部网络访问的利器
《Kubernetes Ingress:集群外部访问的利器-打造灵活的集群网络》介绍了如何通过Ingress实现Kubernetes集群的外部访问。前提条件是已拥有Kubernetes集群并安装了kubectl工具。文章详细讲解了Ingress的基本组成(Ingress Controller和资源对象),选择合适的版本,以及具体的安装步骤,如下载配置文件、部署Nginx Ingress Controller等。此外,还提供了常见问题的解决方案,例如镜像下载失败的应对措施。最后,通过部署示例应用展示了Ingress的实际使用方法。
29 2
|
24天前
|
存储 Kubernetes 关系型数据库
阿里云ACK备份中心,K8s集群业务应用数据的一站式灾备方案
本文源自2024云栖大会苏雅诗的演讲,探讨了K8s集群业务为何需要灾备及其重要性。文中强调了集群与业务高可用配置对稳定性的重要性,并指出人为误操作等风险,建议实施周期性和特定情况下的灾备措施。针对容器化业务,提出了灾备的新特性与需求,包括工作负载为核心、云资源信息的备份,以及有状态应用的数据保护。介绍了ACK推出的备份中心解决方案,支持命名空间、标签、资源类型等维度的备份,并具备存储卷数据保护功能,能够满足GitOps流程企业的特定需求。此外,还详细描述了备份中心的使用流程、控制台展示、灾备难点及解决方案等内容,展示了备份中心如何有效应对K8s集群资源和存储卷数据的灾备挑战。
|
2月前
|
Kubernetes 监控 Cloud Native
Kubernetes集群的高可用性与伸缩性实践
Kubernetes集群的高可用性与伸缩性实践
78 1
|
3月前
|
JSON Kubernetes 容灾
ACK One应用分发上线:高效管理多集群应用
ACK One应用分发上线,主要介绍了新能力的使用场景
|
3月前
|
Kubernetes 持续交付 开发工具
ACK One GitOps:ApplicationSet UI简化多集群GitOps应用管理
ACK One GitOps新发布了多集群应用控制台,支持管理Argo CD ApplicationSet,提升大规模应用和集群的多集群GitOps应用分发管理体验。
|
3月前
|
Kubernetes Ubuntu Docker
从0开始搞K8S:使用Ubuntu进行安装(环境安装)
通过上述步骤,你已经在Ubuntu上成功搭建了一个基本的Kubernetes单节点集群。这只是开始,Kubernetes的世界广阔且深邃,接下来你可以尝试部署应用、了解Kubernetes的高级概念如Services、Deployments、Ingress等,以及探索如何利用Helm等工具进行应用管理,逐步提升你的Kubernetes技能树。记住,实践是最好的老师,不断实验与学习,你将逐渐掌握这一强大的容器编排技术。
373 1
|
2月前
|
Kubernetes Ubuntu Linux
我应该如何安装Kubernetes
我应该如何安装Kubernetes

热门文章

最新文章