阿里云ecs搭建k8s体验

简介: 利用阿里云搭建k8s集群,涵盖搭建过程,排错思路,排错过程

阿里云ecs体验

本人计算机专业本科在读,由于最近想学习一下kubernetes,需要一台云主机,到阿里云搜索学生主机出现了“飞天加速计划·高校学生在家实践”活动。
首先kubernetes的安装需要开放一段端口号,阿里云的安全组可以一口气开放一段端口号。
在搭建过程中,主要出现的问题就是搭建之后的master节点无法与node节点通信。我也为此查询了很多资料。解决过程如下:
1.在kubeadm时就需要指定公网ip
下面时我创建时的yaml文件

apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers
controlPlaneEndpoint: ip:6443
clusterName: kubernetes
apiServer:
  certSANs:
    - ip
  extraArgs:
    authorization-mode: Node,RBAC
    advertise-address: ip
networking:
  dnsDomain: cluster.local
  podSubnet: 10.244.0.0/16
  serviceSubnet: 10.96.0.0/12

注意apiServer下面的controlPlaneEndpoint,certSANs写公网ip,extraArgs的advertise-address同公网ip。

然后通过下面命令初始化

kubeadm init --config=kubeinit.yaml | tee kubeadm-init.log

然后按照提示cp配置文件。

2.开放对应的端口
在云主机的安全组规则中需要配置下面的端口号,master和node都要配置
master开放对应的协议端口,注意不全是tcp

firewall-cmd --permanent --add-port=6443/tcp

firewall-cmd --permanent --add-port=2379-2380/tcp

firewall-cmd --permanent --add-port=10250/tcp

firewall-cmd --permanent --add-port=10251/tcp

firewall-cmd --permanent --add-port=10252/tcp

firewall-cmd --permanent --add-port=10255/tcp

firewall-cmd --permanent --add-port=8472/udp

firewall-cmd --permanent --add-port=443/udp

firewall-cmd --permanent --add-port=53/udp

firewall-cmd --permanent --add-port=53/tcp

firewall-cmd --permanent --add-port=9153/tcp

node开放端口

firewall-cmd --permanent --add-port=10250/tcp

firewall-cmd --permanent --add-port=10255/tcp

firewall-cmd --permanent --add-port=8472/udp

firewall-cmd --permanent --add-port=443/udp

firewall-cmd --permanent --add-port=30000-32767/tcp

firewall-cmd --permanent --add-port=53/udp

firewall-cmd --permanent --add-port=53/tcp

firewall-cmd --permanent --add-port=9153/tcp

3.修改node配置
在网上查阅的过程中,我了解到可以用tcpdump检测网络包。
这里需要先简略描述一下包在kubernetes中发送的过程:dockerContainer->flannel.1网卡->flannel进程->eth0网卡->出去
其中flannel.1和eth0是可以用tcpdump监控的,flannel进程不太好处理,先处理前者。
执行tcpdump -i flannel.1 -s0 -nnn监控flannel.1网卡
结果:

bqr9lmlug1.png

发现只有去的包,没有回来的,我们再监控eth0,8472是flannel的端口
tcpdump -i eth0 -s0 -nnn udp and port 8472

9kc5tmt729.png

发现目的地的ip不是公网ip,是内网ip,那这个包肯定就过不去。

通过kubectl describe nodes k8s-node-2得到node信息。

Name:               k8s-node-2
Roles:              <none>
Labels:             beta.kubernetes.io/arch=amd64
                    beta.kubernetes.io/os=linux
                    kubernetes.io/arch=amd64
                    kubernetes.io/hostname=k8s-node-2
                    kubernetes.io/os=linux
Annotations:        flannel.alpha.coreos.com/backend-data: {"VNI":1,"VtepMAC":"7e:a5:78:f3:de:1c"}
                    flannel.alpha.coreos.com/backend-type: vxlan
                    flannel.alpha.coreos.com/kube-subnet-manager: true
                    flannel.alpha.coreos.com/public-ip: 10.0.16.5
                    kubeadm.alpha.kubernetes.io/cri-socket: /var/run/dockershim.sock
                    node.alpha.kubernetes.io/ttl: 0
                    volumes.kubernetes.io/controller-managed-attach-detach: true

在public-ip部分,显示的是内网ip,把他改成外网ip。

[root@k8s-master ~]# kubectl annotate node k8s-node-2 flannel.alpha.coreos.com/public-ip-overwrite=43.138.19.214 --overwrite
node/k8s-node-2 annotated
[root@k8s-master ~]# kubectl -n kube-system get pods --field-selector spec.nodeName=k8s-node-2 | grep flannel
kube-flannel-ds-ddn72   1/1     Running   0          56m
[root@k8s-master ~]# kubectl -n kube-system get pod kube-flannel-ds-ddn72 -o yaml | kubectl replace --force -f -
pod "kube-flannel-ds-ddn72" deleted
pod/kube-flannel-ds-ddn72 replaced

这个时候通过master公网ip:端口就能成功访问了。

