环境 操作系统: Ubuntu 18.04 机器: 三台Aliyun ECS
Master节点: 4c8g
work节点1: 2c4g
work节点2: 2c4g
关闭swap(每台机器都需要)
安装docker(每台机器都需要) 安装最新版的docker-ce,把源切换成Aliyun的源
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 # 安装系统依赖 sudo apt-get update sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common # 添加aliyun的docker源,root执行 add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | apt-key add - # 安装docker sudo apt-get update sudo apt-get -y install docker-ce # 启动docker systemctl enable docker systemctl start docker # 在admin的用户下提示没有权限的问题,把当前用户加到docker用户组里就可以了 sudo groupadd docker sudo usermod -aG docker $USER
安装完成后可以用docker ps
测试一下
安装kubelet kubeadm kubectl (root执行,每台机器都需要)
阿里云kubernetes帮助
1 2 3 4 5 6 7 8 apt-get update apt-get install -y apt-transport-https curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add - cat <<EOF >/etc/apt/sources.list.d/kubernetes.list deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main EOF apt-get update apt-get install -y kubelet kubeadm kubectl
关键一步 (每台机器都需要)
这里为了方便就不区分master和work节点了.一把都把这个docker image下载下来
本来只要完全按照官方文档 就可以了,由于对应的google的源被墙了.所以需要先手动下载 先使用kubeadm config images list
看看需要下载什么镜像,网络用flannel也需要提前把docker镜像下载好,已经把flannel的镜像上传到我个人的阿里云仓库.脚本:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 #!/bin/bash images=( kube-apiserver:v1.13.1 kube-controller-manager:v1.13.1 kube-scheduler:v1.13.1 kube-proxy:v1.13.1 pause:3.1 etcd:3.2.24 coredns:1.2.6 ) for imageName in ${images[@]} ; do docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName done docker pull registry.cn-hangzhou.aliyuncs.com/ichengchao/flannel:v0.10.0-amd64 docker tag f0fad859c909 quay.io/coreos/flannel:v0.10.0-amd64 docker rmi registry.cn-hangzhou.aliyuncs.com/ichengchao/flannel:v0.10.0-amd64
启动Master 1 kubeadm init --pod-network-cidr=10.244.0.0/16
启动完成后按照提示,在指定用户中执行(admin中执行)
1 2 3 mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
启动flannel
1 2 # 根据官网的提示 kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/bc79dd1505b0c8681ece4de4c0d86c5cd2643275/Documentation/kube-flannel.yml
启动后最下面会出现类似这样的语句,能在别的node上执行下面的语句加到集群中
1 2 kubeadm join 172.16.71.232:6443 --token 111q9t.111110uf711111 --discovery-token-ca-cert-hash sha256:11111111cccf12636af67cee2d3902d847b6600cb33b6114abbac41111111
排查命令
安装过程中出现的问题一般就是docker镜像下载失败,或者网络插件没有安装
1 2 3 4 5 6 7 8 9 10 11 12 # 很好用 journalctl -xe # 启停服务,查看服务状态 systemctl status docker.service systemctl start docker.service systemctl stop docker.service # 查看具体pod的详细信息 kubectl get pods --all-namespaces kubectl describe pod kube-flannel-ds-amd64-7dvwb --namespace=kube-system
部署测试应用 部署hello world
1 kubectl expose deployment my-nginx --port=80 --type=LoadBalancer 改成NodePort
测试自己写的测试应用,我写了一个非常简单的springboot的应用,并且已经打成docker镜像并且上传到了阿里云的docker仓库中
1 2 3 4 5 6 7 8 9 10 11 12 # 启动 kubectl create deployment --image registry.cn-hangzhou.aliyuncs.com/ichengchao/hellojava:0.6 my-test # 扩容 kubectl scale deployment --replicas 4 my-test # 暴露服务 kubectl expose deployment my-test --port=8080 --type=NodePort kubectl get services 查看映射端口 # 下线 kubectl delete deployment my-test
这样最基本的环境搭建和应用部署就完成了.