centos7.2 安装k8s v1.11.0
前言
最近由于公司业务发展到了瓶颈,原有的技术架构已经逐渐无法满足业务开发和测试的需求,出现了应用测试环境搭建复杂,有许多套(真的很多很多)应用环境,应用在持续集成/持续交付也遇到了很大的困难,经过讨论研究决定对应用和微服务进行容器化,这就是我首次直面docker和k8s的契机.
Kubernetes 介绍
Kubernetes 是 Google 团队发起的开源项目,它的目标是管理跨多个主机的容器,提供基本的部署,维护以及运用伸缩,主要实现语言为 Go 语言。 Kubernetes的特点:
- 易学:轻量级,简单,容易理解
- 便携:支持公有云,私有云,混合云,以及多种云平台
- 可拓展:模块化,可插拔,支持钩子,可任意组合
- 自修复:自动重调度,自动重启,自动复制
准备工作
注:以下操作都是在root权限下执行的
安装docker-ce,这里使用docker-ce-17.09.0.c版本,安装方法见之前的教程
安装Kubeadm
1 2 3 4 5 6 7 8 9 10 11 12 13#安装 Kubeadm 首先我们要配置好阿里云的国内源,执行如下命令: cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=0 EOF #之后,执行以下命令来重建yum缓存: yum -y install epel-releaseyum clean all yum makecache接下来需要安装指定版本的Kubeadm(这里要安装指定版本,因为后续依赖的镜像由于有墙无法拉取,这里我们只有指定版本的镜像),注意:这里是安装指定版本的Kubeadm,k8s的版本更新之快完全超出你的想象!
1 2 3 4 5 6 7yum -y install kubelet-1.11.0-0 yum -y install kubeadm-1.11.0-0 yum -y install kubectl-1.11.0-0 yum -y install kubernetes-cni #执行命令启动Kubeadm服务: systemctl enable kubelet && systemctl start kubelet配置 Kubeadm 所用到的镜像 这里是重中之重,因为在国内的原因,无法访问到 Google 的镜像库,所以我们需要执行以下脚本来从 Docker Hub 仓库中获取相同的镜像,并且更改 TAG 让其变成与 Google 拉去镜像一致。
新建一个 Shell 脚本,填入以下代码之后保存
1 2 3 4 5 6 7 8 9 10#docker.sh #!/bin/bash images=(kube-proxy-amd64:v1.11.0 kube-scheduler-amd64:v1.11.0 kube-controller-manager-amd64:v1.11.0 kube-apiserver-amd64:v1.11.0 etcd-amd64:3.2.18 coredns:1.1.3 pause-amd64:3.1 kubernetes-dashboard-amd64:v1.8.3 k8s-dns-sidecar-amd64:1.14.9 k8s-dns-kube-dns-amd64:1.14.9 k8s-dns-dnsmasq-nanny-amd64:1.14.9 ) for imageName in ${images[@]} ; do docker pull keveon/$imageName docker tag keveon/$imageName k8s.gcr.io/$imageName docker rmi keveon/$imageName done # 个人新加的一句,V 1.11.0 必加 docker tag da86e6ba6ca1 k8s.gcr.io/pause:3.1保存后使用chmod命令赋予脚本执行权限
1chmod -R 777 ./docker.sh执行脚本拉取镜像
1 2sh docker.sh #这里就开始了漫长的拉取镜像之路关闭掉swap
1 2 3sudo swapoff -a #要永久禁掉swap分区,打开如下文件注释掉swap那一行 # sudo vi /etc/stab关闭SELinux的
1 2 3 4 5# 临时禁用selinux # 永久关闭 修改/etc/sysconfig/selinux文件设置 sed -i 's/SELINUX=permissive/SELINUX=disabled/' /etc/sysconfig/selinux # 这里按回车,下面是第二条命令 setenforce 0关闭防火墙
1systemctl disable firewalld.service && systemctl stop firewalld.service配置转发参数
1 2 3 4 5 6 7 8# 配置转发相关参数,否则可能会出错 cat <<EOF > /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 vm.swappiness=0 EOF # 这里按回车,下面是第二条命令 sysctl --system这里就完成了k8s集群搭建的准备工作,集群搭建的话以上操作结束后将操作完的系统制作成系统镜像,方便集群搭建
正式安装
以下的操作都只在主节点上进行:
初始化镜像
| |
之后的输出会是这样:
| |
这里注意最后一行:
| |
证明集群主节点安装成功,这里要记得保存这条命令,以便之后各个节点加入集群
配置kubetl认证信息
| |
安装flanel网络
| |
最后需要新建一个flannel.yml文件:
| |
执行:
| |
默认情况下,master节点不参与工作负载,但如果希望安装出一个all-in-one的k8s环境,则可以执行以下命令:
让master节点成为一个node节点:
| |
查看节点信息:
| |
会看到如下的输出:
| |
以下是节点配置
在配置好主节点之后,就可以配置集群的其他节点了,这里建议直接安装之前做好准备工作的系统镜像 进入节点机器之后,直接执行之前保存好的命令
| |
执行完后会看到:
| |
这里就表示执行完毕了,可以去主节点执行命令:
| |
可以看到节点已加入集群:
| |
这期间可能需要等待一段时间,状态才会全部变为ready
kubernetes-dashboard安装
采坑指南
有时会出现master节点一直处于notready的状态,这里可能是没有启动flannel,只需要按照上面的教程配置好flannel,然后执行:
| |