部署k8s集群

master01 192.168.230.91

node01 192.168.230.92 docker kubeadm kubectl flannel

node02 192.168.230.93

bash 复制代码
同步操作
systemctl stop firewalld
setenforce 0

#清空iptables策略
iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X

#关闭swap交换分区
swapoff -a 
sed -ri 's/.*swap.*/#&/' /etc/fstab	

#加载ipvs模块
for i in $(ls /usr/lib/modules/$(uname -r)/kernel/net/netfilter/ipvs|grep -o "^[^.]*");do echo $i; /sbin/modinfo -F filename $i >/dev/null 2>&1 && /sbin/modprobe $i;done

#查看时间是否一致
date

#修改主机名
hostnamectl set-hostname master01
hostnamectl set-hostname node01
hostnamectl set-hostname node02

#地址映射
vim /etc/hosts
192.168.230.91 master01
192.168.230.92 node01
192.168.230.93 node02

#master01测试网络连接
ping node01
ping node02

#调整内核参数
cat > /etc/sysctl.d/kubernetes.conf << EOF
#开启网桥模式,可将网桥的流量传递给iptables链
net.bridge.bridge-nf-call-ip6tables=1
net.bridge.bridge-nf-call-iptables=1
#关闭ipv6协议
net.ipv6.conf.all.disable_ipv6=1
net.ipv4.ip_forward=1
EOF

#加载配置文件
sysctl --system

#安装
yum install -y yum-utils device-mapper-persistent-data lvm2 

yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 

yum install -y docker-ce-24.0.1 docker-ce-cli-24.0.1 containerd.io

cat > /etc/docker/daemon.json <<EOF
{
  "registry-mirrors": ["https://hub.littlediary.cn/"],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  }
}
EOF

#重启
systemctl daemon-reload
systemctl restart docker
systemctl enable docker

#拉取镜像
docker pull nginx

#查看当前docker使用的cgroup驱动
docker info | grep "Cgroup Driver"
结果要是:Cgroup Driver: systemd

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

#安装
yum install -y kubelet-1.20.15 kubeadm-1.20.15 kubectl-1.20.15

#所有的组件都是以pod的形式运行的,必须要设置开机自启
systemctl enable kubelet

#初始化镜像
kubeadm config images list --kubernetes-version 1.20.15

k8s.gcr.io/pause:3.2
pause:镜像,特殊容器,作用是保持pod当中其他容器的运行
创建pod,首先是拉取镜像,pod当中会有一个pause,pause会在每一个pod中创建一个网络命名空间
pod的生命周期结束,pause容器也会退出,释放该pod的网络命名空间

取消同步操作
#master01初始化kubeadm
kubeadm init \
--apiserver-advertise-address=192.168.230.91 \
#内部通信的ip地址,指向的主,也可以用0.0.0.0表示任意主机
--image-repository registry.aliyuncs.com/google_containers \
#指定镜像的仓库,k8s组件的仓库地址
--kubernetes-version=v1.20.15 \
#k8s版本
--service-cidr=10.96.0.0/16 \
#service网段
--pod-network-cidr=10.244.0.0/16 \
#pod分配的网段,10.244.0.0是flannel默认的网段(可以自定义),calico:192.168.0.0/16
--token-ttl=0
#token永不过期,默认有效期是24小时

kubeadm join 192.168.230.91:6443 --token fnlvgt.7km4bx3rvecoo3ju \
    --discovery-token-ca-cert-hash sha256:865596b820a39f71aca3acd48774e54811fa2de64517cbb1ef434ba299f5fc3f
复制到node01、node02

#生成新的token验证
kubeadm token create --print-join-command

#列出集群中所有的节点
kubectl get nodes

同步操作
#设置节点的kubelet 
mkdir -p $HOME/.kube

cd /etc/kubernetes
admin.conf
#kubeadm为集群配置的一个具有管理员权限的认证文件,apiserver需要通过admin的认证,kubelet才能和apiserver进行交互

#复制
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config 

#赋权
chown $(id -u):$(id -g) $HOME/.kube/config

#重启kubelet
cd ~
cd .kube/
systemctl restart kubelet

master01上操作
#编辑kube-proxy的yaml文件,指定命名空间
kubectl edit cm kube-proxy -n=kube-system
mode: "ipvs"

kubectl get node
kubectl get cs
#检查集群的状态

vim /etc/kubernetes/manifests/kube-scheduler.yaml
16、25、39行的ip地址改为192.168.230.91
19行 注释

vim /etc/kubernetes/manifests/kube-controller-manager.yaml
17、37、51行的ip地址改为192.168.230.91
26行 port注释

#查看集群状态为ok
kubectl get cs


将以下包拖到master01、node01、node02
cni-plugins-linux-amd64-v0.8.6.tgz
flannel.tar
kube-flannel.yml

同步操作
#导入镜像
docker load < flannel.tar

取消同步,master01操作
#备份
mv /opt/cni /opt/cni_bak

#创建目录
cd cni_bak/
mkdir -p /opt/cni/bin

#解压
cd /opt
tar -xf cni-plugins-linux-amd64-v0.8.6.tgz -C /opt/cni/bin

#创建配置资源
kubectl apply -f kube-flannel.yml

kubectl get pod -n kube-system

ifconfig
相关推荐
小王努力学编程7 小时前
LangChain—AI应用开发框架(认识模型)
linux·服务器·人工智能·机器学习·容器·langchain
南宫乘风8 小时前
Kubernetes 中 ConfigMap 和 Secret 热更新:Reloader 实战指南
容器·kubernetes·configmap
辰尘_星启8 小时前
解决幽灵容器
linux·docker·容器·机器人·嵌入式
培根芝士9 小时前
基于Docker部署M3U8流媒体
docker·容器
卜锦元9 小时前
Docker Compose 部署 MySQL 8.4 LTS(生产级实践方案)
数据库·mysql·docker·容器
独断万古他化9 小时前
Docker 入门前置:容器虚拟化基础之 cgroups 资源控制与 LXC 容器
linux·docker·容器
\xin10 小时前
SQL 注入、文件上传绕过、MySQL UDF 提权、SUID 提权、Docker 逃逸,以及 APT 持久化技术渗透测试全流程第二次思路
sql·mysql·docker·容器·渗透测试·json·漏洞
羑悻的小杀马特10 小时前
零成本神器组合:用Docker+Uptime Kuma+cpolar打造永不掉线的远程监控系统!
运维·人工智能·docker·容器
禁默10 小时前
Portainer:让 Docker 管理变简单,用cpolar突破局域网后协作更轻松
java·docker·容器·cpolar
铭keny10 小时前
华为欧拉系统(openEuler)安装 Docker 容器完整教程
云原生·eureka