K8S(一):在centos7上 利用kubeadmin 部署Kubernetes

简介: 在centos7上 利用kubeadmin 部署Kubernetes

1-1:系统及版本

Centos 7

kubelet-1.23.6 kubeadm-1.23.6 kubectl-1.23.6(请务必按照这个版本,有大用)

Docker 版本随便

服务器ip 以及hostname

192.168.31.133 k8s-master

192.168.31.134 k8s-node11

192.168.31.135 k8s-node22

特别说明,为什么不用ubuntu?我先用ubuntu试了,最后就是说,宿主机无法访问node节点上的服务,并且不是防火墙的问题。Centos7 可以用。

1-2:Centos前置配置

关闭防火墙:

systemctl stop firewalld

systemctl disable firewalld

关闭selinux:

sed -i 's/enforcing/disabled/' /etc/selinux/config # 永久

setenforce 0 # 临时

关闭swap:

swapoff -a # 临时

vim /etc/fstab # 永久

注释掉:

#UUID=0691a820-01e7-4223-aa83-f4499e0f135b swap       swap  defaults 0 0

主机名:

hostnamectl set-hostname <hostname>

master节点配置hosts

[root@k8s-master ~]# cat /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.31.133 k8s-master

192.168.31.134 k8s-node11

192.168.31.135 k8s-node22

185.199.110.133 raw.githubusercontent.com # 这是为了CNI网络配置而设置的

将桥接的IPv4 流量传递到iptables 的链

[root@k8s-master ~]# cat /etc/sysctl.d/k8s.conf  

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

sysctl --system # 生效

时间同步:

yum install ntpdate -y

ntpdate time.windows.com


1-3:三个机子上的共同安装

(1)Docker


wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O

/etc/yum.repos.d/docker-ce.repo


yum -y install docker-ce


systemctl enable docker && systemctl start docker


docker --version


[root@k8s-master ~]# cat /etc/docker/daemon.json

{

"exec-opts":["native.cgroupdriver=systemd"],

"registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]

}


重启docker服务,这两个一个也不能少,不然后面kubeadmin init时候会访问不上docker,显示http 请求不到。


(2)添加yum 源


[root@k8s-master ~]# cat /etc/yum.repos.d/kubernetes.repo

