| hostname | ip | |
|---|---|---|
| k8s-master | 192.168.18.160 | |
| k8s-node01 | 192.168.18.161 | |
| k8s-node02 | 192.168.18.162 | |
| k8s-node03 | 192.168.18.163 |
1 |
Step 2: 设置国内源
1 | # yum -y install wget |
安装依赖
1 | # yum install -y vim wget curl ntpdate ntp net-tools git \ |
关闭没用的服务
1 | systemctl disable NetworkManager |
Step 1: 准备 Hostname, SELinux and Firewall
1 | # hostnamectl set-hostname k8s-master |
禁用SELinux
因为 sed -i /etc/sysconfig/selinux (selinux文件是/etc/selinux/config的软链接) 配置文件重启SELINUX没有关闭,才发现原来sed -i是不能直接修改软链接文件的,如下我修改之后的后果,发现链接文件不再是链接文件了。
1 | # setenforce 0 |
关闭 交换分区
1 | # 临时关闭 |
关闭交换分区前
1 | [root@localhost ~]# free -m |
关闭交换分区后
1 | [root@localhost ~]# free -m |
1 | ## 启用交换分区 |
/etc/fstab, 如果永久关闭注释掉 swap 分区那行即可
1 | [root@localhost ~]# cat /etc/fstab |
设置防火墙规则及转发
1 |
|
调整内核参数
1 | # cat > /etc/sysctl.d/k8s.conf <<EOF |
执行命令生效
1 | # sysctl -p /etc/sysctl.d/k8s.conf |
**设置 rsyslogd 和 systemd journald **
1 | ## 持久化保存日志的目录 |
升级系统内核
1 | # rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm |
设置新的内核为grub2的默认版本
方法1:通过 grub2-set-default 0 命令设置
其中 0 是上面查询出来的可用内核
1 | # grub2-set-default 0 |
方法2、编辑 /etc/default/grub 文件
设置 GRUB_DEFAULT=0,通过上面查询显示的编号为 0 的内核作为默认内核:
1 | GRUB_TIMEOUT=5 |
生成 grub 配置文件并重启
1 | # grub2-mkconfig -o /boot/grub2/grub.cfg |
删除旧内核(可选)
1 | ## 查看系统中全部的内核 |
kube-proxy 开启 ipvs 的前置条件
inux kernel 4.19版本已经将nf_conntrack_ipv4 更新为 nf_conntrack
1 | # modprobe br_netfilter |
1 | ## 安装ipvs相关软件包 |
安装docker
1 | # yum install -y yum-utils |
docker配置文件docker-daemon.json详解
重启服务器 重新设置 新的内核引导
1 | # grub2-set-default "CentOS Linux (5.4.144-1.el7.elrepo.x86_64) 7 (Core)" |
Step 3: 设置 Kubernetes 国内源
1 | # cat << EOF > /etc/yum.repos.d/kubernetes.repo |
Step 6: Install Kubeadm
1 | # yum install kubeadm-1.22.1 -y |
查看依赖的镜像
1 | # kubeadm config images list |
下载k8s依赖镜像
通过阿里云镜像下载k8s依赖组件
1 | ## 下载镜像 |
下载时,还没有 coredns:v1.8.4,单独处理 coredns
1 | docker pull coredns/coredns:1.8.4 |
1 | ## 指定安装版本 |
1 | nodeRegistration: |
1 | # kubeadm reset |
error execution phase upload-config/kubelet: Error writing Crisocket information for the control-plane node: timed out waiting for the condition
1 | 拉取镜像失败 |
open /run/flannel/subnet.env: no such file or directory
1 | 需要指定网络,或者指定的方式不对 |
重置 node 节点
1 | 删除节点 |
1 |
1 | ## kubeadm 安装的 k8s 集群 delete node 后重新添加回集群问题解决 |
部署网络
1 | https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel-aliyun.yml |
启动失败
1 | # journalctl -xefu kubelet |
https://www.python2.net/questions-1171657.htm
更换 docker 源
1 | # mkdir -p /etc/docker |
1 | # systemctl restart docker |
连接 Harbor
1 | kubectl create secret docker-registry docker-harbor \ |
1 | kubectl get secret docker-harbor --output="jsonpath={.data.\.dockerconfigjson}" | base64 -d |
创建时指定命名空间
1 | kubectl --namespace kube-system \ |
常用命令:
1 | kubectl api-versions |
pod
1 | kubectl exec -it demo-deployment-6687bf488-5xnz6 -- /bin/sh |
svc
1 | <服务名称>.<工作负载所在命名空间>.svc.cluster.local:<端口号> |
headless
1 | 域名格式:$(podname).(headless server name).namespace.svc.cluster.local |
部署kubernetes-dashboard
https://github.com/kubernetes/dashboard
1 | # https://raw.githubusercontent.com/kubernetes/dashboard/v2.3.1/aio/deploy/recommended.yaml |
创建管理员
dashboard-adminuser.yaml
1 | # cat > dashboard-adminuser.yaml << EOF |
说明:创建了一个叫admin-user的服务账号,并放在kubernetes-dashboard 命名空间下,并将cluster-admin角色绑定到admin-user账户,这样admin-user账户就有了管理员的权限。默认情况下,kubeadm创建集群时已经创建了cluster-admin角色,我们直接绑定即可。
创建登录用户
1 | # kubectl apply -f dashboard-adminuser.yaml |
查看admin-user账户的token
1 | # kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}') |
ingress
https://kubernetes.github.io/ingress-nginx/
https://github.com/kubernetes/ingress-nginx
1 |
|
1 |
|
1 | 替换掉里面的两个镜像地址 |
常用命令
1 | ## 获取namespace信息 |
1 | pod-network-cidr是pod网络 |
1 | docker registry 私服密码 |
参考文献
https://blog.csdn.net/qq_40460909/article/details/90521561
https://www.freesion.com/article/6878979989/