部署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
相关推荐
云和数据.ChenGuang28 分钟前
微服务技术栈
微服务·云原生·架构
syty202032 分钟前
K8s是什么
容器·kubernetes·dubbo
江团1io02 小时前
微服务雪崩问题与系统性防御方案
微服务·云原生·架构
Evan Wang3 小时前
使用Terraform管理阿里云基础设施
阿里云·云原生·terraform
向上的车轮3 小时前
基于go语言的云原生TodoList Demo 项目,验证云原生核心特性
开发语言·云原生·golang
灵犀物润4 小时前
Kubernetes 配置检查与发布安全清单
安全·容器·kubernetes
360智汇云4 小时前
k8s交互桥梁:走进Client-Go
golang·kubernetes·交互
xy_recording4 小时前
Day20 K8S学习
学习·容器·kubernetes
衍余未了5 小时前
k8s 内置的containerd配置阿里云个人镜像地址及认证
java·阿里云·kubernetes
九章云极AladdinEdu5 小时前
Kubernetes设备插件开发实战:实现GPU拓扑感知调度
人工智能·机器学习·云原生·容器·kubernetes·迁移学习·gpu算力