承接上文k8s自动化运维六
k8s集群3个节点
vim /etc/hosts
172.16.0.108 k8s-master
172.16.0.109 k8s-nnode1
172.16.0.110 k8s-nnode2
查看linux版本
cat /etc/redhat-release
Anolis OS release 8.6
阿里云龙蜥操作系统完全兼容CentOS 8
备注
第1步~第8步,所有的节点都要操作
第9、10步Master节点操作
第11步Node节点操作
如果第9、10、11步操作失败,可以通过 kubeadm reset 命令来清理环境重新安装
1、关闭防火墙
systemctl stop firewalld
2、关闭selinux
setenforce 0
3、关闭swap
vim /etc/fstab
注释掉/etc/fstab这一行,永久关闭swap分区(k8s运行必须关闭掉swap分区)
4、添加主机名与ip对应关系
5、将桥接的IPV4流量传递到iptables 的链
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
6、安装docker
安装docker的过程,详见快速搭建自动化运维环境,安装好之后,查看docker文件驱动,
将docker文件驱动由默认的cgroupfs 改成 systemd,与k8s保持一致避免冲突
7、k8s yum源配置
vim /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes Repo
baseurl=https://mirrors.tuna.tsinghua.edu.cn/kubernetes/yum/repos/kubernetes-el7-x86_64/
gpgcheck=0
enabled=1
8、安装k8s
yum -y install kubelet-1.18.5 kubeadm-1.18.5 kubectl-1.18.5 --disableexcludes=kubernetes
# 设置k8s开机启动
systemctl enable kubelet
# 启动k8s后台daemon
systemctl start kubelet
9、部署Kubernetes Master
执行初始化操作之后,可以看到join命令
kubeadm join 172.16.0.108:6443 --token 4r2xdp.60g3flc392fjvtu4 \
--discovery-token-ca-cert-hash sha256:1985dddd2ac9ebef9151504366677ee37d22e6bf4b48b3f103485a1c9f5ff13c
在其他的节点上执行该命令,加入k8s集群即可。
由于kube-apiserver默认只启动安全访问接口6443,而不启动非安全访问接口8080,kubectl是通过8080端口访问k8s kubelet的,所以要修改配置文件,使其支持8080端口访问:
vim /etc/kubernetes/manifests/kube-apiserver.yaml
a、把–insecure-port=0修改为:–insecure-port=8080
b、增加或修改-insecure-bind-address=0.0.0.0
10、安装calico网络
至此,k8s master节点创建完毕。
11、Node节点加入集群(在k8s-nnode1和k8s-nnode2)
向集群添加新节点,执行在kubeadm init输出的kubeadm join命令。
在k8s-nnode1和k8s-nnode2都执行
kubeadm join 172.16.0.108:6443 --token 4r2xdp.60g3flc392fjvtu4 \
--discovery-token-ca-cert-hash sha256:1985dddd2ac9ebef9151504366677ee37d22e6bf4b48b3f103485a1c9f5ff13c
k8s集群网络不通问题排查
kubenetes安装calico发现其中一个处于Running,但READY列却显示不正常
当前这个pod所在的宿主机的ip是172.16.0.110,并且配置到172.16.0.108和172.16.0.109的路由关系。
如果ip不是宿主机ip,怎么解决?
发现宿主机网卡名称是eth33
这是因为docker 1.13.0 更改了默认的防火墙规整,FORWARD 改为了 drop,导致被防火墙 drop 了。
2个解决方案
通过navicat kill 数据库进程
如何配置nginx https
启动成功之后,就可以通过http://127.0.0.1:30084访问web服务了
在宿主机上启动一个nginx,暴露80端口,配置https
yum -y install nginx
systemctl start nginx
vim /etc/nginx/nginx.conf
具体内容:https://gitee.com/pingfanrenbiji/k8s-nginx/blob/master/https
指定pod在某一个node上启动
Warning FailedScheduling 15s (x3 over 17s) default-scheduler 0/3 nodes are available:
1 node(s) had taint {node-role.kubernetes.io/master: }, that the pod didn't tolerate, 2 node(s) didn't match node selector.
需要去除master节点的node-role.kubernetes.io/master污点
kubectl taint node galaxy-ecs-01 node-role.kubernetes.io/master:NoSchedule-
可以看到这个pod被调度到master节点上了
留言与评论(共有 0 条评论) “” |