详解K8s安装及“陷阱”

简介: 详解K8s安装及“陷阱”

kubernetes-install


秉承着烂笔头不如好记性的的歪门邪道,特此系统的记录kubernetes的安装全流程,及踩坑记录。默默说一句真多。


来吧,我们一起来快速拿下它并且有意识的规避各种坑,请指教


操作系统初始化


  • 关闭防火墙(all)


# 临时关闭防火墙systemctl stop firewalld# 永久关闭防火墙systemctl disable firewalld# 验证 systemctl status firewalld


  • 关闭selinux(all)


# 临时关闭setenforce 0# 永久sed -i 's/enforcing/disabled/' /etc/selinux/config


  • 关闭swap(all)


# 临时
 swapoff -a # 永久sed  -ri 's/.*swap.*/#&/' /etc/fstab


  • 设置主机名称(all)


# 设置名称(k8s-m-1)忽略大写字母hostnamectl set-hostname k8s-m-1# 验证hostname


  • Master添加Hostname(master)


# 设置cat >> /etc/hosts << EOF
masterIp master
node1Ip node1
node2Ip node2
EOF# egcat >> /etc/hosts << EOF192.168.50.212 k8s-m-1192.168.50.87 k8s-n-1192.168.50.85 k8s-n-2EOF


  • 将桥接的IPV4 流量传递到iptables的链(all)


cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1net.bridge.bridge-nf-call-ip6tables = 1EOF# 生效sysctl --system


  • 时间同步(All)


yum install -y ntpdate 
ntpdate time.windows.com# 三台机子输出如下则成功(相差几秒或几分为正常现象)


640 (5).jpg


安装Docker


官方文档-安装


  • Docker安装sh Script:(All)


# You can use scripts for one click installation,You may need to type enter at the end# remove docker sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine# Set up repositorysudo yum install -y yum-utils# Use Aliyun Dockersudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo# install docker from yumyum install  -y docker-ce docker-ce-cli containerd.io# restart dockersystemctl restart docker# cat version docker --version


640 (6).jpg


  • 配置加速(all)


```sh j


sudo mkdir -p /etc/docker


sudo tee /etc/docker/daemon.json <<-‘EOF’


{

“registry-mirrors”: [“https://etdea28s.mirror.aliyuncs.com“]

}


EOF


reload


sudo systemctl daemon-reload


sudo systemctl restart docker


检查阿里云加速


![](https://ucc.alicdn.com/images/user-upload-01/img_convert/325ab0b832e2bd1b36f64f439d5bf5c6.png)
## kubernetes安装
- 配置kubernetes源(`all`)
```sh
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF


由于官网kubernetes源在国外有墙,直接使用官方源会导致安装失败。所以我们配置国内的阿里源


  • 安装 kubectl kubelet kubeadm(all)


# install kubectl kubelet kubeadmyum install -y kubectl kubelet kubeadm# set boot on opening computersystemctl enable kubelet


  • 初始化k8s部署(Master)


kubeadm init \
--apiserver-advertise-address=youselfIp of Master   \
--image-repository registry.aliyuncs.com/google_containers  \# 不冲突即可--service-cidr=10.10.0.0/16 \
--pod-network-cidr=10.122.0.0/16# eg  kubeadm init \
--apiserver-advertise-address=192.168.50.212   \
--image-repository registry.aliyuncs.com/google_containers  \
--service-cidr=10.10.0.0/16 \
--pod-network-cidr=10.122.0.0/16


常见错误:running with swap on is not supported. Please disable swap


[preflight] If you know what you are doing, you can make a check non-fatal with `—ignore-preflight-

errors=…`


原因:系统自动进行分区


解决:


# 临时
 swapoff -a # 永久sed  -ri 's/.*swap.*/#&/' /etc/fstab


  • following as a regular user(Master)


mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config


  • join master node(node)


kubeadm join 172.16.164.136:6443 --token 9oilao.bpbxcm5zkk0jjcgm --discovery-token-ca-cert-hash sha256:609794bd03915be382bdb130c4c180e89cdc863d35cf99be79cf4ddcbfacee24


加入成功,如下图


640 (7).jpg


