建设网站不会写代码,外贸网站的作用,南部县网站建设公司,网站作风建设年专栏kubeadm来快速的搭建一个k8s集群#xff1a; 二进制搭建适合大集群#xff0c;50台以上。 kubeadm更适合中下企业的业务集群。
部署框架
master192.168.10.10dockerkubelet kubeadm kubectl flannelnode1192.168.10.20dockerkubelet kubeadm kubectl flannelnode2192.168.1…kubeadm来快速的搭建一个k8s集群 二进制搭建适合大集群50台以上。 kubeadm更适合中下企业的业务集群。
部署框架
master192.168.10.10dockerkubelet kubeadm kubectl flannelnode1192.168.10.20dockerkubelet kubeadm kubectl flannelnode2192.168.10.30dockerkubelet kubeadm kubectl flannelharbor192.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 21 /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-ip6tables1
net.bridge.bridge-nf-call-iptables1
net.ipv6.conf.all.disable_ipv61
net.ipv4.ip_forward1
//生效参数
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.cgroupdriversystemd],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 所有节点安装kubeadmkubelet和kubectl //定义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
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-address192.168.10.10 \
--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 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 -nkube-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.tgzmaster节点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 --imagenginx
kubectl get pods -o wide//暴露端口提供服务
kubectl expose deployment nginx --port80 --typeNodePort进入pod修改页面
kubectl get svc//测试访问
curl http://node01:31950 //缩容副本
kubectl scale deployment nginx --replicas3
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
输入管理员邮箱admintest.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/ root192.168.10.20:/
scp -r /data/ root192.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节点