跳至内容
响水凹
欢迎来到 Guang-Wen Duan (Dennis Duan) 的个人 Wiki
用户工具
登录
站点工具
搜索
工具
显示页面
过去修订
反向链接
最近更改
媒体管理器
网站地图
登录
>
最近更改
媒体管理器
网站地图
您的足迹:
computer:net:k8s
本页面只读。您可以查看源文件,但不能更改它。如果您觉得这是系统错误,请联系管理员。
====== 搭建Kubernetes集群环境 ====== [[https://kubernetes.io/|Kubernetes]]是一个开源的容器编排系统,本文讲述一个简单的Kubernetes集群的搭建过程。 参考链接: * [[https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/|Installing kubeadm]] * [[https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/|Creating a single control-plane cluster with kubeadm]] ===== 环境准备 ===== 我们在三台CentOS 7的KVM虚拟机上搭建环境: - cet7-k8s-1,192.168.122.205 - cet7-k8s-2,192.168.122.64 - cet7-k8s-3,192.168.122.176 其中cet7-k8s-1是主节点(master),其余两台是worker节点。 下面的操作除非特别申明,在每个节点上都要进行。 ==== 关闭selinux ==== 编辑/etc/sysconfig/selinux,将enforcing改为disabled: <code> SELINUX=disabled </code> ==== 关闭防火墙 ==== Kubernetes运行时需要开放几个端口,这里是测试环境,就暂时将防火墙关闭了: <code> # systemctl stop firewalld # systemctl disable firewalld </code> ==== 关闭交换区 ==== <code> # swapoff -a </code> 编辑/etc/fstab,注释掉swap分区行,例如: <code> #/dev/mapper/centos-swap swap swap defaults 0 0 </code> ===== 安装docker ===== Kubernetes支持多个容器运行时runtime,这里使用docker。 在每个节点机器安装docker: <code> # yum install docker </code> 启动docker: <code> # systemctl enable docker # systemctl start docker </code> ===== 网络与代理 ===== Kubernetes的安装过程中需要访问外网,如果集群因安全等原因无法直接联网,也可通过代理方式进行访问。 ==== 命令行应用 ===== 对于命令行应用,比如下面的kubeadm,可设置如下的环境变量来访问代理(假设http代理服务器IP为192.168.122.1,端口8118): <code> export http_proxy=http://192.168.122.1:8118 export https_proxy=http://192.168.122.1:8118 </code> 此外,集群节点之间不通过代理: <code> export no_proxy=localhost,localhost.,192.168.122.205,192.168.122.64,192.168.122.176 </code> ==== docker守护进程 ==== 对于docker守护进程,需要修改docker配置文件来设置代理: <code> # mkdir /etc/systemd/system/docker.service.d # cd /etc/systemd/system/docker.service.d </code> 新建http_proxy.conf: <code> [Service] Environment="HTTP_PROXY=http://192.168.122.1:8118/" "HTTPS_PROXY=https://192.168.122.1:8118/" "NO_PROXY=localhost,localhost.,192.168.122.205,192.168.122.64,192.168.122.176" </code> 使配置生效: <code> # systemctl daemon-reload # systemctl restart docker </code> 检验设置是否正确: <code> # systemctl show --property=Environment docker </code> ===== 安装kubeadm ===== 在每个节点上安装kubelet、kubectl、kubeadm。 首先设置kubernetes源: <code> # cat <<EOF >/etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg exclude=kube* EOF </code> 安装: <code> # yum install kubelet kubectl kubeadm --disableexcludes=kubernetes </code> 缺省安装的是最新版本,也可安装特定版本: <code> # yum install kubelet-1.11.3-0 kubectl-1.11.3-0 kubeadm-1.11.3-0 --disableexcludes=kubernetes </code> 设置sysctl: <code> # cat <<EOF >/etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF </code> 使其生效: <code> # sysctl --system </code> 启动kubelet: <code> # systemctl enable kubelet # systemctl start kubelet </code> ===== 集群初始化 ===== 一切准备就绪,就可以开始集群的初始化工作了。 初始化只在master节点进行。 期间会下载一些docker镜像,为了检测网络是否通畅,可以先下载镜像: <code> # kubeadm config images pull [config/images] Pulled k8s.gcr.io/kube-apiserver-amd64:v1.11.3 [config/images] Pulled k8s.gcr.io/kube-controller-manager-amd64:v1.11.3 [config/images] Pulled k8s.gcr.io/kube-scheduler-amd64:v1.11.3 [config/images] Pulled k8s.gcr.io/kube-proxy-amd64:v1.11.3 [config/images] Pulled k8s.gcr.io/pause:3.1 [config/images] Pulled k8s.gcr.io/etcd-amd64:3.2.18 [config/images] Pulled k8s.gcr.io/coredns:1.1.3 </code> 执行初始化: <code> # kubeadm init </code> 成功后,会生成如下的命令,其他worker节点可执行该命令加入集群: <code> # kubeadm join 192.168.122.205:6443 --token 89duwd.yhz457x4hrs7wjzi --discovery-token-ca-cert-hash sha256:b0a429dade431cb040fd10956a740549c77a013f3a131e069933332298bb9579 </code> 进行后续的管理工作之前,对普通用户,需做如下设置: <code> $ mkdir -p $HOME/.kube $ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config $ sudo chown $(id -u):$(id -g) $HOME/.kube/config </code> 如果是root,则设置如下环境变量: <code> # export KUBECONFIG=/etc/kubernetes/admin.conf </code> 现在集群还不可用,需要安装一个网络插件,这里用的是weave: <code> # kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')" </code> ===== 加入集群 ===== 在worker节点上,执行上述生成的join命令,加入集群: <code> # kubeadm join 192.168.122.205:6443 --token 89duwd.yhz457x4hrs7wjzi --discovery-token-ca-cert-hash sha256:b0a429dade431cb040fd10956a740549c77a013f3a131e069933332298bb9579 </code> ===== 完成 ===== 在主节点上执行: <code> $ kubectl get nodes NAME STATUS ROLES AGE VERSION cet7-k8s-1 Ready master 37d v1.13.1 cet7-k8s-2 Ready <none> 37d v1.13.1 cet7-k8s-3 Ready <none> 37d v1.13.1 </code> 可以看到,所有节点已经就绪。 至此,一个基本的Kubernetes集群就搭建起来了。 {{tag>Kubernetes}}
computer/net/k8s.txt
· 最后更改: 2019/07/24 04:58 由
duangw
页面工具
显示页面
过去修订
反向链接
回到顶部