此时我们在Master节点上使用命令kubectl get nodes查看节点信息:如下图所示


640 (8).jpg


此时的kubectl get nodes的status都是NotNotReady:


查看kubernetes运行状态:


kubectl get pods -n kube-system


如图:


640 (9).jpg


果然,两个Pending犹豫未决


此时我们部署CNI网络,配置如下


# 根据官方文档提示配置CNI网络kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml# 报错:The connection to the server raw.githubusercontent.com was refused - did you specify the right host or port? 原因:外网不可访问 -> 在https://www.ipaddress.com/查询raw.githubusercontent.com的真实IP。


sudo vi /etc/hosts199.232.28.133 raw.githubusercontent.com# 如下


640 (10).jpg


# 开启IPVS,修改ConfigMap的kube-system/kube-proxy中的模式为ipvskubectl edit cm kube-proxy -n kube-system 
# 将空的data -> ipvs -> mode中替换如下mode: "ipvs"


640 (11).jpg


在此运行kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml成功,如图


640 (12).jpg


此时运行kubectl get nodes效果图如下->成功。(肯能并不一定会立马成功,上面👆确定没问题,请稍等片刻即可)


640 (13).jpg


测试kubernetes


# 创建nginx镜像 Create a deployment with the specified name# kubectl create deployment NAME --image=image -- [COMMAND] [args...] [options]kubectl create deployment nginx --image=nginx# 对外暴露端口kubectl expose deployment nginx --port=80 --type=NodePort# 查看pod服务kubectl get pod,svc


成功


640 (14).jpg

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
Payne
+关注
目录
打赏
0
0
0
0
2
分享
相关文章
2025 超详细!Lens Kubernetes IDE 多平台下载安装与集群管理教程
Lens 是一款企业级 Kubernetes 可视化操作平台,2025版实现了三大技术革新:AI智能运维(异常检测准确率98.7%)、多云联邦管理(支持50+集群)和实时3D拓扑展示。本文介绍其安装环境、配置流程、核心功能及高阶技巧,帮助用户快速上手并解决常见问题。适用于 Windows、macOS 和 Ubuntu 系统,需满足最低配置要求并前置依赖组件如 kubectl 和 Helm。通过 Global Cluster Hub 实现多集群管理,AI辅助故障诊断提升运维效率,自定义监控看板和插件生态扩展提供更多功能。
二进制安装Kubernetes(k8s)v1.32.0
本指南提供了一个详细的步骤,用于在Linux系统上通过二进制文件安装Kubernetes(k8s)v1.32.0,支持IPv4+IPv6双栈。具体步骤包括环境准备、系统配置、组件安装和配置等。
1266 11
Kubernetes上安装Metallb和Ingress并部署应用程序
Kubernetes上安装Metallb和Ingress并部署nginx应用程序,使用LoadBalancer类型的KubernetesService
419 13
从0开始搞K8S:使用Ubuntu进行安装(环境安装)
通过上述步骤,你已经在Ubuntu上成功搭建了一个基本的Kubernetes单节点集群。这只是开始,Kubernetes的世界广阔且深邃,接下来你可以尝试部署应用、了解Kubernetes的高级概念如Services、Deployments、Ingress等,以及探索如何利用Helm等工具进行应用管理,逐步提升你的Kubernetes技能树。记住,实践是最好的老师,不断实验与学习,你将逐渐掌握这一强大的容器编排技术。
928 1
rancher docker k8s安装(一)
rancher docker k8s安装(一)
79 2
基于Ubuntu-22.04安装K8s-v1.28.2实验(一)部署K8s
基于Ubuntu-22.04安装K8s-v1.28.2实验(一)部署K8s
604 2
基于Ubuntu-22.04安装K8s-v1.28.2实验(四)使用域名访问网站应用
基于Ubuntu-22.04安装K8s-v1.28.2实验(四)使用域名访问网站应用
94 1
基于Ubuntu-22.04安装K8s-v1.28.2实验(二)使用kube-vip实现集群VIP访问
基于Ubuntu-22.04安装K8s-v1.28.2实验(二)使用kube-vip实现集群VIP访问
150 1

热门文章

最新文章