logo资料库

kubernetes 安装总结.docx

第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
资料共7页,全文预览结束
准备(注意把resolv.conf的nameserver先配好)
1 centOS 7
2 以root登陆(建议)
3 关闭防火墙
4 关闭SElinux
5 关闭swap
6 配置系统内核参数使流过网桥的流量也进入iptables/netfilter框架中,开启ipv4的
7 配置阿里云镜像
安装相关工具
1 安装docker以及kubeadm相关工具
2 启动docker以及kubeadm服务
3 初始化安装K8S Master
3.1 下载K8S相关镜像
3.1 下载K8S相关镜像
5.配置kubectl认证信息(Master节点操作)
6.安装网络组件
7.在本机运行pods
搭建新的NODE并join进集群
准备
join
默认token的有效期为24小时,当过期之后,该token就不可用了。解决方法如下:
关闭node
准备(注意把 resolv.conf 的 nameserver 先配好) 1 centOS 7 2 以 root 登陆(建议) 3 关闭防火墙 关闭 firewall,iptables: systemctl stop firewalld.service #停止 firewall systemctl disable firewalld.service firewall-cmd --state #查看默认防火墙状态(关闭后显示 not running,开启后显示 running) 4 关闭 SElinux #禁止 firewall 开机启动 暂时关闭: setenforce 0 永久关闭: vi /etc/selinux/config 打开 selinux 配置文件 找到 SELINUX=参数 参数可选(enforcing、permissive、disabled) disabled 即为关闭 SElinux 5 关闭 swap swapoff -a(永久关闭 SWAP vi /etc/fstab #注释掉 SWAP 分区项,即可 # swap was on /dev/sda11 during installation #UUID=0a55fdb5-a9d8-4215-80f7-f42f75644f69 none 0) swap sw 0 6 配置系统内核参数使流过网桥的流量也进入 iptables/netfilter 框架中,开启 ipv4 的 forwarding 在 vi /etc/sysctl.conf 中添加以下配置: net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 net.ipv4.ip_forward=1 如果报出参数不存在,则执行 modprobe br_netfilter 即可 并执行 sysctl -p 7 配置阿里云镜像
cat < /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el 7-x86_64 enabled=1 gpgcheck=0 EOF yum -y install epel-release yum clean all yum makecache 安装相关工具 以下内容于 51CTO 博客作者 Devin 的原创作品整理而来,如需转载,请注明出处 1 安装 docker 以及 kubeadm 相关工具 yum -y install docker kubelet kubeadm kubectl(不指定版本就是安装最新 版本,也可以指定版本,如 yum -y install docker kubelet-1.15.2 kubeadm-1.15.2 kubectl-1.15.2) 2 启动 docker 以及 kubeadm 服务 systemctl enable docker && systemctl start docker systemctl enable kubelet && systemctl start kubelet 3 初始化安装 K8S Master 下载完成后,执行 kubeadm init: kubeadm init --kubernetes-version=v1.15.2 --pod-network-cidr=192.158.0.0/16(前两位不要跟 hostip 重叠) 执行过程中可能会出现版本问题,此时自行按照版本提示使用 docker pull ...获得相应 镜像并改名即可 上面的命令大约需要 1 分钟的过程,期间可以观察下 tail -f /var/log/message 日志文件的输 出,掌握该配置过程和进度。
上面的命令不会成功需要根据失败的提示下载需要的组件版本,下载完成后还要把镜像名称 中“-amd64”去掉 3.1 下载 K8S 相关镜像 因为无法直接访问 gcr.io 下载镜像,所以需要配置一个国内的容器镜像加速器: 登录 https://cr.console.aliyun.com/ 在页面中找到并点击镜像加速按钮,即可看到属于自己的专属加速链接,选择 Centos 版本 后即可看到配置方法。 解决完加速器的问题之后,开始下载 k8s 相关镜像,下载后将镜像名改为 k8s.gcr.io/开头的 名字,以便 kubeadm 识别使用:(注意将核心组件版本号替换为当前安装的版本,(如果不 能确定版本,可以先运行下一步 kubeadm 安装,kubeadm 会提示确实的组件和版本,如果 安装最新的可以不指定版本,另直接从 gcr.k8s.io 或 quay.io 下载很慢需要用镜像) #!/bin/bash images=(kube-proxy-amd64:v1.15.2 kube-scheduler-amd64:v1.15.2 kube-controller-manager-amd64:v1.15.2 kube-apiserver-amd64:v1.15.2 etcd:3.3.10 pause-amd64:3.1 kubernetes-dashboard-amd64:v1.8.3 k8s-dns-sidecar-amd64:1.14.8 k8s-dns-kube-dns-amd64:1.14.8 k8s-dns-dnsmasq-nanny-amd64:1.14.8) for imageName in ${images[@]} ; do docker pull mirrorgooglecontainers/$imageName docker tag mirrorgooglecontainers/$imageName k8s.gcr.io/$imageName docker rmi mirrorgooglecontainers/$imageName done #拉取 coredns docker pull coredns/coredns:1.3.1 docker tag coredns/coredns:1.3.1 k8s.gcr.io/coredns:1.3.1 docker rmi coredns/coredns:1.3.1 #去掉镜像的-amd64 后缀 docker tag k8s.gcr.io/kube-proxy-amd64:v1.15.2 k8s.gcr.io/kube-proxy:v1.15.2 docker rmi k8s.gcr.io/kube-proxy-amd64:v1.15.2 docker tag k8s.gcr.io/kube-scheduler-amd64:v1.15.2 k8s.gcr.io/kube-scheduler:v1.15.2
docker rmi k8s.gcr.io/kube-scheduler-amd64:v1.15.2 docker tag k8s.gcr.io/kube-controller-manager-amd64:v1.15.2 k8s.gcr.io/kube-controller-manager:v1.15.2 docker rmi k8s.gcr.io/kube-controller-manager-amd64:v1.15.2 docker tag k8s.gcr.io/kube-apiserver-amd64:v1.15.2 k8s.gcr.io/kube-apiserver:v1.15.2 docker rmi k8s.gcr.io/kube-apiserver-amd64:v1.15.2 docker tag k8s.gcr.io/pause-amd64:3.1 k8s.gcr.io/pause:3.1 docker rmi k8s.gcr.io/pause-amd64:3.1 3.1 下载 K8S 相关镜像 kubeadm init --kubernetes-version=v1.15.2 --pod-network-cidr=192.158.0.0/16 上面最后一段的输出信息保存一份,后续添加工作节点还要用到。 类似于 kubeadm join 10.211.55.10:6443 --token 1xuwcb.oijnat5tkla6r384 --discovery-token-ca-cert-hash sha256:bcbf083a3fab2422ae0615b421d71a2275f2a974746989e59672a100a071ba 30 5.配置 kubectl 认证信息(Master 节点操作) 对于非 root 用户 mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config 对于 root 用户 export KUBECONFIG=/etc/kubernetes/admin.conf 也可以直接放到~/.bash_profile echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile 6.安装网络组件 这里我们使用 Calico: kubectl apply -f \
https://docs.projectcalico.org/v3.1/getting-started/kubernetes/instal lation/hosted/kubeadm/1.7/calico.yaml(需要修改里面 192.158 与 kubeadm 中的 cidr 相同) 然后使用 watch kubectl get pods --all-namespaces 检查 coreDNS 运行状态,如 果为 running 则可以继续,(Calico 的 pod 在启动是会拉取镜像 quay.io/calico/node:v3.1.7, quay.io/calico/cni:v3.1.7,很慢,长时间处于 ContainerCreating 状态,然后失败需要,可 用用命令 kubectl get pods –all-namespace 和 kubctl describe pod xxxxxx -n kube-system 查看问题) #docker pull quay.io/calico/node:v3.1.7 docker pull quay.azk8s.cn/calico/node:v3.1.7 docker tag quay.azk8s.cn/calico/node:v3.1.7 quay.io/calico/node:v3.1.7 docker rmi quay.azk8s.cn/calico/node:v3.1.7 #docker pull quay.io/calico/c:v3.1.7 docker pull quay.azk8s.cn/calico/cni:v3.1.7 docker tag quay.azk8s.cn/calico/cni:v3.1.7 quay.io/calico/cni:v3.1.7 docker rmi quay.azk8s.cn/calico/cni:v3.1.7 #dcker pull quay.io/coreos/etcd:v3.1.10 docker pull quay.azk8s.cn/coreos/etcd:v3.1.10 docker tag quay.azk8s.cn/coreos/etcd:v3.1.10 quay.io/coreos/etcd:v3.1.10 docker rmi quay.azk8s.cn/coreos/etcd:v3.1.10 #"quay.io/calico/kube-controllers:v3.1.7 docker pull quay.azk8s.cn/calico/kube-controllers:v3.1.7 docker tag quay.azk8s.cn/calico/kube-controllers:v3.1.7 quay.io/calico/kube-controllers:v3.1.7 docker rmi quay.azk8s.cn/calico/kube-controllers:v3.1.7 7.在本机运行 pods 执行 kubectl taint nodes --all node-role.kubernetes.io/master- 允许 master 上调度 pods 搭建新的 NODE 并 join 进集群 准备 首先安装新的虚拟机并安装 CentOS,然后按照本文第一部分安装 kubeadm 和 docker 等组 件,并下载 pause, kube-proxy, calico-node,calico-cni docker pull mirrorgooglecontainers/kube-proxy-amd64:v1.15.2 docker tag k8s.gcr.io/kube-proxy-amd64:v1.15.2 k8s.gcr.io/kube-proxy:v1.15.2 docker rmi k8s.gcr.io/kube-proxy-amd64:v1.15.2 docker pull mirrorgooglecontainers/pause-amd64:3.1 docker tag k8s.gcr.io/pause-amd64:3.1 k8s.gcr.io/pause:3.1
docker rmi k8s.gcr.io/pause-amd64:3.1 #docker pull quay.io/calico/node:v3.1.7 docker pull quay.azk8s.cn/calico/node:v3.1.7 docker tag quay.azk8s.cn/calico/node:v3.1.7 quay.io/calico/node:v3.1.7 docker rmi quay.azk8s.cn/calico/node:v3.1.7 docker pull quay.azk8s.cn/calico/cni:v3.1.7 docker tag quay.azk8s.cn/calico/cni:v3.1.7 quay.io/calico/cni:v3.1.7 docker rmi quay.azk8s.cn/calico/cni:v3.1.7 join 将 master init 后输出的提示在新机器上执行 kubeadm join 10.211.55.10:6443 --token 1xuwcb.oijnat5tkla6r384 --discovery-token-ca-cert-hash sha256:bcbf083a3fab2422ae0615b421d71a2275f2a974746989e59672a100a071ba 30 即可加入集群 默认 token 的有效期为 24 小时,当过期之后,该 token 就不可用了。解决方法 如下: 重新生成新的 token kubeadm token create kubeadm token list 获取 ca 证书 sha256 编码 hash 值 openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //' 节点加入集群 kubeadm join --token aa78f6.8b4cafc8ed26c34f --discovery-token-ca-cert-hash sha256:... 关闭 node 在 master 执行 kubectl drain --delete-local-data --force --ignore-daemonsets kubectl delete node 在该 node 执行 kubeadm reset
即可关闭该 node
分享到:
收藏