K8s 多节点部署流程
最近学习 k8s 集群,这边文章记录一下我搭建k8s集群的步骤
我这边采用的是 kubeadm 来部署集群,还有二进制文件的方式部署
首先说一下我这边的所有节点:(ip 是假的,依据自己情况来)
192.168.0.121 k8s-master1
192.168.0.107 k8s-worker1
以下 1-12 的操作需要在每个节点上都执行一遍…
具体的效果图我就不贴了…
这些操作相当于初始化集群的操作…
1.节点设置一下自己的 hostname
# 在对应的机器上执行# master 节点上运行:
hostnamectl set-hostname k8s-master1
# worker 节点上运行:
hostnamectl set-hostname k8s-node1
# 以此类推...
设置完成后退出重新登陆一下就可以看到效果了
2.设置sshd禁止DNS解析,以提高ssh连接速度
# 修改配置文件
sed -i '/#UseDNS yes/aUseDNS no' /etc/ssh/sshd_config
# 重启
systemctl restart sshd
没有为什么,执行就对了
3.更新操作系统,升级内核和软件版本
yum update -y
管他妈的先 update一下,老大教我的
4.关闭firewalld,selinux
systemctl stop firewalldsystemctl disable firewalldsed -i '/^SELINUX=/s/^.*$/SELINUX=disabled/' /etc/selinux/configsetenforce 0
5.关闭swap分区
swapoff -ased -ri 's/.*swap.*/#&/' /etc/fstab
6.根据规划设置主机名,并配置hosts文件
# ip 替换成自己的
cat >>/etc/hosts <<EOF
192.168.0.121 k8s-master1
192.168.0.107 k8s-worker1
EOF
7.将桥接的流量传递到iptables的链
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOFsysctl --system
8. 时间同步
yum install chrony -y
systemctl start chronyd
systemctl enable chronyd
# 查看时间同步源状态:
chronyc sourcestats
9.安装docker 并设置开机自启
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repoyum -y install docker-cesystemctl enable docker && systemctl start docker
10.配置镜像下载加速
cat > /etc/docker/daemon.json << EOF
{"registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"],"exec-opts": ["native.cgroupdriver=systemd"]
}
EOFsystemctl restart docker
11.添加阿里云YUM软件源
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[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
EOF
12.安装配置kubeadm、kubelet、kubectl
# 注意安装的版本必须要保持一致,我这边用的是 1.23.0yum install -y kubelet-1.23.0 kubeadm-1.23.0 kubectl-1.23.0 --disableexcludes=kubernetessystemctl enable --now kubelet
重点来了
master节点单独的操作
先查看以下集群所需要的镜像
kubeadm config images list
# 类似输出:
I1024 11:48:05.634480 4446 version.go:255] remote version is much newer: v1.25.3; falling back to: stable-1.23
k8s.gcr.io/kube-apiserver:v1.23.13
k8s.gcr.io/kube-controller-manager:v1.23.13
k8s.gcr.io/kube-scheduler:v1.23.13
k8s.gcr.io/kube-proxy:v1.23.13
k8s.gcr.io/pause:3.6
k8s.gcr.io/etcd:3.5.1-0
k8s.gcr.io/coredns/coredns:v1.8.6
kubeadm 初始化操作:
其他参数我还不知道什么鬼
kubeadm init --kubernetes-version=1.23.13 --apiserver-advertise-address=192.168.0.121 --image-repository registry.aliyuncs.com/google_containers --service-cidr=10.1.0.0/16 --pod-network-cidr=10.222.0.0/16
# 类似输出
Your Kubernetes control-plane has initialized successfully!To start using your cluster, you need to run the following as a regular user:mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/configYou should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:https://kubernetes.io/docs/concepts/cluster-administration/addons/Then you can join any number of worker nodes by running the following on each as root:kubeadm join 172.31.40.199:6443 --token abcdef.0123456789abcdef \--discovery-token-ca-cert-hash sha256:768eb1bfeebaf5596c21f9e8f7fa63c0c23e3ea57a9258d65f881a8bbb0f442a# 初始化成功了
–image-repository registry.aliyuncs.com/google_containers
这里是选择国内镜像,由于墙的原因,上面列出的镜像可能拉取不到,网上教程先拉国内镜像然后重命名,我试了不好用还麻烦
–apiserver-advertise-address=192.168.0.121
这里是什么 apiserver 的什么东西,我不太懂,换成了自己master的 ip
查看以下所有的Pod
# 这里可以查看以下所有 pod
kubectl get po -A
# 类似输出
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system calico-kube-controllers-54965c7ccb-gzrf5 1/1 Running 0 27m
kube-system calico-node-6wb67 1/1 Running 0 27m
kube-system calico-node-npnnm 1/1 Running 0 2m37s
kube-system coredns-6d8c4cb4d-4stl7 1/1 Running 0 4d20h
kube-system coredns-6d8c4cb4d-ct28q 1/1 Running 0 4d20h
kube-system etcd-k8s-master1 1/1 Running 2 (3d21h ago) 4d20h
kube-system kube-apiserver-k8s-master1 1/1 Running 1 (3d21h ago) 4d20h
kube-system kube-controller-manager-k8s-master1 1/1 Running 3 (149m ago) 4d20h
kube-system kube-proxy-5wmjk 1/1 Running 1 (3d21h ago) 4d20h
kube-system kube-proxy-tgfrh 1/1 Running 0 2m37s
kube-system kube-scheduler-k8s-master1 1/1 Running 3 (149m ago) 4d20h# 所有都running起来的话就正常了#------------------------------------------------------------------------------------------------------------------------
# 如果遇到。。。
#------------------------------------------------------------------------------------------------------------------------
The connection to the server localhost:8080 was refused - did you specify the right host or port?
# 原因:kubectl命令需要使用kubernetes-admin来运行,但是从节点没有这个文件
# 解决办法:
# 1. scp /etc/kubernetes/admin.conf root@ip:/etc/kubernetes
# 2. echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
# 3. source ~/.bash_profile
#------------------------------------------------------------------------------------------------------------------------
# 如果 coredns 一直 pending 看以下官网的pod 网络组件这一块吧,我踩得坑太多,查了很多资料,自己都不知道怎么解决的了
创建Token 并让worker节点加入
# 检查以下时间是否一致
ntpdate ntp1.aliyun.com# kubeadm 创建 token
kubeadm token create
# 输出类似:5didvk.d09sbcov8ph2amjw# 直接输出 worker 节点加入集群命令kubeadm token create o2cjol.fvnsm1zq07l9y9vv --print-join-command --ttl=0
# **** 直接复制此命令到worker节点 ****
# 输出类似:kubeadm join 192.168.0.121:6443 --token bd6a4s.mppi2bn6gusiwmgl --discovery-token-ca-cert-hash sha256:9997c823b22972fc5720851a7697a41d39ad7adecf456f7bf077878b1da9b362# 如果你没有 --discovery-token-ca-cert-hash 的值,则可以通过在控制平面节点上执行以下命令链来获取它:
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | \openssl dgst -sha256 -hex | sed 's/^.* //'
# 输出类似于以下内容:8cb2de97839780a412b93877f8507ad6c94f73add17d5d7058e91741c9d5ec78
到这一步token 就生成完了
worker节点单独操作
# 将worker1加入 集群 kubeadm join --token 5didvk.d09sbcov8ph2amjw --discovery-token-ca-cert-hash sha256:<hash>
kubeadm join 192.168.0.121:6443 --token bd6a4s.mppi2bn6gusiwmgl --discovery-token-ca-cert-hash sha256:9997c823b22972fc5720851a7697a41d39ad7adecf456f7bf077878b1da9b362
K8s 多节点部署流程相关推荐
- k8s单节点部署(master ,node部分)
文章目录 1 部署master 组件 1.1 master01 上创建kubernetes 工作目录,创建ca证书,相关组件证书,私钥目录 1.1.1 将master.zip, k8s-cert.sh ...
- 实验 详解K8S多节点部署群集
目录 一 环境部署 二 实验操作步骤 2.1 master02部署 2.2 nginx负载均衡集群部署 一 环境部署 主机名 IP地址 部署的服务 master01 20.0.0.101 apiser ...
- K8s完整多节点部署(二)
K8s多节点部署---->使用Nginx服务实现负载均衡---->UI界面展示 特别注意:此实验开始前必须要先部署单节master的k8s群集 可以见本人上一篇博客:https://blo ...
- K8S 学习笔记三 核心技术 Helm nfs prometheus grafana 高可用集群部署 容器部署流程
K8S 学习笔记三 核心技术 2.13 Helm 2.13.1 Helm 引入 2.13.2 使用 Helm 可以解决哪些问题 2.13.3 Helm 概述 2.13.4 Helm 的 3 个重要概念 ...
- 手动安装K8s第六节:node节点部署-kubelet
部署kubelet 1.准备二进制包 [root@k8smaster ~]# cd /usr/local/src/kubernetes/server/bin/ [root@k8smaster bin] ...
- 使用Kubeadm创建k8s集群之节点部署(三十二)
前言 由于上次忘开申明原创,特再发一次. 本篇部署教程将讲述k8s集群的节点(master和工作节点)部署,请先按照上一篇教程完成节点的准备.本篇教程中的操作全部使用脚本完成,并且对于某些情况(比如镜 ...
- k8s二进制单节点部署
k8s二进制单节点部署 常见的k8s部署方式 Kubernetes二进制部署(单节点) 环境准备 部署etcd集群(这里就不在单独的服务器上部署,直接部署在各节点上,节省资源) 下载证书制作工具 利用 ...
- K8S多节点二进制部署
目录 一.多 Maser 集群架构的了解 二.master2 节点部署 1.从 master01 节点上拷贝证书文件.各master组件的配置文件和服务管理文件到 master02 节点 2.修改配置 ...
- k8s多节点master部署
k8s多节点master部署 多节点master2节点部署 从master01节点上拷贝证书文件.配置文件和服务管理文件到master02 修改配置文件kube-apiserver中的IP 在mast ...
最新文章
- ThreadLocal小记
- 使用Java Spring消费MySQL中的数据库存储过程
- jpa 忽略bean_在WildFly上将JPA和CDI Bean与骆驼一起使用
- 用最简单的例子说明设计模式(三)之责任链、建造者、适配器、代理模式、享元模式...
- 欢迎加入唐山.NET俱乐部
- 结构体变量和结构体指针变量作为函数参数传递问题
- python汉语读音_【学习】python 汉语转拼音
- Linux 查看命令
- 2017年SEO推广优化怎么做
- “暖男”经济学:创业者最后的增长红利?
- 测试用例经典练习之微信发红包测试用例
- Swagger注解 详解
- native8081端口 react_教你轻松修改React Native端口(如何同时运行多个React Native、8081端口占用问题)...
- ffmpeg实现视频切割
- 七夕前夜,地球和月亮搭起“鹊桥”
- 学习制作横版游戏——2
- tensorflow2系类知识-4 :RNN
- 计算机考证培训班价格
- 虾皮面试真题:虾皮后端15连问!
- 磁盘分析软件(C盘爆满精确清理必备)---SpaceSniffer
热门文章
- 神武3 服务器维护公告,2021年3月19日更新公告
- GitHub 热点速览 Vol.24:程序员自我增值,优雅赚零花钱
- 自动垃圾分类管理系统 (项目论文,硬件,FPGA)
- 未安装AMD图形驱动程序,或者AMD驱动程序未正常工作。请安装与AMD硬件相对应的AMD驱动程序
- “逃犯克星”张学友演唱会完成八杀,幕后功臣竟然是它
- “数字江豚”背后的最严禁渔令!华为云助力武汉打响生态保卫战
- Matlab小课堂1
- 对话 CTO | 听掌门教育 CTO 李海坚讲教育公平背后的技术价值
- win7 设置双屏壁纸
- leelen可视对讲怎么接线_楼道对讲门铃怎么接线