安装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 


相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
3天前
|
存储 运维 Kubernetes
Kubernetes 集群的监控与维护策略
【4月更文挑战第23天】 在微服务架构日益盛行的当下,容器编排工具如 Kubernetes 成为了运维工作的重要环节。然而,随着集群规模的增长和复杂性的提升,如何确保 Kubernetes 集群的高效稳定运行成为了一大挑战。本文将深入探讨 Kubernetes 集群的监控要点、常见问题及解决方案,并提出一系列切实可行的维护策略,旨在帮助运维人员有效管理和维护 Kubernetes 环境,保障服务的持续可用性和性能优化。
|
4天前
|
存储 运维 Kubernetes
Kubernetes 集群的持续性能优化实践
【4月更文挑战第22天】在动态且复杂的微服务架构中,确保 Kubernetes 集群的高性能运行是至关重要的。本文将深入探讨针对 Kubernetes 集群性能优化的策略与实践,从节点资源配置、网络优化到应用部署模式等多个维度展开,旨在为运维工程师提供一套系统的性能调优方法论。通过实际案例分析与经验总结,读者可以掌握持续优化 Kubernetes 集群性能的有效手段,以适应不断变化的业务需求和技术挑战。
17 4
|
22天前
|
数据库 存储 监控
什么是 SAP HANA 内存数据库 的 Delta Storage
什么是 SAP HANA 内存数据库 的 Delta Storage
17 0
什么是 SAP HANA 内存数据库 的 Delta Storage
|
12天前
|
Kubernetes Linux 网络安全
kubeadm安装k8s
该文档提供了一套在CentOS 7.6上安装Docker和Kubernetes(kubeadm)的详细步骤,包括安装系统必备软件、关闭防火墙和SELinux、禁用swap、开启IP转发、设置内核参数、配置Docker源和加速器、安装指定版本Docker、启动Docker、设置kubelet开机启动、安装kubelet、kubeadm、kubectl、下载和配置Kubernetes镜像、初始化kubeadm、创建kubeconfig文件、获取节点加入集群命令、下载Calico YAML文件以及安装Calico。这些步骤不仅适用于v1.19.14,也适用于更高版本。
66 1
|
11天前
|
Kubernetes 搜索推荐 Docker
使用 kubeadm 部署 Kubernetes 集群(二)k8s环境安装
使用 kubeadm 部署 Kubernetes 集群(二)k8s环境安装
53 17
|
24天前
|
消息中间件 Kubernetes Kafka
Terraform阿里云创建资源1分钟创建集群一键发布应用Terraform 创建 Kubernetes 集群
Terraform阿里云创建资源1分钟创建集群一键发布应用Terraform 创建 Kubernetes 集群
17 0
|
25天前
|
Kubernetes 安全 网络安全
搭建k8s集群kubeadm搭建Kubernetes二进制搭建Kubernetes集群
搭建k8s集群kubeadm搭建Kubernetes二进制搭建Kubernetes集群
106 0
|
29天前
|
Kubernetes 测试技术 API
ChaosBlade常见问题之安装K8S探针心跳检测失败如何解决
ChaosBlade 是一个开源的混沌工程实验工具,旨在通过模拟各种常见的硬件、软件、网络、应用等故障,帮助开发者在测试环境中验证系统的容错和自动恢复能力。以下是关于ChaosBlade的一些常见问题合集:
19 0
|
1月前
|
Kubernetes Cloud Native Docker
【云原生】kubeadm快速搭建K8s集群Kubernetes1.19.0
Kubernetes 是一个开源平台,用于管理容器化工作负载和服务,提供声明式配置和自动化。源自 Google 的大规模运维经验,它拥有广泛的生态支持。本文档详细介绍了 Kubernetes 集群的搭建过程,包括服务器配置、Docker 和 Kubernetes 组件的安装,以及 Master 和 Node 的部署。此外,还提到了使用 Calico 作为 CNI 网络插件,并提供了集群功能的测试步骤。
219 0
|
1月前
|
Prometheus 监控 Kubernetes
Kubernetes 集群的监控与日志管理实践
【2月更文挑战第31天】 在微服务架构日益普及的今天,容器编排工具如Kubernetes已成为部署、管理和扩展容器化应用的关键平台。然而,随着集群规模的扩大和业务复杂性的增加,如何有效监控集群状态、及时响应系统异常,以及管理海量日志信息成为了运维人员面临的重要挑战。本文将深入探讨 Kubernetes 集群监控的最佳实践和日志管理的高效策略,旨在为运维团队提供一套系统的解决思路和操作指南。
27 0

推荐镜像

更多