这里面是我准备好的rpm包,有需要可自行下载,不需要的朋友也可自行官网下载
- 做的前提需要把自己需要的rpm包提前放到app目录下!!!
- 设置hostname
- hostnamectl set-hostname 机器名
- 修改/etc/hosts,加入一行”本机ip 机器名”,例如
192.168.12.33 master
- 升级内核
- 进入app/rpm/kernel执行yum localinstall *.rpm将安装好4.17.11-1.el7.elrepo版本的内核,然后执行reboot重启
- 配置新内核为开机默认内核(此方法适配bios,uefi略有不同自行百度)
- awk -F\' /^menuentry/{print\$2} /etc/grub2.cfg列出已安装内核,从上到下为编号0开始的列表,编号可能不显示
- grub2-set-default 刚刚4.17内核的编号
- cat /boot/grub2/grubenv |grep saved查看saved_entry是否为刚刚设置的编号
- grub2-mkconfig -o /boot/grub2/grub.cfg重建grub2
- 重启后执行uname -a查看是否为想要的内核
- 配置内核参数
- 创建/etc/modules-load.d/k8s.conf文件内容为br_netfilter
- 创建/etc/sysctl.d/k8s.conf文件,内容为
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
- sysctl --system
- 关闭并禁用防火墙 systemctl stop firewalld&& systemctl disable firewalld
- 禁用selinux
- 先当场禁用setenforce 0
- 永久禁用(重启后生效)修改/etc/selinux/config将SELINUX=enforcing改为SELINUX=disabled
- 禁用swap
- (如果已挂载)卸载交换分区 swapoff -a
- 将/etc/fstab中的swap行注释掉
安装Docker
- 进入app/rpm/docker执行yum localinstall *.rpm将安装好20.10.12版本的docker
- 启动并设置docker开机启动systemctl start docker&&systemctl enable docker
- 修改docker的cgroup driver
- systemctl stop docker停止docker服务
- 创建/etc/docker/daemon.json文件,内容为
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": { "max-size": "100m" },
"storage-driver": "overlay2"
}
1. systemctl start docker重启doc
- ker
导入平台镜像
进入app/images使用docker load xxx.tar.gz命令一一导入
安装kubernetes
进入app/rpm/kubernetes执行yum localinstall *.rpm将安装好1.16.3版本的kubernetes
初始化节点
- 执行kubeadm init --kubernetes-version=v1.16.3 --apiserver-advertise-address=xxx.yyy.zzz.uuuu --pod-network-cidr=10.244.0.0/16
--apiserver-advertise-address内容为本机ip地址,pod-network-cidr不要变更,此为flannel的默认服务地址范围
初始化输出结果的三条命令一定要执行,不然初始化不会成功。
- 执行kubectl get pod -A -o wide检查容器状态,应该一共有七个容器,除了两个coredns是pending外其他容器都应为ready并且在running
- 为了使我们的master节点也能部署服务,执行kubectl taint nodes 主机名 node-role.kubernetes.io/master-
- 部署flannel
- 提前下载好容器,这里我忘记放进install包了,可以试下直接执行4.2,不成功再去下载
- 执行kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
- 应出现类似以下结果
podsecuritypolicy.extensions/psp.flannel.unprivileged created clusterrole.rbac.authorization.k8s.io/flannel created clusterrolebinding.rbac.authorization.k8s.io/flannel created serviceaccount/flannel created configmap/kube-flannel-cfg created daemonset.extensions/kube-flannel-ds-amd64 created daemonset.extensions/kube-flannel-ds-arm64 created daemonset.extensions/kube-flannel-ds-arm created daemonset.extensions/kube
-flannel-ds-ppc64le created daemonset.extensions/kube-flannel-ds-s390x created
- 执行kubectl get pod -A -o wide在kube-system明明空间内应有flannel容器
安装helm
- 在app内执行tar zxf helm-v3.7.2-linux-amd64.tar.gz
- 将helm添加进path, mv linux-amd64/helm /usr/local/bin/helm
拉取nginx
- 添加应用仓库,执行helm repo add bitnami https://charts.bitnami.com/bitnami
- helm install my-release bitnami/nginx
部署nginx
执行helm install my-release bitnami/nginx将刚刚拉取的nginx镜像部署为my-release
建立服务
- 执行kubectl expose deployment my-release-nginx --type=NodePort --name=nginx-test,将my-release暴露为nodeport模式的nginx-test服务
- 执行kubectl describe services nginx-test可以检查刚刚部署的服务,其中的nodeport是我们可以从外部访问服务的端口,targetport是nodeport映射入容器的端口
- 访问ip:nodeport此时我们应该能看到nginx的欢迎页面