部署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
相关推荐
wellshake36 分钟前
在 Docker 中部署无头 Chrome:在 Browserless 中运行
chrome·docker·容器
爱吃龙利鱼10 小时前
nginx实现https安全访问的详细配置过程
运维·nginx·安全·云原生·https
大白菜和MySQL11 小时前
rockylinux9.4单master节点k8s1.28集群部署
云原生·容器·kubernetes
玖石书11 小时前
Docker 容器网络技术
运维·docker·容器
向往风的男子11 小时前
【从问题中去学习k8s】k8s中的常见面试题(夯实理论基础)(三十)
学习·容器·kubernetes
爱吃番茄的小狐狸17 小时前
Docker镜像下载-使用github action- 解决无法下载docker镜像的问题
docker·容器·github
andy7_18 小时前
运行在docker环境下的图片压缩小工具
运维·docker·容器
七夜zippoe19 小时前
nacos和eureka的区别详解
云原生·eureka
唐大爹19 小时前
kubeadm方式安装k8s续:
云原生·容器·kubernetes
陈小肚19 小时前
openeuler 22.03 lts sp4 使用 kubeadm 部署 k8s-v1.28.2 高可用集群
kubernetes