当前位置: 首页 > news >正文

kubeadm创建k8s集群

kubeadm来快速的搭建一个k8s集群:
二进制搭建适合大集群,50台以上。
kubeadm更适合中下企业的业务集群。

部署框架

master192.168.10.10dockerkubelet kubeadm kubectl flannel
node1192.168.10.20dockerkubelet kubeadm kubectl flannel
node2192.168.10.30dockerkubelet kubeadm kubectl flannel
harbor192.168.10.40docker-compose hargordocker

实验部署

在master node1 node2上都操作

systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/enforcing/disabled/' /etc/selinux/config
iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X
swapoff -a
#交换分区必须要关闭
sed -ri 's/.*swap.*/#&/' /etc/fstab
#永久关闭swap分区,&符号在sed命令中代表上次匹配的结果
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
#加载 ip_vs 模块

//修改主机名

hostnamectl set-hostname master01
hostnamectl set-hostname node01
hostnamectl set-hostname node02

//所有节点修改hosts文件

vim /etc/hosts
192.168.10.10 master01
192.168.10.20 node01
192.168.10.30 node02

//调整内核参数

vim /etc/sysctl.d/kubernetes.conf
net.bridge.bridge-nf-call-ip6tables=1
net.bridge.bridge-nf-call-iptables=1
net.ipv6.conf.all.disable_ipv6=1
net.ipv4.ip_forward=1

//生效参数

sysctl --system

所有节点安装docker

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 docker-ce-cli containerd.iomkdir /etc/docker
cat > /etc/docker/daemon.json <<EOF
{"registry-mirrors": ["https://pkm63jfy.mirror.aliyuncs.com"],"exec-opts": ["native.cgroupdriver=systemd"],"log-driver": "json-file","log-opts": {"max-size": "100m"}
}
EOFsystemctl daemon-reload
systemctl restart docker.service
systemctl enable docker.service 
docker info | grep "Cgroup Driver"
Cgroup Driver: systemd

所有节点安装kubeadm,kubelet和kubectl  
//定义kubernetes源

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
EOFyum install -y kubelet-1.20.15 kubeadm-1.20.15 kubectl-1.20.15//开机自启kubelet
systemctl enable kubelet.service

//查看初始化需要的镜像

kubeadm config images list --kubernetes-version 1.20.15

在master上

kubeadm init \
--apiserver-advertise-address=192.168.10.10 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version=v1.20.15 \
--service-cidr=10.96.0.0/16 \
--pod-network-cidr=10.244.0.0/16 \
--token-ttl=0

node节点上的操作

在master上

mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/configsystemctl restart kubelet

初始化后需要修改 kube-proxy 的 configmap,开启 ipvs

kubectl edit cm kube-proxy -n=kube-system
修改mode: ipvs

kubectl get cs 发现集群不健康,更改以下两个文件

kubectl get cs

kubectl get cs 发现集群不健康,更改以下两个文件

vim /etc/kubernetes/manifests/kube-scheduler.yaml

修改以下内容

vim /etc/kubernetes/manifests/kube-controller-manager.yaml

修改以下内容

systemctl restart kubelet
kubectl get cs

kubectl get nodes

上传文件

node节点flannel.tar、cni-plugins-linux-amd64-v0.8.6.tgz
master节点kube-flannel.yml 

master做node节点时,可以上传flannel.tar、cni-plugins-linux-amd64-v0.8.6.tgz

所有node节点

cd /opt
docker load -i flannel.tar
mv /opt/cni /opt/cni_bak
mkdir -p /opt/cni/bin
tar zxvf cni-plugins-linux-amd64-v0.8.6.tgz -C /opt/cni/bin

在 master 节点

kubectl apply -f kube-flannel.yml 
kubectl get node

#证书有效期的问题,kubeadm默认只有1年:

openssl x509 -in /etc/kubernetes/pki/ca.crt -noout -text | grep Not
openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -text | grep Not

在master的/opt/上传 update-kubeadm-cert.sh 

chmod 777 update-kubeadm-cert.sh
./update-kubeadm-cert.sh all
openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -text | grep Not

//在master节点查看节点状态

kubectl get pods -n kube-system

//测试 pod 资源创建
kubectl create deployment nginx --image=nginx
kubectl get pods -o wide//暴露端口提供服务
kubectl expose deployment nginx --port=80 --type=NodePort进入pod修改页面
kubectl get svc

//测试访问
curl http://node01:31950

//缩容副本

kubectl scale deployment nginx --replicas=3
kubectl get pods -o wide

