20 分钟使用 Kubespray 搞定 K8s 单机版安装
欢迎访问博客原文本文分享 K8s 单机版本 v1.16.3 安装步骤,安装过程20分钟以内。K8s最新 Release 版本为 v1.16.4,v1.18.0 还是 alpha 版本。资源需求Master 节点:2 核 2G,本次采用腾讯云按流量计费的 2核4G 服务器,带宽20M用于下载资源。Master 节点局域网IP:172.17.0.7OS:CentOS 7.6 64位...
欢迎访问博客原文
本文分享 K8s 单机版本 v1.16.3 安装步骤,安装过程20分钟以内。
K8s最新 Release 版本为 v1.16.4
,v1.18.0
还是 alpha 版本。
资源需求
- Master 节点:2 核 2G,本次采用腾讯云按流量计费的 2核4G 服务器,带宽20M用于下载资源。
- Master 节点局域网IP:172.17.0.7
- OS:CentOS 7.6 64位
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MRkuPZP2-1578838895246)(https://imgcdn.chenyongjun.vip/2020/01/12/3.png)]
关于 Kubespray
Kubespray 在 GitHub 描述是:“Deploy a Production Ready Kubernetes Cluster”。
Google 的开源工具,用于部署生产级的 K8s 集群。
在腾讯云购买了一台 美国硅谷ECS,使用 kubespray 安装K8s,耗时约10分钟左右,速度很快,这是国外开发者的体验。
在晚上跑个Job,将所需的镜像、工具上传到国内,后续会继续更新新版本的资源,详见最后的附录。
安装步骤
基础准备
这一小节内容在master节点、普通节点都需要执行,本次仅演示master节点。
- 关闭 SELinux 并修改配置文件为 disabled
setenforce 0
sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
- 关闭防火墙
systemctl disable firewalld
systemctl stop firewalld
- 安装必要软件
EPEL (Extra Packages for Enterprise Linux):自动配置yum的软件仓库
ansible:自动化运维工具
Jinja2:基于python的模板引擎
yum install -y epel-release ansible
yum install -y python36 python36-devel python36-pip
pip3 install --upgrade Jinja2
处理密钥
生成ssh公私钥对,不要设置密码,直接三次回车即可。仅需在 master 节点生成,普通节点不用处理。
ssh-keygen
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1sNaRS9f-1578838895247)(https://imgcdn.chenyongjun.vip/2020/01/12/5.png)]
将密钥分发给节点建立SSH通道,此处master也作为普通节点需要分发。若添加新节点也需执行该步骤。
ssh-copy-id root@172.17.0.7
处理 kubespray
下载 kubespray
wget https://github.com/kubernetes-sigs/kubespray/archive/v2.12.0.tar.gz
tar -zxvf v2.12.0.tar.gz
mv kubespray-2.12.0 kubespray
安装依赖
以下所有命令均在 kubespray
目录执行。
cd kubespray
pip3.6 install -r requirements.txt
生成集群host文件
sample 是样例配置,拷贝出一个新的 mycluster。
cp -rfp inventory/sample inventory/mycluster
通过 Ansible invendor builder 工具, 自动生成 ansible inventory file,IPS中有多个IP(多个节点)时以空格隔开。
declare -a IPS=(172.17.0.7)
CONFIG_FILE=inventory/mycluster/hosts.yaml python3 contrib/inventory_builder/inventory.py ${IPS[@]}
自动生成的 yaml 配置文件如下,将其中的 node1 节点名称改为 master,这样后续普通节点可从 node1 开始命名。
all:
hosts:
node1:
ansible_host: 172.17.0.7
ip: 172.17.0.7
access_ip: 172.17.0.7
children:
kube-master:
hosts:
node1:
kube-node:
hosts:
node1:
etcd:
hosts:
node1:
k8s-cluster:
children:
kube-master:
kube-node:
calico-rr:
hosts: {}
修改资源地址
安装时默认从国外下载资源,我已将资源上传到腾讯云,直接从腾讯云下载即可,需修改下配置。
- 修改
inventory/mycluster/group_vars/k8s-cluster/k8s-cluster.yml
版本、镜像下载地址、镜像cheksum都在该文件中。
原内容:kube_image_repo: "{{ gcr_image_repo }}/google-containers"
修改为:kube_image_repo: "ccr.ccs.tencentyun.com/easyk8s"
- 修改
roles/download/defaults/main.yml
下载的资源配置均在其中,下面例举几个:
kubelet_download_url: "https://storage.googleapis.com/kubernetes-release/release/{{ kube_version }}/bin/linux/{{ image_arch }}/kubelet"
...
etcd_image_repo: "{{ quay_image_repo }}/coreos/etcd"
etcd_image_repo: "{{ quay_image_repo }}/etcd"
需要修改的配置有:
- kubelet_download_url、kubectl_download_url、kubeadm_download_url、etcd_download_url、cni_download_url、calicoctl_download_url
- etcd_image_repo、calico_node_image_repo、calico_cni_image_repo、calico_policy_image_repo、coredns_image_repo、dashboard_image_repo
如想手工调整,可参考如下例子:
原内容:etcd_image_repo: "{{ quay_image_repo }}/coreos/etcd"
修改为:etcd_image_repo: "{{ quay_image_repo }}/etcd"
主要是去掉namespace,腾讯云namespace只能有一段。
我已调整好,可直接执行下面命令获取配置:
wget https://k8s-1256695615.cos.ap-shanghai.myqcloud.com/v1.16.3/main.yml
mv main.yml roles/download/defaults/main.yml
wget https://k8s-1256695615.cos.ap-shanghai.myqcloud.com/v1.16.3/download_file.yml
mv download_file.yml roles/download/tasks/download_file.yml
download_file.yml 主要加了日志,例如下面拼接了 “{{ download.url }}”。
- block:
- name: download_file | Starting download of file | "{{ download.url }}"
安装
上述配置OK后,直接安装即可。从腾讯云下载比较快,大约十几分钟即可安装完成。
ansible-playbook -i inventory/mycluster/hosts.yaml cluster.yml -b -v --private-key=~/.ssh/id_rsa
安装完后,日志会打印所有时间信息,虽然不太准。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8k7gA8sn-1578838895248)(https://imgcdn.chenyongjun.vip/2020/01/12/6.png)]
安装好后看看集群基础信息。
查看节点信息
[root@master ~]# kubectl get no
NAME STATUS ROLES AGE VERSION
master Ready master 10h v1.16.3
查看集群信息
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nMXuf1Le-1578838895248)(https://imgcdn.chenyongjun.vip/2020/01/12/7.png)]
查看所有Pod信息
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8EN9qMrz-1578838895249)(https://imgcdn.chenyongjun.vip/2020/01/12/8.png)]
至此,安装完毕,消耗时间在20分钟内。
小结
kubespray 很赞,安装非常简单,体验一下就好。
如果使用云服务,直接购买容器服务最方便,提供了K8s各类对象管理控制台。
如果内网自建,就需要自行管理集群。
附录
镜像资源
所需镜像如下:
gcr.io/google-containers/k8s-dns-node-cache
gcr.io/google-containers/kube-proxy
gcr.io/google-containers/kube-apiserver
gcr.io/google-containers/kube-controller-manager
gcr.io/google-containers/kube-scheduler
gcr.io/google-containers/cluster-proportional-autoscaler-amd64
gcr.io/google_containers/kubernetes-dashboard-amd64
gcr.io/google-containers/pause
gcr.io/google_containers/pause-amd64
coredns/coredns
calico/node
calico/cni
calico/kube-controllers
quay.io/coreos/etcd
在腾讯云容器服务的公有镜像中搜 easyk8s。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-t7Eb7QLm-1578838895249)(https://imgcdn.chenyongjun.vip/2020/01/12/4.png)]
可一次拉取下来。
docker pull ccr.ccs.tencentyun.com/easyk8s/k8s-dns-node-cache:1.15.8
docker pull ccr.ccs.tencentyun.com/easyk8s/kube-proxy:v1.16.3
docker pull ccr.ccs.tencentyun.com/easyk8s/kube-apiserver:v1.16.3
docker pull ccr.ccs.tencentyun.com/easyk8s/kube-controller-manager:v1.16.3
docker pull ccr.ccs.tencentyun.com/easyk8s/kube-scheduler:v1.16.3
docker pull ccr.ccs.tencentyun.com/easyk8s/coredns:1.6.0
docker pull ccr.ccs.tencentyun.com/easyk8s/node:v3.7.3
docker pull ccr.ccs.tencentyun.com/easyk8s/cni:v3.7.3
docker pull ccr.ccs.tencentyun.com/easyk8s/kube-controllers:v3.7.3
docker pull ccr.ccs.tencentyun.com/easyk8s/cluster-proportional-autoscaler-amd64:1.6.0
docker pull ccr.ccs.tencentyun.com/easyk8s/kubernetes-dashboard-amd64:v1.10.1
docker pull ccr.ccs.tencentyun.com/easyk8s/etcd:v3.3.10
docker pull ccr.ccs.tencentyun.com/easyk8s/pause:3.1
docker pull ccr.ccs.tencentyun.com/easyk8s/pause-amd64:3.1
工具
包含K8s安装及使用所需的:kubelet、kubectl、kubeadm、calicoctl、cni-plugins。
下载地址如下:
# kubelet
https://k8s-1256695615.cos.ap-shanghai.myqcloud.com/v1.16.3/kubelet-v1.16.3-amd64
# kubectl
https://k8s-1256695615.cos.ap-shanghai.myqcloud.com/v1.16.3/kubectl-v1.16.3-amd64
# kubeadm
https://k8s-1256695615.cos.ap-shanghai.myqcloud.com/v1.16.3/kubeadm-v1.16.3-amd64
# cni-plugins
https://k8s-1256695615.cos.ap-shanghai.myqcloud.com/v1.16.3/cni-plugins-linux-amd64-v0.8.1.tgz
# calicoctl
https://k8s-1256695615.cos.ap-shanghai.myqcloud.com/v1.16.3/calicoctl
参考资料
欢迎关注公众号 [陈一乐],一起学习,一起成长
更多推荐
所有评论(0)