部署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
相关推荐
chuanauc5 小时前
Kubernets K8s 学习
java·学习·kubernetes
小张是铁粉5 小时前
docker学习二天之镜像操作与容器操作
学习·docker·容器
烟雨书信5 小时前
Docker文件操作、数据卷、挂载
运维·docker·容器
IT成长日记5 小时前
【Docker基础】Docker数据卷管理:docker volume prune及其参数详解
运维·docker·容器·volume·prune
这儿有一堆花5 小时前
Docker编译环境搭建与开发实战指南
运维·docker·容器
LuckyLay5 小时前
Compose 高级用法详解——AI教你学Docker
运维·docker·容器
Uluoyu5 小时前
redisSearch docker安装
运维·redis·docker·容器
IT成长日记10 小时前
【Docker基础】Docker数据持久化与卷(Volume)介绍
运维·docker·容器·数据持久化·volume·
疯子的模样14 小时前
Docker 安装 Neo4j 保姆级教程
docker·容器·neo4j
虚伪的空想家15 小时前
rook-ceph配置dashboard代理无法访问
ceph·云原生·k8s·存储·rook