后记:k8s部署花了一周,一开始总是安装报错,后来是访问不到节点,在网上翻阅资料过程中,大概了解到问题的排查可以从一下几个方面入手:
journal -xe命令查看,这个是在安装时候最多出现的
docker logs 容器id,因为k8s里面运行的是容器,所以可以直接看容器日志
kubectl describe XX,这个可以直接查看某个资源的状态
tcpdump ,网络curl不通,那就用网络监视工具查看一下包的情况
firewalld相关命令,有的时候并不能排除防火墙的问题,需要查看状态
当然最重要的是,排查错误的过程中了解到了很多组件的意义,apiserver,etcd,kube-proxy是最可能出问题的三个兄弟,需要明白这三者的作用和联系。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
4天前
|
存储 机器学习/深度学习 人工智能
2025年阿里云GPU服务器租用价格、选型策略与应用场景详解
随着AI与高性能计算需求的增长,阿里云提供了多种GPU实例,如NVIDIA V100、A10、T4等,适配不同场景。2025年重点实例中,V100实例GN6v单月3830元起,适合大规模训练;A10实例GN7i单月3213.99元起,适用于混合负载。计费模式有按量付费和包年包月,后者成本更低。针对AI训练、图形渲染及轻量级推理等场景,推荐不同配置以优化成本和性能。阿里云还提供抢占式实例、ESSD云盘等资源优化策略,支持eRDMA网络加速和倚天ARM架构,助力企业在2025年实现智能计算的效率与成本最优平衡。 (该简介为原文内容的高度概括,符合要求的字符限制。)
|
6天前
|
存储 弹性计算 人工智能
2025年阿里云企业云服务器ECS选购与配置全攻略
本文介绍了阿里云服务器的核心配置选择方法论,涵盖算力需求分析、网络与存储设计、地域部署策略三大维度。针对不同业务场景,如初创企业官网和AI模型训练平台,提供了具体配置方案。同时,详细讲解了购买操作指南及长期运维优化建议,帮助用户快速实现业务上云并确保高效运行。访问阿里云官方资源聚合平台可获取更多最新产品动态和技术支持。
|
8天前
|
弹性计算 JavaScript 前端开发
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
Node.js 是一种高效的 JavaScript 运行环境,基于 Chrome V8 引擎,支持在服务器端运行 JavaScript 代码。本文介绍如何在阿里云上一键部署 Node.js 环境,无需繁琐配置,轻松上手。前提条件包括 ECS 实例运行中且操作系统为 CentOS、Ubuntu 等。功能特点为一键安装和稳定性好,支持常用 LTS 版本。安装步骤简单:登录阿里云控制台,选择扩展程序管理页面,安装 Node.js 扩展,选择实例和版本,等待创建完成并验证安装成功。通过阿里云的公共扩展,初学者和经验丰富的开发者都能快速进入开发状态,开启高效开发之旅。
|
7天前
|
Cloud Native Serverless 数据中心
阿里云ACK One:注册集群支持ACS算力——云原生时代的计算新引擎
ACK One注册集群已正式支持ACS(容器计算服务)算力,为企业的容器化工作负载提供更多选择和更强大的计算能力。
|
10天前
|
弹性计算 JavaScript 前端开发
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
|
3天前
|
机器学习/深度学习 人工智能 程序员
阿里云出手DeepSeek拒绝服务器繁忙,程序员直呼:真香!
阿里云PAI平台支持一键部署DeepSeek-V3和DeepSeek-R1大模型,用户无需编写代码即可完成从训练到部署的全过程。通过PAI Model Gallery,开发者可轻松选择并部署所需模型版本,享受高效、便捷的AI开发体验。教程详细介绍了开通PAI、选择模型及一键部署的具体步骤,帮助用户快速上手。
|
4天前
|
存储 人工智能 弹性计算
2025年阿里云企业高性能云服务器租用价格与选型详解
随着企业数字化转型,阿里云于2025年推出多款高性能云服务器实例,涵盖计算、通用和内存密集型场景。文章分析了企业选择云服务器的核心要点,包括明确业务需求(如计算密集型任务推荐计算型实例)、性能与架构升级(如第八代实例性能提升20%),以及第九代实例支持AI等高算力需求。同时提供了配置价格参考和成本优化策略,助力企业实现效率与成本的最优平衡。
|
4天前
|
机器学习/深度学习 存储 人工智能
2025年阿里云GPU服务器的租赁价格与选型指南
随着AI、深度学习等领域的发展,GPU服务器成为企业及科研机构的核心算力选择。阿里云提供多种GPU实例类型(如NVIDIA V100、A100等),涵盖计算型、共享型和弹性裸金属等,满足不同场景需求。本文详解2025年阿里云GPU服务器的核心配置、价格策略及适用场景,帮助用户优化选型与成本控制,实现高效智能计算。
|
1天前
|
Kubernetes 持续交付 开发工具
阿里云协同万兴科技落地ACK One GitOps方案,全球多机房应用自动化发布,效率提升50%
阿里云协同万兴科技落地ACK One GitOps方案,全球多机房应用自动化发布,效率提升50%
|
4天前
|
机器学习/深度学习 存储 弹性计算
阿里云gpu云服务器租用价格:最新收费标准及活动价格参考
阿里云gpu云服务器多少钱?A10卡GN7i GPU云服务器32核188G3213.99/1个月起,V100卡GN6v GPU云服务器8核32G3830.00/1个月起,阿里云GPU云服务器是基于GPU应用的计算服务,多适用于视频解码,图形渲染,深度学习,科学计算等应用场景,该产品具有超强计算能力、网络性能出色、购买方式灵活、高性能实例存储( GA1和GN5特有)等特点。下面小编来介绍下阿里云gpu云服务器最新的收费标准及活动价格。

热门文章

最新文章