1. [Kubernetes部署3种方式]
  2. Minikube # 本地快速运行一个单点的Kubernetes,尝试Kubernetes或日常开发的用户使用。
  3. # https://kubernetes.io/docs/setup/minikube/
  4. kubeadm # 快速部署一套kubernetes集群
  5. # https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm/
  6. # https://kubernetes.io/docs/setup/independent/install-kubeadm/
  7. :二进制包,手动部署每个组件,组成Kubernetes集群
  8. # https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.11.md#v1113
  9. 添加主机名与IP对应关系:
  10. # cat /etc/hosts
  11. 192.168.0.11 k8s-master
  12. 192.168.0.12 k8s-node1
  13. 192.168.0.13 k8s-node2

环境

  1. [关闭防火墙]
  2. systemctl stop firewalld && systemctl disable firewalld
  3. [关闭selinux]
  4. sed -i 's/enforcing/disabled/' /etc/selinux/config && setenforce 0
  5. [关闭swap]
  6. swapoff -a # 临时
  7. vim /etc/fstab # 永久
  8. [同步时间]
  9. yum install ntpdate -y
  10. ntpdate ntp.api.bz

安装Docker

k8s - 安装 - 图1

  1. [安装]
  2. yum install -y yum-utils device-mapper-persistent-data lvm2
  3. yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  4. yum install docker-ce-17.03.3.ce -y #目前kubeadm最大支持docker-ce-17.03,所以要指定该版本安装
  5. systemctl enable docker && systemctl start docker
  6. [依赖]
  7. # container-selinux依赖问题,先安装ce-17.03匹配版本
  8. yum localinstall https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-selinux-17.03.3.ce-1.el7.noarch.rpm

安装kubeadm,kubelet和kubectl

  1. [解析]
  2. => kubeadm # 引导集群的命令
  3. => kubelet # 集群中运行任务的代理程序
  4. => kubectl # 命令行管理工具
  5. [添加阿里云YUM软件源]
  6. cat << EOF > /etc/yum.repos.d/kubernetes.repo
  7. [kubernetes]
  8. name=Kubernetes
  9. baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
  10. enabled=1
  11. gpgcheck=1
  12. repo_gpgcheck=1
  13. gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
  14. EOF
  15. [安装]
  16. yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
  17. systemctl enable kubelet && systemctl start kubelet
  1. # cat /var/lib/kubelet/kubeadm-flags.env
  2. KUBELET_KUBEADM_ARGS=--cgroup-driver=cgroupfs --cni-bin-dir=/opt/cni/bin --cni-conf-dir=/etc/cni/net.d --network-plugin=cni
  3. # systemctl daemon-reload
  4. # systemctl restart kubelet
  5. 使用Docker时,kubeadm会自动检查kubeletcgroup驱动程序,并/var/lib/kubelet/kubeadm-flags.env在运行时将其设置在文件中。
  6. 如果使用的其他CRI,则必须在/etc/default/kubeletcgroup-driver值修改为cgroupfs

kubeadm创建单个Master集群

  1. [默认下载镜像地址在国外无法访问,先从准备好所需镜像]
  2. # install_image.sh # 脚本运行
  3. K8S_VERSION=v1.11.2
  4. ETCD_VERSION=3.2.18
  5. DASHBOARD_VERSION=v1.8.3
  6. FLANNEL_VERSION=v0.10.0-amd64
  7. DNS_VERSION=1.1.3
  8. PAUSE_VERSION=3.1
  9. # 基本组件
  10. docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver-amd64:$K8S_VERSION
  11. docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager-amd64:$K8S_VERSION
  12. docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler-amd64:$K8S_VERSION
  13. docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy-amd64:$K8S_VERSION
  14. docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd-amd64:$ETCD_VERSION
  15. docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:$PAUSE_VERSION
  16. docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:$DNS_VERSION
  17. # 网络组件
  18. docker pull quay.io/coreos/flannel:$FLANNEL_VERSION
  19. # 修改tag
  20. docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver-amd64:$K8S_VERSION k8s.gcr.io/kube-apiserver-amd64:$K8S_VERSION
  21. docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager-amd64:$K8S_VERSION k8s.gcr.io/kube-controller-manager-amd64:$K8S_VERSION
  22. docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler-amd64:$K8S_VERSION k8s.gcr.io/kube-scheduler-amd64:$K8S_VERSION
  23. docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy-amd64:$K8S_VERSION k8s.gcr.io/kube-proxy-amd64:$K8S_VERSION
  24. docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/etcd-amd64:$ETCD_VERSION k8s.gcr.io/etcd-amd64:$ETCD_VERSION
  25. docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:$PAUSE_VERSION k8s.gcr.io/pause:$PAUSE_VERSION
  26. docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:$DNS_VERSION k8s.gcr.io/coredns:$DNS_VERSION
  27. [初始化Master]
  28. kubeadm init --kubernetes-version=1.11.2 --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.0.11
  29. []
  30. mkdir -p $HOME/.kube
  31. sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  32. sudo chown $(id -u):$(id -g) $HOME/.kube/config
  33. [安装Pod网络 - 插件]
  34. kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/v0.10.0/Documentation/kube-flannel.yml
  35. [加入工作节点 - Node节点切换到root账号执行]
  36. kubeadm join 192.168.0.11:6443 --token 6hk68y.0rdz1wdjyh85ntkr --discovery-token-ca-cert-hash sha256:d1d3f59ae37fbd632707cbeb9b095d0d0b19af535078091993c4bc4d9d2a7782