最近学习 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 多节点部署流程相关推荐

  1. k8s单节点部署(master ,node部分)

    文章目录 1 部署master 组件 1.1 master01 上创建kubernetes 工作目录,创建ca证书,相关组件证书,私钥目录 1.1.1 将master.zip, k8s-cert.sh ...

  2. 实验 详解K8S多节点部署群集

    目录 一 环境部署 二 实验操作步骤 2.1 master02部署 2.2 nginx负载均衡集群部署 一 环境部署 主机名 IP地址 部署的服务 master01 20.0.0.101 apiser ...

  3. K8s完整多节点部署(二)

    K8s多节点部署---->使用Nginx服务实现负载均衡---->UI界面展示 特别注意:此实验开始前必须要先部署单节master的k8s群集 可以见本人上一篇博客:https://blo ...

  4. 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 个重要概念 ...

  5. 手动安装K8s第六节:node节点部署-kubelet

    部署kubelet 1.准备二进制包 [root@k8smaster ~]# cd /usr/local/src/kubernetes/server/bin/ [root@k8smaster bin] ...

  6. 使用Kubeadm创建k8s集群之节点部署(三十二)

    前言 由于上次忘开申明原创,特再发一次. 本篇部署教程将讲述k8s集群的节点(master和工作节点)部署,请先按照上一篇教程完成节点的准备.本篇教程中的操作全部使用脚本完成,并且对于某些情况(比如镜 ...

  7. k8s二进制单节点部署

    k8s二进制单节点部署 常见的k8s部署方式 Kubernetes二进制部署(单节点) 环境准备 部署etcd集群(这里就不在单独的服务器上部署,直接部署在各节点上,节省资源) 下载证书制作工具 利用 ...

  8. K8S多节点二进制部署

    目录 一.多 Maser 集群架构的了解 二.master2 节点部署 1.从 master01 节点上拷贝证书文件.各master组件的配置文件和服务管理文件到 master02 节点 2.修改配置 ...

  9. k8s多节点master部署

    k8s多节点master部署 多节点master2节点部署 从master01节点上拷贝证书文件.配置文件和服务管理文件到master02 修改配置文件kube-apiserver中的IP 在mast ...

最新文章

  1. ThreadLocal小记
  2. 使用Java Spring消费MySQL中的数据库存储过程
  3. jpa 忽略bean_在WildFly上将JPA和CDI Bean与骆驼一起使用
  4. 用最简单的例子说明设计模式(三)之责任链、建造者、适配器、代理模式、享元模式...
  5. 欢迎加入唐山.NET俱乐部
  6. 结构体变量和结构体指针变量作为函数参数传递问题
  7. python汉语读音_【学习】python 汉语转拼音
  8. Linux 查看命令
  9. 2017年SEO推广优化怎么做
  10. “暖男”经济学:创业者最后的增长红利?
  11. 测试用例经典练习之微信发红包测试用例
  12. Swagger注解 详解
  13. native8081端口 react_教你轻松修改React Native端口(如何同时运行多个React Native、8081端口占用问题)...
  14. ffmpeg实现视频切割
  15. 七夕前夜,地球和月亮搭起“鹊桥”
  16. 学习制作横版游戏——2
  17. tensorflow2系类知识-4 :RNN
  18. 计算机考证培训班价格
  19. 虾皮面试真题:虾皮后端15连问!
  20. 磁盘分析软件(C盘爆满精确清理必备)---SpaceSniffer

热门文章

  1. 神武3 服务器维护公告,2021年3月19日更新公告
  2. GitHub 热点速览 Vol.24:程序员自我增值,优雅赚零花钱
  3. 自动垃圾分类管理系统 (项目论文,硬件,FPGA)
  4. 未安装AMD图形驱动程序,或者AMD驱动程序未正常工作。请安装与AMD硬件相对应的AMD驱动程序
  5. “逃犯克星”张学友演唱会完成八杀,幕后功臣竟然是它
  6. “数字江豚”背后的最严禁渔令!华为云助力武汉打响生态保卫战
  7. Matlab小课堂1
  8. 对话 CTO | 听掌门教育 CTO 李海坚讲教育公平背后的技术价值
  9. win7 设置双屏壁纸
  10. leelen可视对讲怎么接线_楼道对讲门铃怎么接线