做网站设计抬头,专业网络建站公司,品牌注册和商标注册有什么区别,在线logo制作免费Kubeadmin来快速搭建一个k8s集群#xff1a;
二进制搭建适合大集群#xff0c;50台以上的主机#xff0c;
但是kubeadm更适合中小企业的业务集群 环境#xff1a;
Master#xff1a;20.0.0.71 2核4G 或者4核8G docker kubelet kubectl flannel
Node1#xff1a;20.…Kubeadmin来快速搭建一个k8s集群
二进制搭建适合大集群50台以上的主机
但是kubeadm更适合中小企业的业务集群 环境
Master20.0.0.71 2核4G 或者4核8G docker kubelet kubectl flannel
Node120.0.0.72 2核4G 或者4核8G docker kubelet kubectl flannel
Node2: 20.0.0.73 2核4G docker kubelet kubectl flannel
Harbor节点20.0.0.74 2核4Gdocker-compose harbor 实验开始
所有节点
systemctl stop firewalld
setenforce 0
iptables -F iptables -t nat -F iptables -t mangle -F iptables -X
swapoff -a 所有节点
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 21 /sbin/modprobe $i;done 改主机名
master1
hostnamectl set-hostname master01 node1
hostnamectl set-hostname node01 node2
hostnamectl set-hostname node02 映射 做内核优化 vim /etc/sysctl.d/k8s.conf #开启网桥模式
net.bridge.bridge-nf-call-ip6tables1
net.bridge.bridge-nf-call-iptables1
#网桥的流量传给iptables链实现地址映射
#关闭ipv6的流量可选项
net.ipv6.conf.all.disable_ipv61
#根据工作中的实际情况自定
net.ipv4.ip_forward1
wq! net.bridge.bridge-nf-call-ip6tables 1
net.bridge.bridge-nf-call-iptables 1
net.ipv6.conf.all.disable_ipv61
net.ipv4.ip_forward1 ##
sysctl --system 时间同步全部
yum install ntpdate -y
ntpdate ntp.aliyun.com
date 所有节点安装docker
### 资源控制器必须systemd三台
mkdir /etc/docker
cat /etc/docker/daemon.json EOF
{ registry-mirrors: [https://pkm63jfy.mirror.aliyuncs.com], exec-opts: [native.cgroupdriversystemd], log-driver: json-file, log-opts: { max-size: 100m }
}
EOF
systemctl daemon-reload
systemctl restart docker.service
systemctl enable docker.service docker info | grep Cgroup Driver
Cgroup Driver: systemd 安装kuberctl三台
//定义kubernetes源
cat /etc/yum.repos.d/kubernetes.repo EOF
[kubernetes]
nameKubernetes
baseurlhttps://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled1
gpgcheck0
repo_gpgcheck0
gpgkeyhttps://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 //查看初始化需要的镜像
kubeadm config images list --kubernetes-version 1.20.15
k8s.gcr.io/kube-apiserver:v1.20.15
k8s.gcr.io/kube-controller-manager:v1.20.15
k8s.gcr.io/kube-scheduler:v1.20.15
k8s.gcr.io/kube-proxy:v1.20.15
k8s.gcr.io/pause:3.2
k8s.gcr.io/etcd:3.4.13-0
k8s.gcr.io/coredns:1.7.0 取消同步操作 主节点操作
//查看初始化需要的镜像
kubeadm config images list --kubernetes-version 1.20.15 解析
Pause特殊的pod
Pause会在节点上创建一个网络命名空间其他容器可以加入这个网络命名空间
Pod里面的容器可能使用不同的代码架构编写可以在一个网络空间里面实现通信协调这个命名空间里面的资源实现pod内容器的兼容性 Kubeadm安装的k8s都是以pod的形式运行在kube-system这个空间当中
Kubeletnode管理器可以进行系统控制 kubeadm init \ --apiserver-advertise-address20.0.0.71 \ --image-repository registry.aliyuncs.com/google_containers \ --kubernetes-versionv1.20.15 \ --service-cidr10.96.0.0/16 \ --pod-network-cidr10.244.0.0/16 \ --token-ttl0
第二行声明master节点的apiserver法人监听地址
第三行声明拉取镜像的仓库使用阿里云
第四行k8s的版本号
第五行所有server的对外代理地址都是10.96.0.0/16
第六行所有pod的IP地址的网段
第七行默认的token的有效期默认是24小时0表示永不过期 将黑色代码复制到两个node节点node1node2执行 mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
systemctl restart kubelet 初始化后需要修改 kube-proxy 的 configmap开启 ipvs
kubectl edit cm kube-proxy -nkube-system
修改mode: ipvs Systemctl restart kublet kubectl get nodes kubectl get cs发现集群不健康更改以下两个文件 修改监听地址
vim /etc/kubernetes/manifests/kube-scheduler.yaml
vim /etc/kubernetes/manifests/kube-controller-manager.yaml
systemctl restart kubelet kubectl get pods -n kube-system 部署网络三台
//所有节点上传 flannel 镜像 flannel.tar 和网络插件 cni-plugins-linux-amd64-v0.8.6.tgz 到 /opt 目录
master节点上传 kube-flannel.yml 文件 cd /opt
docker load 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 节点创建 flannel 资源
kubectl apply -f kube-flannel.yml kubectl get node 删除节点
kubectl delete node master01 kubectl get pod -n kube-system 证书有效期
#证书有效期的问题,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
chmod 777 update-kubeadm-cert.sh all
./update-kubeadm-cert.sh all 看有效期 运行脚本改日期 赋权然后运行脚本 //在master节点查看节点状态
kubectl get nodes
kubectl get pods -n kube-system 添加自动补齐 集群已经搭建完毕 验证
创建镜像
kubectl create deployment nginx --imagenginx --replicas3 kubectl get pods kubectl describe pod pod后面加name可以查看状态 做个server
kubectl get svc Curl ip :31038 搭建仓库
Test4
//上传 harbor-offline-installer-v2.8.1.tgz 和 docker-compose 文件到 /opt 目录
cd /opt
cp docker-compose /usr/local/bin/
chmod x /usr/local/bin/docker-compose tar zxvf harbor-offline-installer-v2.8.1.tgz cd harbor/ vim harbor.yml 安装 部署与k8s集群对接的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-compose tar zxvf harbor-offline-installer-v2.8.1.tgz
cd harbor/
vim harbor.yml
hostname hub.test.com https: # https port for harbor, default is 443 port: 443 # The path of cert and key files for nginx certificate: /data/cert/server.crt private_key: /data/cert/server.key harbor_admin_password 123456
//生成证书
mkdir -p /data/cert
cd /data/cert
#生成私钥
openssl genrsa -des3 -out server.key 2048
输入两遍密码123456 openssl 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
输入管理员邮箱admintest.com
其它全部直接回车 #备份私钥
cp server.key server.key.org #清除私钥密码
openssl rsa -in server.key.org -out server.key
输入私钥密码123456 #签名证书
openssl x509 -req -days 1000 -in server.csr -signkey server.key -out server.crt chmod x /data/cert/* cd /opt/harbor/
./prepare ./install.sh 在本地使用火狐浏览器访问https://20.0.0.74
添加例外 - 确认安全例外
用户名admin
密码123456 Node2
mkdir -p /etc/docker/certs.d/hub.test.com/ Harbor操作
scp -r data/ root20.0.0.72:/ 映射 vim /lib/systemd/system/docker.service ##修改
ExecStart/usr/bin/dockerd -H fd:// --containerd/run/containerd/containerd.sock --insecure-registryhub.test.com systemctl daemon-reload
systemctl restart docker 登录
docker login -u admin -p 123456 https://hub.test.com 测试是否成功 docker pull nginx
docker tag nginx:latest hub.test.com/library/nginx:v1
docker push hub.test.com/library/nginx:v1 Node3也是同样的操作
mkdir -p /etc/docker/certs.d/hub.test.com/
scp -r data/ root20.0.0.73:/
mkdir -p /etc/docker/certs.d/hub.test.com/
cd /data/cert/
cp server.crt server.csr server.key /etc/docker/certs.d/hub.test.com/
cd /etc/docker/certs.d/hub.test.com/ vim /etc/hosts
vim /lib/systemd/system/docker.service
#添加
ExecStart/usr/bin/dockerd -H fd:// --containerd/run/containerd/containerd.sock --insecure-registryhub.test.com
systemctl daemon-reload
systemctl restart docker
docker login -u admin -p 123456 https://hub.test.com 演示从仓库拉取镜像
kubectl create deployment nginx --imagehub.test.com/library/nginx:v1 --replicas3 拉取失败
kubectl get pods 把harbor权限改为公开
即可成功 基于deployments创建的无法通过delete删除必须要先删除deployments.apps如上图所示 绑定到集群#获取token值 创建用户获取token 浏览器登录