阿里云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是最可能出问题的三个兄弟,需要明白这三者的作用和联系。

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
21天前
|
存储 缓存 数据挖掘
阿里云目前最便宜云服务器介绍:38元、99元、199元性能,选购攻略参考
轻量应用服务器2核2G峰值200M带宽38元1年;云服务器经济型e实例2核2G3M带宽99元1年;云服务器通用算力型u1实例2核4G5M带宽199元1年。对于还未使用过阿里云服务器的用户来说,大家也不免有些疑虑,这些云服务器性能究竟如何?它们适用于哪些场景?能否满足自己的使用需求呢?接下来,本文将为您全方位介绍这几款云服务器,以供您了解及选择参考。
|
25天前
|
网络安全 云计算
如何设置阿里云轻量应用服务器镜像?
本文介绍了在阿里云轻量应用服务器上创建与配置镜像的详细步骤。镜像是一种特殊的文件系统映射,可用于快速克隆服务器配置。内容涵盖准备条件、登录控制台、创建实例、生成镜像、下载与设置镜像,以及如何使用镜像启动新实例。适合希望提升服务器部署效率的用户参考。
|
28天前
|
存储 弹性计算 安全
阿里云轻量服务器通用型、CPU优化型、多公网IP型、国际型、容量型不同实例区别与选择参考
阿里云轻量应用服务器实例类型分为通用型、CPU优化型、多公网IP型、国际型、容量型,不同规格族的适用场景和特点不同,收费标准也不一样。本文为大家介绍轻量应用服务器通用型、多公网IP型、容量型有何区别?以及选择参考。
|
5天前
|
弹性计算 Devops Shell
用阿里云 DevOps Flow 实现 ECS 部署自动化:从准备到落地的完整指南
阿里云 DevOps Flow 是一款助力开发者实现自动化部署的高效工具,支持代码流水线构建、测试与部署至ECS实例,显著提升交付效率与稳定性。本文详解如何通过 Flow 自动部署 Bash 脚本至 ECS,涵盖环境准备、流水线搭建、源码接入、部署流程设计及结果验证,助你快速上手云上自动化运维。
37 0
|
1月前
|
弹性计算 编解码 大数据
性价比最高提升50%!阿里云企业级云服务器上新
阿里云ECS云服务器推出全新升级的u2系列实例,包括基于Intel的u2i实例与首个基于AMD的u2a实例,提供企业级独享算力,综合性价比最高提升50%。u2i实例已开放公测,适用于中小型数据库、企业网站建设等场景。同时发布基于AMD的第九代旗舰实例g9ae,性能提升65%,适用于大数据、视频转码等密集型业务。
167 0
|
13天前
|
存储 域名解析 弹性计算
阿里云上云流程参考:云服务器+域名+备案+域名解析绑定,全流程图文详解
对于初次通过阿里云完成上云的企业和个人用户来说,很多用户不仅是需要选购云服务器,同时还需要注册域名以及完成备案和域名的解析相关流程,从而实现网站的上线。本文将以上云操作流程为核心,结合阿里云的活动政策与用户系统梳理云服务器选购、域名注册、备案申请及域名绑定四大关键环节,以供用户完成线上业务部署做出参考。
|
19天前
|
存储 弹性计算 固态存储
阿里云云服务器配置攻略
选择云服务器需结合业务需求、访问量、ECS实例规格、存储类型与带宽等因素。个人用户可选轻量服务器,企业应用需更高配置,如通用型或内存型实例。带宽根据流量选择,支持按固定或使用量计费。存储方面,系统盘可选小容量,数据盘按需配置,I/O敏感业务建议SSD或ESSD云盘。
|
25天前
|
域名解析 运维 监控
阿里云轻量服务器的系统镜像和应用镜像的区别
轻量应用服务器是阿里云推出的易用型云服务器,支持一键部署、域名解析、安全管理和运维监控。本文介绍其系统镜像与应用镜像的区别及选择建议,助您根据业务需求和技术能力快速决策,实现高效部署。
|
27天前
|
弹性计算 负载均衡 安全
阿里云轻量应用服务器与ECS区别
阿里云轻量应用服务器与ECS云服务器对比:轻量版适合新手和小型应用,套餐化设计,含大流量,易上手但性能和灵活性有限;ECS为专业版,配置灵活,性能强,适合企业级应用,但操作复杂,生态丰富,按需计费。两者定位不同,适用于不同场景。

热门文章

最新文章

推荐镜像

更多