[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/yum/doc/rpm-package-key.gpg


(3)安装kubeadm,kubelet 和kubectl,要用这个版本别用最新的,会出问题


yum install -y kubelet-1.23.6 kubeadm-1.23.6 kubectl-1.23.6

1

1-4:Master节点

(1)执行初始化命令,指定master的ip地址


如果说某次执行kubeadm init初始化k8s集群失败了,在下一次执行kubeadm init初始化语句之前,先执行kubeadm reset命令。这个命令的作用是重置节点,大家可以把这个命令理解为:上一次kubeadm init初始化集群操作失败了,该命令清理了之前的失败环境。


$ kubeadm init \

--apiserver-advertise-address=192.168.31.61(这里面填master的ip地址) \

--image-repository registry.aliyuncs.com/google_containers \

--service-cidr=10.96.0.0/12 \

--pod-network-cidr=10.244.0.0/16


(2)使用kubectl 工具:这个命令会在init成功的时候出现在successful的提示消息里面,仔细找找。



mkdir -p $HOME/.kube

sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

sudo chown $(id -u):$(id -g) $HOME/.kube/config

kubectl get nodes


这个时候master是处于not ready状态的。


(3)安装Pod 网络插件(CNI)


这个地址一般是访问不到的,所以要搜索出这个域名的最新ip,并且写在/etc/hosts里面,也就是我之前写的那一行,我们可以在http://www.ip33.com/这个网址里面进行搜索,比如:


image.png

image.png

kubectl apply -f   https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kubeflannel.yml


这样就可以使用了,节点也变成了ready状态了。


1-5:Node节点

(1)安装kubeadm,kubelet 和kubectl,要用这个版本别用最新的,会出问题


yum install -y kubelet-1.23.6 kubeadm-1.23.6 kubectl-1.23.6

1

(2)加入集群里面

这个命令在master init成功之后也会看到。复制,然后在作为node中的虚拟机中执行一下,就可以了。


kubeadm join 192.168.31.61:6443 --token esce21.q6hetwm8si29qxwn \

--discovery-token-ca-cert-hash

sha256:00603a05805807501d7181c3d60b478788408cfe6cedefedb1f97569708be9c5


1-6:测试是否成功

在Kubernetes 集群中创建一个pod,验证是否正常运行:


kubectl create deployment nginx --image=nginx

kubectl expose deployment nginx --port=80 --type=NodePort

kubectl get pod,svc




[root@k8s-master ~]# kubectl get pod,svc

NAME                         READY   STATUS    RESTARTS   AGE

pod/nginx-85b98978db-tqhbq   1/1     Running   0          17h


NAME                 TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE

service/kubernetes   ClusterIP   10.96.0.1      <none>        443/TCP        17h

service/nginx        NodePort    10.96.62.208   <none>        80:31151/TCP   17h


访问地址:http://NodeIP:Port

image.png

1-7:FAQ常见问题

(1)token有效期过期

问题解决:在master机器中执行,kubeadm token create,获取token,token有效期一般为24小时,node使用最新的token重新执行join


kubeadm token create


(2)kubernetes node节点join master 节点成功后, master节点无法发现node节点


问题解决:这是因为你没有设置hostname,node和master都是同一个name,所以说没有显示出来。


(3)kubeadm init curl http localhost 10248 healthz failed with erro


问题解决:docker daemon.json文件缺少了配置,不能只配置国内镜像。


(4)出现无法连接的问题:The connection to the server raw.githubusercontent.com was refused - did you specify the r…

问题解决:hosts里面添加新的域名解析。


(5)如果你的docker坏掉了,可以试一下这个脚本,可以进行自动修复:


wget -qO- https://get.docker.com/ | sh


如果你还遇见了其他问题,记得留言,有一些我没记录下来,没法复现了。

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
存储 Kubernetes 开发工具
使用ArgoCD管理Kubernetes部署指南
ArgoCD 是一款基于 Kubernetes 的声明式 GitOps 持续交付工具,通过自动同步 Git 存储库中的配置与 Kubernetes 集群状态,确保一致性与可靠性。它支持实时同步、声明式设置、自动修复和丰富的用户界面,极大简化了复杂应用的部署管理。结合 Helm Charts,ArgoCD 提供模块化、可重用的部署流程,显著减少人工开销和配置错误。对于云原生企业,ArgoCD 能优化部署策略,提升效率与安全性,是实现自动化与一致性的理想选择。
1192 0
|
存储 Kubernetes 网络安全
关于阿里云 Kubernetes 容器服务(ACK)添加镜像仓库的快速说明
本文介绍了在中国大陆地区因网络限制无法正常拉取 Docker 镜像的解决方案。作者所在的阿里云 Kubernetes 集群使用的是较旧版本的 containerd(1.2x),且无法直接通过 SSH 修改节点配置,因此采用了一种无需更改 Kubernetes 配置文件的方法。通过为 `docker.io` 添加 containerd 的镜像源,并使用脚本自动修改 containerd 配置文件中的路径错误(将错误的 `cert.d` 改为 `certs.d`),最终实现了通过多个镜像站点拉取镜像。作者还提供了一个可重复运行的脚本,用于动态配置镜像源。虽然该方案能缓解镜像拉取问题,
1397 3
|
存储 Kubernetes 异构计算
Qwen3 大模型在阿里云容器服务上的极简部署教程
通义千问 Qwen3 是 Qwen 系列最新推出的首个混合推理模型,其在代码、数学、通用能力等基准测试中,与 DeepSeek-R1、o1、o3-mini、Grok-3 和 Gemini-2.5-Pro 等顶级模型相比,表现出极具竞争力的结果。
|
Kubernetes Linux 开发者
在CentOS 7.8上使用kubeadm安装k8s 1.26
至此,你已经在CentOS 7.8上使用kubeadm成功安装了k8s 1.26。你可以通过输入 `kubectl get nodes`来查看节点状态,如果显示为Ready,那么恭喜你,你的Kubernetes集群已经准备好了。
518 23
|
存储 Kubernetes 监控
K8s集群实战:使用kubeadm和kuboard部署Kubernetes集群
总之,使用kubeadm和kuboard部署K8s集群就像回归童年一样,简单又有趣。不要忘记,技术是为人服务的,用K8s集群操控云端资源,我们不过是想在复杂的世界找寻简单。尽管部署过程可能遇到困难,但朝着简化复杂的目标,我们就能找到意义和乐趣。希望你也能利用这些工具,找到你的乐趣,满足你的需求。
1453 33
|
Kubernetes 开发者 Docker
集群部署:使用Rancher部署Kubernetes集群。
以上就是使用 Rancher 部署 Kubernetes 集群的流程。使用 Rancher 和 Kubernetes,开发者可以受益于灵活性和可扩展性,允许他们在多种环境中运行多种应用,同时利用自动化工具使工作负载更加高效。
1019 19
|
存储 人工智能 Kubernetes
ACK Gateway with AI Extension:面向Kubernetes大模型推理的智能路由实践
本文介绍了如何利用阿里云容器服务ACK推出的ACK Gateway with AI Extension组件,在Kubernetes环境中为大语言模型(LLM)推理服务提供智能路由和负载均衡能力。文章以部署和优化QwQ-32B模型为例,详细展示了从环境准备到性能测试的完整实践过程。
|
存储 运维 Kubernetes
容器数据保护:基于容器服务 Kubernetes 版(ACK)备份中心实现K8s存储卷一键备份与恢复
阿里云ACK备份中心提供一站式容器化业务灾备及迁移方案,减少数据丢失风险,确保业务稳定运行。
|
人工智能 算法 调度
阿里云ACK托管集群Pro版共享GPU调度操作指南
本文介绍在阿里云ACK托管集群Pro版中,如何通过共享GPU调度实现显存与算力的精细化分配,涵盖前提条件、使用限制、节点池配置及任务部署全流程,提升GPU资源利用率,适用于AI训练与推理场景。
999 1
|
弹性计算 监控 调度
ACK One 注册集群云端节点池升级:IDC 集群一键接入云端 GPU 算力,接入效率提升 80%
ACK One注册集群节点池实现“一键接入”,免去手动编写脚本与GPU驱动安装,支持自动扩缩容与多场景调度,大幅提升K8s集群管理效率。
677 89