kubernetes 1.9 快速部署(开发环境)

kubernetes安装

以下为基于Ubuntu 16.04/CentOS 7.4 快速体验k8s集群的测试、开发环境–AllinOne部署,觉得比官方的minikube方便、简单很多。

1. 基础系统配置

  • 推荐内存2G/硬盘20G以上
  • 最小化安装Ubuntu 16.04 server或者CentOS 7 Minimal
  • 配置基础网络、更新源、SSH登陆等

2. 安装依赖工具

2.1 ubuntu 16.04

1
2
3
4
5
6
7
8
# 文档中脚本默认均以root用户执行
apt-get update && apt-get upgrade -y && apt-get dist-upgrade -y
# 删除不要的默认安装
apt-get purge ufw lxd lxd-client lxcfs lxc-common
# 安装依赖工具
apt-get install python2.7 git python-pip
# Ubuntu16.04可能需要配置以下软连接
ln -s /usr/bin/python2.7 /usr/bin/python

2.2 CentOS 7.4

1
2
3
4
5
6
7
8
# 文档中脚本默认均以root用户执行
# 安装 epel 源并更新
yum install epel-release -y
yum update
# 删除不要的默认安装
yum erase firewalld firewalld-filesystem python-firewall -y
# 安装依赖工具
yum install git python python-pip -y

3. ansible安装及准备

1
2
3
4
5
6
7
8
# 安装ansible (国内如果安装太慢可以直接用pip阿里云加速)
#pip install pip --upgrade
#pip install ansible
pip install pip --upgrade -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
pip install --no-cache-dir ansible -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
# 配置ansible ssh密钥登陆
ssh-keygen -t rsa -b 2048 回车 回车 回车
ssh-copy-id $IP #$IP为本虚机地址,按照提示输入yes 和root密码

4. 安装kubernetes集群

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
git clone https://github.com/gjmzj/kubeasz.git
mv kubeasz /etc/ansible
# 下载已打包好的binaries,并且解压缩到/etc/ansible/bin目录
# 国内请从分享的百度云链接下载 https://pan.baidu.com/s/1c4RFaA
# 如果你有合适网络环境也可以按照/down/download.sh自行从官网下载各种tar包到 ./down目录,并执行download.sh
tar zxvf k8s.191.tar.gz
mv bin/* /etc/ansible/bin
# 配置ansible的hosts文件
cd /etc/ansible
cp example/hosts.allinone.example hosts
然后根据实际情况修改此hosts文件,所有节点都是本虚机IP
# 采用一步安装或者分步安装
ansible-playbook 90.setup.yml # 一步安装
#ansible-playbook 01.prepare.yml
#ansible-playbook 02.etcd.yml
#ansible-playbook 03.kubectl.yml
#ansible-playbook 04.docker.yml
#ansible-playbook 05.kube-master.yml
#ansible-playbook 06.kube-node.yml
# 网络只可选择calico flannel一种安装
#ansible-playbook 07.calico.yml
#ansible-playbook 07.flannel.yml

5. 验证安装

1
2
3
4
5
6
7
# 如果提示kubectl: command not found,退出重新ssh登陆一下,环境变量生效即可
kubectl version
kubectl get componentstatus # 可以看到scheduler/controller-manager/etcd等组件 Healthy
kubectl cluster-info # 可以看到kubernetes master(apiserver)组件 running
kubectl get node # 可以看到单 node Ready状态
kubectl get pod --all-namespaces # 可以查看所有集群pod状态
kubectl get svc --all-namespaces # 可以查看所有集群服务状态

6. 安装主要组件

1
2
3
4
5
6
# 安装kubedns
kubectl create -f /etc/ansible/manifests/kubedns
# 安装heapster
kubectl create -f /etc/ansible/manifests/heapster
# 安装dashboard
kubectl create -f /etc/ansible/manifests/dashboard

7. 清理集群

以上步骤创建的K8S开发测试环境请尽情折腾,碰到错误尽量通过查看日志、上网搜索、提交issues等方式解决;当然如果是彻底奔溃了,可以清理集群后重新创建。

一步清理:

1
ansible-playbook 99.clean.yml

helm 安装

Helm是一个kubernetes应用的包管理工具,用来管理charts——预先配置好的安装包资源,有点类似于Ubuntu的APT和CentOS中的yum。

Helm chart是用来封装kubernetes原生应用程序的yaml文件,可以在你部署应用的时候自定义应用程序的一些metadata,便与应用程序的分发。

Helm和charts的主要作用:

  • 应用程序封装
  • 版本管理
  • 依赖检查
  • 便于应用程序分发

下载helm安装脚本

1
2
3
curl https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get > get_helm.sh
chmod 700 get_helm.sh
./get_helm.sh

创建tiller的serviceaccount和clusterrolebinding

1
2
kubectl create serviceaccount --namespace kube-system tiller
kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller

然后安装helm服务端tiller,(目前最新版v2.8.2,可以使用阿里云镜像,如: helm init –upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.8.2 –stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts)

1
helm init --upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.8.2 --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

我们使用-i指定自己的镜像,因为官方的镜像因为某些原因无法拉取,官方镜像地址是:gcr.io/kubernetes-helm/tiller:v2.8.1 该镜像的版本与helm客户端的版本相同,使用helm version可查看helm客户端版本。

为应用程序设置serviceAccount:

1
kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'

检查是否安装成功:

1
2
3
4
5
$ kubectl -n kube-system get pods|grep tiller
tiller-deploy-2372561459-f6p0z 1/1 Running 0 1h
$ helm version
Client: &version.Version{SemVer:"v2.3.1", GitCommit:"32562a3040bb5ca690339b9840b6f60f8ce25da4", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.3.1", GitCommit:"32562a3040bb5ca690339b9840b6f60f8ce25da4", GitTreeState:"clean"}

问题备注:

1
2
3
4
5
6
7
8
9
10
[root@os-k8s- 1 ~]# helm version
Client: &version.Version{SemVer:"v2.8.2",
GitCommit:"a80231648a1473929271764b920a8e346f6de844",
GitTreeState:"clean"}
E0330 07:23:56.629068 19376 portforward.go:331] an error occurred
forwarding 36439 -> 44134: error forwarding port 44134 to pod
bed7fcf1f11f86b5f6d1da916d2bdd04139ab5818616b41e8104937f6643edc4, uid :
unable to do port forwarding: socat not found
## 需要安装socat
yum install –y socat

坚持原创技术分享,您的支持将鼓励我继续创作!