vim /etc/profile
source <(kubectl completion bash)source /etc/profile

部署docker----harbor

/上传 harbor-offline-installer-v2.8.1.tgz 和 docker-compose 文件到 /opt 目录
cd /opt
cp docker-compose /usr/local/bin/
chmod +x /usr/local/bin/docker-composetar zxvf harbor-offline-installer-v2.8.1.tgz
cd harbor/
vim harbor.yml
hostname = hub.test.comhttps:# https port for harbor, default is 443port: 443# The path of cert and key files for nginxcertificate: /data/cert/server.crtprivate_key: /data/cert/server.keyharbor_admin_password = 123456//生成证书
mkdir -p /data/cert
cd /data/cert
#生成私钥
openssl genrsa -des3 -out server.key 2048
输入两遍密码:123456openssl genrsa: 用于生成 RSA 密钥。
-des3: 使用 Triple DES 加密算法对生成的私钥进行加密。
-out server.key: 指定生成的私钥文件的名称为 server.key。
2048: 指定 RSA 密钥的位数为 2048 位。#生成证书签名请求文件
openssl req -new -key server.key -out server.csr
输入私钥密码:123456
输入国家名:CN
输入省名:BJ
输入市名:BJ
输入组织名:TEST
输入机构名:TEST
输入域名:hub.kgc.com
输入管理员邮箱:admin@test.com
其它全部直接回车#备份私钥
cp server.key server.key.old#清除私钥密码
openssl rsa -in server.key.old -out server.key
输入私钥密码:123456#签名证书
openssl x509 -req -days 1000 -in server.csr -signkey server.key -out server.crtchmod +x /data/cert/*cd /opt/harbor/
cd /opt/harbor/./install.sh在本地使用火狐浏览器访问:https://192.168.10.40
添加例外 -> 确认安全例外
用户名:admin
密码:123456

在所有node节点上

mkdir -p /etc/docker/certs.d/hub.test.com///在harbor节点把密钥验证目录整个转给node节点:
scp -r /data/ root@192.168.10.20:/
scp -r /data/ root@192.168.10.30:/cd /data/cert/
cp server.crt  server.csr  server.key /etc/docker/certs.d/hub.test.com/

vim /lib/systemd/system/docker.service

systemctl daemon-reload
systemctl restart docker
docker login -u admin -p 123456 https://hub.test.com

docker tag nginx:latest hub.test.com/k8s/nginx:v1
docker push hub.test.com/k8s/nginx:v1

部署图形化dashboard

kubectl apply -f recommended.yaml

kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')

此处访问的时node节点

http://www.lryc.cn/news/268887.html

相关文章:

  • 鸿蒙开发之android对比开发《基础知识》
  • 2702 高级打字机
  • yolov5旋转目标检测-遥感图像检测-无人机旋转目标检测-附代码和原理
  • Qt学习:Qt的意义安装Qt
  • Anylogic Pro 8.8.x for Mac / for Linux Crack
  • ROS无人机初始化GPS定位漂移误差,确保无人机稳定飞行
  • k8s网络类型
  • Seata 中封装了四种分布式事务模式,分别是: AT 模式, TCC 模式, Saga 模式, XA 模式,
  • 为什么设计制造行业需要数据加密?
  • 查看ios app运行日志
  • 怎么卸载macOS上的爱思助手如何卸载macOS上的logitech g hub,如何卸载顽固macOS应用
  • 侦探IP“去推理化”:《名侦探柯南》剧场版走过26年
  • 图论 经典例题
  • Oracle数据updater如何回滚
  • redis开启密码验证
  • 一种删除 KubeSphere 中一直卡在 Terminating 的 Namespace--KubeSphere Logging System的简单方法
  • Flink1.17实战教程(第七篇:Flink SQL)
  • nest定时任务调用service报错
  • [Angular] 笔记 11:可观察对象(Observable)
  • 【论文阅读】Resource Allocation for Text Semantic Communications
  • VMware16 pro 安装openEuler-23.09-x86_64,详细操作流程+详图。
  • Mybatis 动态 SQL - script,bind,多数据库支持
  • Scikit-Learn线性回归(一)
  • Mybatis 动态 SQL - choose, when, otherwise
  • idea Spring Boot项目使用JPA创建与数据库链接
  • redis基础知识
  • 最短路径(数据结构实训)(难度系数100)
  • 基于SSM实现的电动汽车充电网点管理系统
  • Android ImageView如何使用.svg格式图片
  • 力扣热题100道-子串篇