k8s 集群部署

目录

[1. 集群环境初始化](#1. 集群环境初始化)

[2. 所有节点安装kubeadm](#2. 所有节点安装kubeadm)

[3. 拉取集群所需镜像](#3. 拉取集群所需镜像)

[4. 集群初始化](#4. 集群初始化)

[5. 安装flannel网络插件](#5. 安装flannel网络插件)

[6. 扩容节点](#6. 扩容节点)

[7. 设置kubectl命令补齐](#7. 设置kubectl命令补齐)


官网:

https://v1-23.docs.kubernetes.io/zh/docs/setup/production-environment/tools/kubeadm/install-kubeadm/

|--------|---------------|-------------------------|
| 主机名 | ip | 角色 |
| docker | 192.168.67.10 | reg.westos.org,harbor仓库 |
| k8s1 | 192.168.67.11 | master,k8s集群控制节点 |
| k8s2 | 192.168.67.12 | node,k8s集群工作节点 |
| k8s3 | 192.168.67.13 | node,k8s集群工作节点 |

所有节点禁用selinux和防火墙

所有节点同步时间和解析

所有节点安装docker-ce

所有节点禁用swap,注意注释掉/etc/fstab文件中的定义

1. 集群环境初始化

所有k8s集群节点执行以下步骤:
禁用swap,注意注释掉/etc/fstab文件中的定义

复制代码
swapoff -a
vim /etc/fstab


所有节点安装docker-ce

复制代码
cd /etc/yum.repos.d/
vim docker.repo
[docker]
name=docker-ce
baseurl=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/7/x86_64/stable/
gpgcheck=0

[centos]
name=extras
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/7/extras/x86_64/
gpgcheck=0

yum install -y docker-ce
systemctl enable --now docker
vim /etc/docker/daemon.json

{
        "registry-mirrors": ["https://reg.westos.org"],
        "exec-opts": ["native.cgroupdriver=systemd"],
        "log-driver": "json-file",
        "log-opts": {
                "max-size": "100m"
        },
        "storage-driver": "overlay2"
}


systemctl  restart docker


修改内核参数

复制代码
vim /etc/sysctl.d/docker.conf
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
net.ipv4.ip_forward=1
sysctl --system


所有节点同步docker配置,以及拷贝harbor仓库的证书

复制代码
cd /etc/docker/
ls
scp -r certs.d/ k8s1:/etc/docker/


确保所有k8s节点可以从私有仓库下载镜像

复制代码
docker pull nginx

2. 所有节点安装kubeadm

复制代码
vim /etc/yum.repos.d/k8s.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.tuna.tsinghua.edu.cn/kubernetes/yum/repos/kubernetes-el7-x86_64/
gpgcheck=0

yum install -y kubelet-1.23.17-0 kubeadm-1.23.17-0 kubectl-1.23.17-0
systemctl enable --now kubelet

3. 拉取集群所需镜像

复制代码
docker load -i k8s-v1.23.17.tar

登录仓库
先在harbor仓库上新建一个项目


上传镜像

复制代码
docker images |grep google_containers | awk '{print $1":"$2}' | awk -F/ '{system("docker tag "$0" reg.westos.org/k8s/"$3"")}'  ##镜像名称不一致需要tag 一下

docker images  |grep k8s | awk '{system("docker push "$1":"$2"")}'

4. 集群初始化

复制代码
kubeadm init --pod-network-cidr=10.244.0.0/16 --image-repository reg.westos.org/k8s --kubernetes-version v1.23.17

设置环境变量 (注意没有设置变量会有以下报错)

kubectl命令需要使用kubernetes-admin的身份来运行 从的节点没有对应权限

复制代码
export KUBECONFIG=/etc/kubernetes/admin.conf
写入环境变量文件,确保重启后依然生效
vim .bash_profile
export KUBECONFIG=/etc/kubernetes/admin.conf

查看集群状态

复制代码
kubectl get node


当前节点还没有就绪,是因为没有安装网路插件,pod还没运行

复制代码
kubectl get pod -A

5. 安装flannel网络插件

下载flannel网络插件 (GitHub不好下载)

复制代码
wget https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml

修改镜像位置 (这边是提前准备好的文件kube-flannel.yml)

复制代码
vim kube-flannel.yml


新建项目仓库

下载上传镜像

复制代码
docker load -i flannel-v0.22.3.tar
docker images |grep flannel | awk '{print $1":"$2}' | awk '{system("docker tag "$0" reg.westos.org/"$0"")}'  #同上

docker push reg.westos.org/flannel/flannel:v0.22.3
docker push reg.westos.org/flannel/flannel-cni-plugin:v1.2.0


确保镜像上传成功


部署网络插件

复制代码
kubectl apply -f kube-flannel.yml
kubectl  -n kube-flannel get pod

kubectl get node
kubectl get pod -A

6. 扩容节点

复制代码
kubeadm join 192.168.67.11:6443 --token dpjcwo.cg9wku0rxgsocvm5 \
        --discovery-token-ca-cert-hash sha256:b3706bcec8d94acc4a80146d0c1961b13bc5b7fe61a2ad936e0094db29dc79bd

复制代码
kubectl get node

7. 设置kubectl命令补齐

复制代码
yum install -y bash-completion
echo "source <(kubectl completion bash)" >> ~/.bashrc
source  ~/.bashrc
相关推荐
九皇叔叔3 小时前
Kubernetes 核心概念:集群架构、核心组件与资源对象
docker·容器·kubernetes·k8s
rustfs3 小时前
MinIO 国产开源平替正式 GA
分布式·docker·云原生·rust
阿里云云原生8 小时前
云原生可观测性进阶:利用 MCP ToolSets 实现 Agent 在复杂排障场景中的安全与高效协作
云原生
wdfk_prog8 小时前
ROS教程07:从 ros::start() 顺着源码读懂 Master、XML-RPC 与 Topic 注册发现
运维·缓存·docker·容器·ros
两点王爷9 小时前
常用的 Docker 镜像拉取地址仓库及常用命令详解
运维·服务器·容器
wdfk_prog9 小时前
用 Git Submodule + Sparse Checkout 管理 RT-Thread:内核、BSP、第三方库与业务代码分层实践
运维·缓存·docker·容器·ros
努力努力再努力wz9 小时前
【Docker入门系列】镜像为什么能复用?一文吃透 Docker Image、Registry、运行时架构与常用命令
缓存·docker·容器
运维老郭10 小时前
别再被 accept 骗了:TCP 连接到底开不开新端口?一次讲透
云原生
weixin_4202841411 小时前
Kubernetes 开发自定义CRD资源
云原生·kubernetes·kubelet
程序员天天困11 小时前
RustFS 1.0.0 深度解析:GA 之后,它值得替代 MinIO 吗?
后端·云原生·rust