网站特效 素材,网站开发教育,六年级毕业留言册页面设计模板,wordpress导航栏透明系列文章目录 1.kubeadm安装K8s高可用集群之基础环境配置 2.kubeadm安装K8s集群之高可用组件keepalivednginx及kubeadm部署 3.kubeadm安装K8s高可用集群之集群初始化及master/node节点加入集群calico网络插件安装 kubeadm安装K8s高可用集群之集群初始化及master/node节点加入ca…系列文章目录 1.kubeadm安装K8s高可用集群之基础环境配置 2.kubeadm安装K8s集群之高可用组件keepalivednginx及kubeadm部署 3.kubeadm安装K8s高可用集群之集群初始化及master/node节点加入集群calico网络插件安装 kubeadm安装K8s高可用集群之集群初始化及master/node节点加入calico网络插件安装 1.设置集群kubeadm-config配置文件2.安装calico网络插件3.其他master节点加入集群4.node节点加入命令 1.设置集群kubeadm-config配置文件
输入命令获取默认的kubeadm-config.yaml然后再做出调整
kubeadm config print init-defaults kubeadm-config.yaml输入命令对默认文件的内容进行覆盖调整后的kubeadm-config.yaml文件的内容如下 提示请根据注释和实际情况的需要对配置中必要的内容进行调整 cat kubeadm-config.yaml EOF
apiVersion: kubeadm.k8s.io/v1beta2
bootstrapTokens:
- groups:- system:bootstrappers:kubeadm:default-node-tokentoken: abcdef.0123456789abcdef #设置tokenttl: 24h0m0susages:- signing- authentication
kind: InitConfiguration
localAPIEndpoint:advertiseAddress: 192.168.0.105bindPort: 6443
nodeRegistration:criSocket: /var/run/dockershim.sockname: k8s01-m1 #设置节点名字hoststaints:- effect: NoSchedulekey: node-role.kubernetes.io/master
---
apiServer:certSANs:- k8s01-m1 #设置master节点1的hosts请根据实际情况调整- k8s02-m2 #设置master节点2的hosts请根据实际情况调整- 192.168.0.105 #设置master节点1的ip请根据实际情况调整- 192.168.0.106 #设置master节点2的ip请根据实际情况调整- 192.168.200.18 #设置vip地址请根据实际情况调整- 127.0.0.1extraArgs:authorization-mode: Node,RBACtimeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta2
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controlPlaneEndpoint: 192.168.200.18:16443 #设置vip地址即设置的虚拟ipnginx监听的端口
controllerManager: {}
dns:type: CoreDNS
etcd:local:dataDir: /var/lib/etcd
imageRepository: registry.aliyuncs.com/google_containers #修改为阿里云仓库
kind: ClusterConfiguration
kubernetesVersion: v1.20.8 #设置需要安装的kubernetes版本
networking:dnsDomain: cluster.localpodSubnet: 10.244.0.0/16 #设置pod的网段serviceSubnet: 10.96.0.0/12 #server的网段
scheduler: {}
---
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
mode: ipvs #开启ipvs模式
---
EOF可以选择将修改的配置加载为新的配置执行以下命令执行命令后会生成一个new.yaml文件
kubeadm config migrate --old-config kubeadm-config.yaml --new-config new.yaml拉取配置文件中设置的相关镜像
kubeadm config images pull --config kubeadm-config.yaml可以执行命令查看拉取的镜像docker images 如图 注意以上步骤所有的节点都需要执行 接下来只需要执行命令初始化集群即可
kubeadm init --config kubeadm-config.yaml --upload-certs注意 1.只有主节点master1执行kubeadm init初始化 2.其他master、node节点无需执行待主节点初始化完成后kubeadm join命令即可 提示如果集群初始化失败可以执行命令进行重置调整后再次初始化 kubeadm reset -f iptables -F iptables -t nat -F iptables -t mangle -F iptables -X 初始化成功可以看到以下内容 然后根据日志提示进行kubectl进行授权执行以下命令并将下方的这些内容记录一下后面节点加入集群时需要用到
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config有时候可能会出现权限、环境变量的问题 权限问题给文件赋予权限即可chmod 755 $HOME/.kube/config 环境变量问题配置以下环境变量即可export KUBECONFIG$HOME/.kube/config 可以输入命令查看po的状态因为没安装网络插件的原因有的po是起不来的
kubectl get po -n kube-system2.安装calico网络插件
主节点安装网络插件即可其他节点在加入集群后会自动拉取网络插件相关的po;
首先需要在官网下载一个配置文件执行命令如下
curl https://docs.projectcalico.org/archive/v3.18/manifests/calico.yaml -O注意我这里是安装的3.18版本calico官网有说明calico可适用的对应k8s版本请根据实际版本情况选择版本安装 文件下载好后我们需要对calico.yaml文件进行修改
搜索CALICO_IPV4POOL_CIDR关键字其中name和value参数默认是注释掉的将注释放开并将value的值改成与kubeadm-config.yam中的networking -- podSubnet中的ip一致即与集群设置的pod的虚拟网段ip保持一致 注意修改时注意格式 - name: CALICO_IPV4POOL_CIDRvalue: 10.244.0.0/16 #与集群设置的pod的虚拟网段ip保持一致如图我这里的pod网段是10.244.0.0 calico.yaml中同样改为对应的 然后执行命令进行部署
kubectl apply -f calico.yaml如图部署成功 注意网络不好镜像可能会拉不下来 可以输入命令查看po的名称kubectl get po -n kube-system 根据名字查看状态不正确的po报错的原因如kubectl describe pod -n kube-system calico-node-q6ksq 如果是因为拉取失败的话可以尝试手动拉取对应镜像如docker pull docker.io/calico/cni:v3.18.6 如图查找calico对应的node名称 查看报错原因 3.其他master节点加入集群
创建证书存放目录并上传证书
在需要加入集群的新master节点中创建证书存放目录 mkdir -p /etc/kubernetes/pki/etcd mkdir -p ~/.kube/然后把主节点master1节点的证书拷贝到master2上
scp -r /etc/kubernetes/pki/ca.* rootk8s02-m2:/etc/kubernetes/pki/
scp -r /etc/kubernetes/pki/sa.* rootk8s02-m2:/etc/kubernetes/pki/
scp -r /etc/kubernetes/pki/front-proxy-ca.* rootk8s02-m2:/etc/kubernetes/pki
scp -r /etc/kubernetes/pki/etcd/ca.* rootk8s02-m2:/etc/kubernetes/pki/etcd
scp -r /etc/kubernetes/admin.conf rootk8s02-m2:/etc/kubernetes/验证网络是否畅通
在新节点上验证负载均衡的网络地址是否畅通
#ip端口修改为实际的ip端口
curl -k https://192.168.200.18:16443如果网络畅通则可以直接执行第3步输入命令执行进行加入命令如果网络连接不通则需要进行排查如我这里由于前面设置的 vip地址controlPlaneEndpoint: 192.168.200.18:16443与主机不在同一个网络除了主节点外其他节点无法直接访问需要添加路由才行 临时添加路由不推荐此方法机器重启后就会失效适合用来临时测试 首先查看节点是否有vip对应的路由
ip route不存在则加一条
#192.168.200.0/24.0/24后面几位不变前面3位和你的vip地址相同即可
#192.168.0.1是主机实际的默认网关
#ens32是主机、网卡名
ip route add 192.168.200.0/24 dev 192.168.0.1 dev ens32刷新缓存后再次查询是否加入成功
ip neigh flush all
ip route成功添加后测试一下网络是否正常正常则可执行第3步加入集群
#ip端口修改为实际的ip端口
curl -k https://192.168.200.18:16443永久添加路由(推荐使用机器重启后不会失效)
编辑/etc/rc.local文件并添加内容
vim /etc/rc.local在文件中插入以下内容
#192.168.200.0/24.0/24后面几位不变前面3位和你的vip地址相同即可
#192.168.0.1是主机实际的默认网关
#ens32是主机、网卡名
ip route add 192.168.200.0/24 dev 192.168.0.1 dev ens32给文件添加执行权限并设置为开机自启后启动服务
chmod x /etc/rc.d/rc.local
systemctl enable rc-local
systemctl start rc-local将机器重启验证路由是否自动添加了
reboot
#清除缓存
ip neigh flush all
#查看路由表中是否添加
ip route成功添加后测试一下网络是否正常正常则可执行第3步加入集群
#ip端口修改为实际的ip端口
curl -k https://192.168.200.18:16443加入节点命令 首先我们在主节点查看是否存在证书
kubectl get secret -n kube-system | grep kubeadm-certs如果不存在则执行命令创建一个证书并获取新的加入集群的命令
kubeadm init phase upload-certs --upload-certs获取新的加入集群的命令
kubeadm token create --print-join-command存在证书则直接执行主机节点初始化时给出的命令进行加入集群
kubeadm join 192.168.200.18:16443 --token abcdef.0123456789abcdef \--discovery-token-ca-cert-hash sha256:b396cdc01129c9e9d03c072d3b65536164a6a1a23a80bed4305452603012ea3b \--control-plane --certificate-key d9742f79ef7a216dbe2aca5ebf34d0dd12a9ad46fe735dcca199984f2e1408b7注意加入集群master和node的命令是一样的都是kubeadm join区别在于--control-plane参数有该参数则是加入master节点没有则是加入node节点 成功加入集群后根据日志提示进行kubectl进行授权执行以下命令
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config加入成功 可以输入命令查看节点是否加入成功
kubectl get node通过命令查看新增主机上的po状态是否正常
kubectl get po -n kube-system查看某po的详情日志
kubectl describe pod -n kube-system poNmae4.node节点加入命令
node节点的加入很简单只需要安装了kubeadm、kubectl、kubelet即可执行kubeadm join命令同master差不多唯一的区别是不需要--control-plane参数 注意node节点加入集群不需要--control-plane参数 设置的vip不和主机ip在同一个网段时需要手动添加路由规则添加方法参考上文的master节点加入 node节点加入集群
建议先测以下网络是否畅通
#ip端口修改为实际的ip端口
curl -k https://192.168.200.18:16443网络正常则直接执行命令加入即可
kubeadm join 192.168.200.18:16443 --token abcdef.0123456789abcdef \--discovery-token-ca-cert-hash sha256:b396cdc01129c9e9d03c072d3b65536164a6a1a23a80bed4305452603012ea3b忘记命令处理方法
如果不记得加入的命令了可以执行以下命令获取新的加入集群的命令
kubeadm token create --print-join-command重置node节点 提示如果加入集群失败则可以进行重置 输入命令重置
kubeadm reset -f重置完成后根据日志提示删除以下文件
rm -rf /etc/cni/net.d
rm -rf $HOME/.kube/config
rm -rf /etc/kubernetes/kubelet.conf清除iptables中所有规则后重新加载配置再次输入命令进入加入集群即可
iptables -F iptables -t nat -F iptables -t mangle -F iptables -X
systemctl daemon-reload