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


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

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
6天前
|
存储 测试技术 对象存储
使用容器服务ACK快速部署QwQ-32B模型并实现推理智能路由
阿里云最新发布的QwQ-32B模型,通过强化学习大幅度提升了模型推理能力。QwQ-32B模型拥有320亿参数,其性能可以与DeepSeek-R1 671B媲美。
|
14天前
|
存储 Kubernetes 测试技术
企业级LLM推理部署新范式:基于ACK的DeepSeek蒸馏模型生产环境落地指南
企业级LLM推理部署新范式:基于ACK的DeepSeek蒸馏模型生产环境落地指南
41 12
|
14天前
|
人工智能 Kubernetes 异构计算
大道至简-基于ACK的Deepseek满血版分布式推理部署实战
大道至简-基于ACK的Deepseek满血版分布式推理部署实战
|
14天前
|
存储 Kubernetes 对象存储
部署DeepSeek但GPU不足,ACK One注册集群助力解决IDC GPU资源不足
部署DeepSeek但GPU不足,ACK One注册集群助力解决IDC GPU资源不足
|
21天前
|
边缘计算 调度 对象存储
部署DeepSeek但IDC GPU不足,阿里云ACK Edge虚拟节点来帮忙
介绍如何使用ACK Edge与虚拟节点满足DeepSeek部署的弹性需求。
|
16天前
|
监控 Kubernetes Cloud Native
基于阿里云容器服务Kubernetes版(ACK)的微服务架构设计与实践
本文介绍了如何基于阿里云容器服务Kubernetes版(ACK)设计和实现微服务架构。首先概述了微服务架构的优势与挑战,如模块化、可扩展性及技术多样性。接着详细描述了ACK的核心功能,包括集群管理、应用管理、网络与安全、监控与日志等。在设计基于ACK的微服务架构时,需考虑服务拆分、通信、发现与负载均衡、配置管理、监控与日志以及CI/CD等方面。通过一个电商应用案例,展示了用户服务、商品服务、订单服务和支付服务的具体部署步骤。最后总结了ACK为微服务架构提供的强大支持,帮助应对各种挑战,构建高效可靠的云原生应用。
|
24天前
|
Kubernetes 持续交付 数据库
阿里云ACK+GitLab企业级部署实战教程
GitLab 是一个功能强大的基于 Web 的 DevOps 生命周期平台,整合了源代码管理、持续集成/持续部署(CI/CD)、项目管理等多种工具。其一体化设计使得开发团队能够在同一平台上进行代码协作、自动化构建与部署及全面的项目监控,极大提升了开发效率和项目透明度。 GitLab 的优势在于其作为一体化平台减少了工具切换,高度可定制以满足不同项目需求,并拥有活跃的开源社区和企业级功能,如高级权限管理和专业的技术支持。借助这些优势,GitLab 成为许多开发团队首选的 DevOps 工具,实现从代码编写到生产部署的全流程自动化和优化。
|
1月前
|
人工智能 Kubernetes 异构计算
大道至简-基于ACK的Deepseek满血版分布式推理部署实战
本教程演示如何在ACK中多机分布式部署DeepSeek R1满血版。
|
14天前
|
边缘计算 调度 对象存储
部署DeepSeek但IDC GPU不足,阿里云ACK Edge虚拟节点来帮忙
部署DeepSeek但IDC GPU不足,阿里云ACK Edge虚拟节点来帮忙
|
15天前
|
存储 Kubernetes 对象存储
部署 DeepSeek 但 GPU 不足,ACK One 注册集群助力解决 IDC GPU 资源不足
部署 DeepSeek 但 GPU 不足,ACK One 注册集群助力解决 IDC GPU 资源不足

热门文章

最新文章