寮步镇做网站,企业建站程序推荐,用discuz做商城网站,济宁百度推广价格目录
一、安装k8s
1、拓扑图
2、系统初始化配置
2.1关闭防火墙selinx以及swap
2.2设置主机名
2.3在每台主机中添加hosts#xff0c;做映射
2.4调整内核参数#xff0c;将桥接的ipv4流量传递到iptables#xff0c;关闭ipv6
2.4时间同步
3、部署docker引擎#xff0…目录
一、安装k8s
1、拓扑图
2、系统初始化配置
2.1关闭防火墙selinx以及swap
2.2设置主机名
2.3在每台主机中添加hosts做映射
2.4调整内核参数将桥接的ipv4流量传递到iptables关闭ipv6
2.4时间同步
3、部署docker引擎两个node节点执行
4、部署etcd集群
4.1在master01节点操作
4.2生成etcd证书上传etcd-cert.sh 和 etcd.sh 到 /opt/k8s/ 目录中
4.3创建用于生成CA证书etcd服务器证书以及私钥的目录
4.4上传 etcd-v3.4.9-linux-amd64.tar.gz 到 /opt/k8s 目录中启动etcd服务
4.5创建用于存放etcd配置文件命令文件证书的目录
4.6把etcd相关证书文件、命令文件和服务管理文件全部拷贝到另外两个etcd集群节点
4.7在node1节点操作node2同样
4.8启动etcd并检查etcd集群状态
5、master部署组件
6、部署worker node组件
6.1在所有 node 节点上操作创建kubernetes工作目录
6.2上传 node.zip 到 /opt 目录中解压 node.zip 压缩包获得kubelet.sh、prox
6.3在master01节点上操作把 kubelet、kube-proxy 拷贝到 node 节点
6.4上传kubeconfig.sh文件到/opt/k8s/kubeconfig目录中生成kubelet初次加入集群引导kubeconfig文件和kube-proxy.kubeconfig文件#kubeconfig 文件包含集群参数CA 证书、API Server 地址客户端参数上面生成的证书和私钥集群 context 上下文参数集群名称、用户名。Kubenetes 组件如 kubelet、kube-proxy通过启动时指定不同的 kubeconfig 文件可以切换到不同的集群连接到 apiserver。
6.5把配置文件 bootstrap.kubeconfig、kube-proxy.kubeconfig 拷贝到 node 节点
6.6RBAC授权使用户 kubelet-bootstrap 能够有权限发起 CSR 请求证书
7、在node01节点上操作
7.1启动kubelet
7.2在 master01 节点上操作通过 CSR 请求检查到 node01 节点的 kubelet 发起的 CSR 请求Pending 表示等待集群给该节点签发证书
7.3通过 CSR 请求
7.4查看节点由于网络插件还没有部署节点会没有准备就绪 NotReady
7.5在 node01 节点上操作加载 ip_vs 模块 启动proxy服务 一、安装k8s
1、拓扑图 2、系统初始化配置
#所有节点执行
systemctl stop firewalld
systemctl disable firewalld
iptables -F iptables -t nat -F iptables -t mangle -F iptables -X
#永久关闭firewalld并清空iptables所有表规则
setenforce 0
sed -i s/enforcing/disabled/ /etc/selinux/config
swapoff -a
sed -ri s/.*swap.*/#/ /etc/fstab
#永久关闭selinux和swap分区
#三个节点分开执行
hostnamectl set-hostname master01
#192.168.170.111的master上执行修改主机名
hostnamectl set-hostname node01
#192.168.170.113的node1上执行修改主机名
hostnamectl set-hostname node02
#192.168.170.114的node2上执行修改主机名
#所有节点执行
bash
#刷新bash使得修改的主机名生效
cat /etc/hosts EOF
192.168.170.111 master01
192.168.170.113 node1
192.168.170.114 node2
EOF
#使用多行重定向将主机名对应的ip写到hosts里面加快访问速度注意改为自己的ip
cat /etc/sysctl.d/k8s.conf EOF
net.bridge.bridge-nf-call-ip6tables 1
net.bridge.bridge-nf-call-iptables 1
net.ipv6.conf.all.disable_ipv61
net.ipv4.ip_forward1
EOF
#使用多行重定向调整内核参数前2行为开启网桥模式后2行为关闭ipv6协议和开启路由转发
sysctl --system
#加载内核使得配置内核参数生效
yum install ntpdate -y
ntpdate time.windows.com
#安装ntpdate时间同步程序并与本机的windows同步时间
2.1关闭防火墙selinx以及swap 2.2设置主机名 2.3在每台主机中添加hosts做映射 2.4调整内核参数将桥接的ipv4流量传递到iptables关闭ipv6 2.4时间同步 3、部署docker引擎两个node节点执行
#2个node节点执行
yum install -y yum-utils device-mapper-persistent-data lvm2
#安装依赖包以便在系统上安装docker
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#添加Docker官方源并将它设置为docker-ce.repo文件
yum install -y docker-ce docker-ce-cli containerd.io
#yum安装docker-ce和docker客户端以及容器io
systemctl start docker.service
systemctl enable docker.service
#开机自启并现在启动docker 4、部署etcd集群
#master节点操作#本文的所有需要上传资源在博客资源包中K8S压缩包中均有
cd /usr/local/bin
chmod x /usr/local/bin/cfssl*
#将cfssl证书签发的工具和命令(cfssl、cfssljson、cfssl-certinfo)上传到/usr/local/bin目录下并添加执行权限
#本文的cfssl工具在博客资源包中K8S压缩包中有
#cfssl证书签发的工具命令
#cfssljson将 cfssl 生成的证书json格式变为文件承载式证书
#cfssl-certinfo验证证书的信息
#cfssl-certinfo -cert 证书名称 #查看证书的信息
mkdir /opt/k8s
cd /opt/k8s/
#上传 etcd-cert.sh(生成证书脚本) 和 etcd.sh(创建etcd集群脚本) 到 /opt/k8s/ 目录中
chmod x etcd-cert.sh etcd.sh
#添加可执行权限
mkdir /opt/k8s/etcd-cert
#创建etcd-cert目录用于存放etcd的证书
mv etcd-cert.sh /opt/k8s/etcd-cert
#移动生成证书的脚本到存放etcd证书的目录下
vim /opt/k8s/etcd-cert/etcd-cert.sh
#此脚本ip需要修改80到82行masternode1node2顺序保存退出
vim ./etcd-cert.sh
#修改脚本中的ip为自己的ip
./etcd-cert.sh
#生成CA证书、etcd 服务器证书以及私钥
ls /opt/k8s/etcd-cert
#查看生成的证书是否为4个.pem结尾3个.json结尾
#上传 etcd-v3.4.9-linux-amd64.tar.gz(etcd程序命令及证书) 到 /opt/k8s 目录中启动etcd服务
cd /opt/k8s/
tar zxvf etcd-v3.4.9-linux-amd64.tar.gz
ls etcd-v3.4.9-linux-amd64
#解压上传的etcd包内容为3个.md文件一个目录一个etcd和一个etcdctl启动控制脚本
mkdir -p /opt/etcd/{cfg,bin,ssl}
#创建用于存放etcd配置文件命令文件证书的目录
cd /opt/k8s/etcd-v3.4.9-linux-amd64
#进入解压的etcd包中
mv etcd etcdctl /opt/etcd/bin/
#将etcd启动和etcdctl控制脚本移动到创建的用于存放etcd命令文件的bin目录下
cd /opt/k8s/etcd-cert
#进入创建etcd证书的目录
cp ./*.pem /opt/etcd/ssl
#将本目录下所有证书全部拷贝一份到创建的用于存放etcd证书的路径ssl上
cd /opt/k8s
./etcd.sh etcd01 192.168.170.111 etcd02https://192.168.170.113:2380,etcd03https://192.168.170.114:2380
#进入存放etcd.sh部署etcd集群的脚本目录执行etcd.sh脚本 后面跟三个etcd集群的ip注意格式进入卡住状态等待其他节点加入这里需要三台etcd服务同时启动如果只启动其中一台后服务会卡在那里直到集群中所有etcd节点都已启动先操作不然不会生成system管理和配置文件重新开启一个shell查看etcd状态
#另一个窗口执行
ps -ef | grep etcd
#查看etcd集群状态是否为自己的三个etcd ip
scp -r /opt/etcd/ root192.168.170.113:/opt/
scp -r /opt/etcd/ root192.168.170.114:/opt/
scp /usr/lib/systemd/system/etcd.service root192.168.170.113:/usr/lib/systemd/system/
scp /usr/lib/systemd/system/etcd.service root192.168.170.114:/usr/lib/systemd/system/
#把etcd相关证书文件、命令文件和服务管理文件全部拷贝到另外两个etcd集群节点
#node1节点执行
vim /opt/etcd/cfg/etcd
#修改scp过来的etcd配置文件
#[Member]
ETCD_NAMEetcd02 #修改为etcd02
ETCD_DATA_DIR/var/lib/etcd/default.etcd
ETCD_LISTEN_PEER_URLShttps://192.168.170.113:2380 #修改为node1的ip地址
ETCD_LISTEN_CLIENT_URLShttps://192.168.170.113:2379 #修改为node1的ip地址
#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLShttps://192.168.170.113:2380 #修改为node1的ip地址
ETCD_ADVERTISE_CLIENT_URLShttps://192.168.170.113:2379 #修改为node1的ip地址
ETCD_INITIAL_CLUSTERetcd01https://192.168.170.111:2380,etcd02https://192.168.170.113:2380,etcd03https://192.168.170.114:2380
ETCD_INITIAL_CLUSTER_TOKENetcd-cluster
ETCD_INITIAL_CLUSTER_STATEnew
#node2节点执行
vim /opt/etcd/cfg/etcd
#修改scp过来的etcd配置文件
#[Member]
ETCD_NAMEetcd03 #修改为etcd03
ETCD_DATA_DIR/var/lib/etcd/default.etcd
ETCD_LISTEN_PEER_URLShttps://192.168.170.114:2380 #修改为node1的ip地址
ETCD_LISTEN_CLIENT_URLShttps://192.168.170.114:2379 #修改为node1的ip地址
#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLShttps://192.168.170.114:2380 #修改为node1的ip地址
ETCD_ADVERTISE_CLIENT_URLShttps://192.168.170.114:2379 #修改为node1的ip地址
ETCD_INITIAL_CLUSTERetcd01https://192.168.170.111:2380,etcd02https://192.168.170.113:2380,etcd03https://192.168.170.114:2380
ETCD_INITIAL_CLUSTER_TOKENetcd-cluster
ETCD_INITIAL_CLUSTER_STATEnew
#master节点执行
cd /opt/k8s
./etcd.sh etcd01 192.168.170.111 etcd02https://192.168.170.113:2380,etcd03https://192.168.170.114:2380
#重新启动etcd集群
#node1 node2执行
systemctl enable --now etcd
#设置开机启动并立即启动etcd然后回到master上查看是否成功。不是一直前台运行状态即成功
#master执行
ETCDCTL_API3 /opt/etcd/bin/etcdctl --cacert/opt/etcd/ssl/ca.pem --cert/opt/etcd/ssl/server.pem --key/opt/etcd/ssl/server-key.pem --endpointshttps://192.168.170.111:2379,https://192.168.170.113:2379,https://192.168.170.114:2379 endpoint health --write-outtable
#检查集群监控状态health全部未true即可
ETCDCTL_API3 /opt/etcd/bin/etcdctl --cacert/opt/etcd/ssl/ca.pem --cert/opt/etcd/ssl/server.pem --key/opt/etcd/ssl/server-key.pem --endpointshttps://192.168.170.111:2379,https://192.168.170.113:2379,https://192.168.170.114:2379 endpoint status --write-outtable
#检查集群状态有一个is leader为true即可
ETCDCTL_API3 /opt/etcd/bin/etcdctl --cacert/opt/etcd/ssl/ca.m --key/opt/etcd/ssl/server-key.pem --endpointshttps://192.168.170.114:2379 --write-outtable member list
##查看etcd集群成员列表
4.1在master01节点操作 4.2生成etcd证书上传etcd-cert.sh 和 etcd.sh 到 /opt/k8s/ 目录中 4.3创建用于生成CA证书etcd服务器证书以及私钥的目录 4.4上传 etcd-v3.4.9-linux-amd64.tar.gz 到 /opt/k8s 目录中启动etcd服务 4.5创建用于存放etcd配置文件命令文件证书的目录 注意进入卡住状态等待其他节点加入这里需要三台etcd服务同时启动如果只启动其中一台后服务会卡在那里直到集群中所有etcd节点都已启动可忽略这个情况
可以开启另外一个窗口来查看etcd进程是否正常 4.6把etcd相关证书文件、命令文件和服务管理文件全部拷贝到另外两个etcd集群节点 4.7在node1节点操作node2同样 4.8启动etcd并检查etcd集群状态 5、master部署组件
//在 master01 节点上操作
#上传 master.zip(master组件) 和 k8s-cert.sh(证书) 到 /opt/k8s 目录中解压 master.zip 压缩包
cd /opt/k8s/
unzip master.zip
cd master
chmod x *.sh
mv * /opt/k8s
#解压master组件包里面有master的4个组件脚本添加权限移动到/opt/k8s文件夹中
mkdir -p /opt/kubernetes/{bin,cfg,ssl,logs}
#创建kubernetes工作目录
mkdir /opt/k8s/k8s-cert
#创建k8s的证书存放路径
mv /opt/k8s/k8s-cert.sh /opt/k8s/k8s-cert
#将k8s证书移动到创建的k8s的证书存放路径
cd /opt/k8s/k8s-cert/
vim /opt/k8s/k8s-cert/k8s-cert.sh
#修改脚本中的ip56-60行顺序是第一个为master、第二个为master高可用ip、第三个为master虚拟ip、第四load balancer01master第五为load balancer01backup。第四第五可以删除。单节点master不用若后面需要做集群需要提前规划好ip
chmod x k8s-cert.sh
./k8s-cert.sh
#生成CA证书、相关组件的证书和私钥
ls *pem
#显示生成的证书等一共8个.pem结尾
cp ca*pem apiserver*pem /opt/kubernetes/ssl/
#将ca证书和apiserver证书拷贝到创建的存放证书的ssl/目录下
cd /opt/k8s/
tar zxvf kubernetes-server-linux-amd64.tar.gz
#上传 kubernetes-server-linux-amd64.tar.gz 到 /opt/k8s/ 目录中解压 kubernetes 压缩包
cd /opt/k8s/kubernetes/server/bin
#进入解压后的k8s的bin目录中将4个组件拷贝到创建的k8s存放bin文件的路径下
cp kube-apiserver kubectl kube-controller-manager kube-scheduler /opt/kubernetes/bin/
cp /opt/kubernetes/bin/* /usr/local/bin/
#将脚本程序存放到 /usr/local/bin下可以全局使用4个命令
cd /opt/k8s/
vim token.sh
[脚本内容]
#!/bin/bash
#获取随机数前16个字节内容以十六进制格式输出并删除其中空格
BOOTSTRAP_TOKEN$(head -c 16 /dev/urandom | od -An -t x | tr -d )
#生成 token.csv 文件按照 Token序列号,用户名,UID,用户组 的格式生成
cat /opt/kubernetes/cfg/token.csv EOF
${BOOTSTRAP_TOKEN},kubelet-bootstrap,10001,system:kubelet-bootstrap
EOF
#保存后退出
chmod x token.sh
./token.sh
cat /opt/kubernetes/cfg/token.csv
#创建 bootstrap token 认证文件apiserver 启动时会调用然后就相当于在集群内创建了一个这个用户接下来就可以用 RBAC 给他授权查看是否生成了csv文件
cd /opt/k8s/
./apiserver.sh 192.168.170.111 https://192.168.30.11:2379,https://192.168.170.113:2379,https://192.168.170.114:2379
#二进制文件、token、证书都准备好后开启 apiserver 服务
ps aux | grep kube-apiserver
#检查进程是否启动成功过滤kube-apiserver最上面一个后面会有-etcd-servershttps://192.168.170.111:2379,https://192.168.170.113:2379,https://192.168.170.114:2379 --bind-address192.168.170.111 --secure-port6443此信息为正常注意ip要改为自己的ip地址
netstat -natp | grep 6443
#过滤端口只有监控本机ip的6443为正常
cd /opt/k8s/
vim scheduler.sh
#修改脚本ip。KUBE_APISERVERhttps://192.168.170.111:6443为自己的apiserver的ip地址本文是master地址
./scheduler.sh
ps aux | grep kube-scheduler
#运行shceduler组件脚本查看服务是否正常
vim controller-manager.sh
#修改ipKUBE_APISERVERhttps://192.168.170.111:6443为自己的apiserver的ip地址本文是master地址
./controller-manager.sh
ps aux | grep kube-controller-manager
#运行controller-manager.sh组件脚本查看服务是否正常
vim ./admin.sh
#修改ipKUBE_APISERVERhttps://192.168.170.111:6443为自己的apiserver的ip地址本文是master地址
./admin.sh
#生成kubectl连接集群的kubeconfig文件
kubectl get cs
#通过kubectl工具查看当前集群组件状态正常状态如下
kubectl get cs
NAME STATUS MESSAGE ERROR
controller-manager Healthy ok
scheduler Healthy ok
etcd-2 Healthy {health:true}
etcd-1 Healthy {health:true}
etcd-0 Healthy {health:true}
kubectl version
#查看版本信息 上传 kubernetes-server-linux-amd64.tar.gz 到 /opt/k8s/ 目录中解压 kubernetes 压缩包 复制master组件的关键命令文件到 kubernetes工作目录的 bin 子目录中 创建 bootstrap token 认证文件apiserver 启动时会调用然后就相当于在集群内创建了一个这个用户接下来就可以用 RBAC 给他授权 二进制文件、token、证书都准备好后开启 apiserver 服务 #启动 scheduler 服务 #启动 controller-manager 服务 #生成kubectl连接集群的kubeconfig文件 6、部署worker node组件
#node1执行
mkdir -p /opt/kubernetes/{bin,cfg,ssl,logs}
#创建kubernetes工作目录
cd /opt/
unzip node.zip
#上传 node.zip 到 /opt 目录中解压 node.zip 压缩包获得kubelet.sh、proxy.shchmod x kubelet.sh proxy.sh
#master执行
cd /opt/k8s/kubernetes/server/bin
scp kubelet kube-proxy root192.168.30.12:/opt/kubernetes/bin/
#把 kubelet、kube-proxy 节点的组件拷贝到 node1 节点
mkdir /opt/k8s/kubeconfig
cd /opt/k8s/kubeconfig
chmod x kubeconfig.sh
vim kubeconfig.sh
./kubeconfig.sh 192.168.170.111 /opt/k8s/k8s-cert/
#上传kubeconfig.sh文件到/opt/k8s/kubeconfig目录中生成kubelet初次加入集群引导kubeconfig文件和kube-proxy.kubeconfig文件
scp bootstrap.kubeconfig kube-proxy.kubeconfig root192.168.170.113:/opt/kubernetes/cfg/
#把配置文件 bootstrap.kubeconfig、kube-proxy.kubeconfig 2个授权文件拷贝到 node1 节点
kubectl create clusterrolebinding kubelet-bootstrap --clusterrolesystem:node-bootstrapper --userkubelet-bootstrap
#RBAC授权使用户 kubelet-bootstrap 能够有权限发起 CSR 请求证书
kubectl create clusterrolebinding cluster-system-anonymous --clusterrolecluster-admin --usersystem:anonymous
#若执行失败可先给kubectl绑定默认cluster-admin管理员集群角色授权集群操作权限
##node1节点执行
cd /opt/
./kubelet.sh 192.168.170.113
ps aux | grep kubelet
#node1节点执行kubelet安装脚步注意要写node1节点的ip地址查看kubelet服务是否正常运行
#在 master01 节点上操作通过 CSR 请求
kubectl get csr
#可以查看有谁发起请求Pending 表示等待集群给该节点签发证书查看的内容如下
NAME AGE SIGNERNAME REQUESTOR CONDITION
node-csr-saZodXI7_rtwU6VJGMB1UKPx8sHUsAonx4l1BKJRXOo 53m kubernetes.io/kube-apiserver-client-kubelet kubelet-bootstrap Pendingkubectl certificate approve node-csr-saZodXI7_rtwU6VJGMB1UKPx8sHUsAonx4l1BKJRXOo
#执行命令授权csr请求并签发证书
kubectl get csr
#再次查看请求的csr状态Approved,Issued 表示已授权 CSR 请求并签发证书
kubectl get node
#查看节点状态为NotReady 由于网络插件还没部署
NAME STATUS ROLES AGE VERSION
192.168.170.113 NotReady none 108s v1.20.11
6.1在所有 node 节点上操作创建kubernetes工作目录 6.2上传 node.zip 到 /opt 目录中解压 node.zip 压缩包获得kubelet.sh、prox 6.3在master01节点上操作把 kubelet、kube-proxy 拷贝到 node 节点 6.4上传kubeconfig.sh文件到/opt/k8s/kubeconfig目录中生成kubelet初次加入集群引导kubeconfig文件和kube-proxy.kubeconfig文件 #kubeconfig 文件包含集群参数CA 证书、API Server 地址客户端参数上面生成的证书和私钥集群 context 上下文参数集群名称、用户名。Kubenetes 组件如 kubelet、kube-proxy通过启动时指定不同的 kubeconfig 文件可以切换到不同的集群连接到 apiserver。 6.5把配置文件 bootstrap.kubeconfig、kube-proxy.kubeconfig 拷贝到 node 节点 6.6RBAC授权使用户 kubelet-bootstrap 能够有权限发起 CSR 请求证书 7、在node01节点上操作
7.1启动kubelet 7.2在 master01 节点上操作通过 CSR 请求检查到 node01 节点的 kubelet 发起的 CSR 请求Pending 表示等待集群给该节点签发证书 7.3通过 CSR 请求 7.4查看节点由于网络插件还没有部署节点会没有准备就绪 NotReady 7.5在 node01 节点上操作加载 ip_vs 模块 启动proxy服务