前言
本篇部署教程将讲述 k8s 集群的节点 (master 和工作节点) 部署, 请先按照上一篇教程完成节点的准备. 本篇教程中的操作全部使用脚本完成, 并且对于某些情况 (比如镜像拉取问题) 还提供了多种解决方案. 不过基于部署环境和 k8s 的复杂性, 我们需要对 k8s 集群部署过程中的一些步骤都有所了解, 尤其是 "kubeadm init" 命令.
目录
主节点部署
Kubeadm 以及相关工具包的安装
批量拉取 k8s 相关镜像
使用 "kubeadm init" 启动 k8s 主节点
启动 k8s 主节点
kubectl 认证
安装 flannel 网络插件
检查集群状态
工作节点部署
安装 kubelet
拉取相关镜像
使用 "kubeadm join" 将当前节点加入集群
复制 admin.conf 并且设置配置
查看集群节点状态
安装仪表盘
主节点部署
当上述步骤完成后, 我们依照以下步骤来完成主节点的安装:
1.Kubeadm 以及相关工具包的安装
安装脚本如下所示:
- # 配置源
- echo '#k8s
- [kubernetes]
- name=Kubernetes
- baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
- enabled=1
- gpgcheck=0
- '>/etc/yum.repos.d/kubernetes.repo
- #kubeadm 和相关工具包
- yum -y install kubelet kubeadm kubectl kubernetes-cni
注意, 以上脚本使用阿里云镜像进行安装.
如果成功安装, 会提示 "完毕!":
安装完成之后, 需要重启 kubelet:
- systemctl daemon-reload
- systemctl enable kubelet
2. 批量拉取 k8s 相关镜像
如果使用代理, 国际网络或者指定镜像库地址, 此步骤可以忽略. 在国内, 由于国际网络问题, k8s 相关镜像在国内可能无法下载, 因此我们需要手动准备.
首先, 我们先使用 "kubeadm config" 命令来查看 kubeadm 相关镜像的列表:
kubeadm config images list
- # 批量下载镜像
- kubeadm config images list |sed -e 's/^/docker pull /g' -e 's#k8s.gcr.io#docker.io/mirrorgooglecontainers#g' |sh -x
- # 批量命名镜像
- docker images |grep mirrorgooglecontainers |awk '{print"docker tag ",$1":"$2,$1":"$2}' |sed -e 's# mirrorgooglecontainers# k8s.gcr.io#2' |sh -x
- # 批量删除 mirrorgooglecontainers 镜像
- docker images |grep mirrorgooglecontainers |awk '{print"docker rmi ", $1":"$2}' |sh -x
- # coredns 没包含在 docker.io/mirrorgooglecontainers 中
- docker pull coredns/coredns:1.3.1
- docker tag coredns/coredns:1.3.1 k8s.gcr.io/coredns:1.3.1
- docker rmi coredns/coredns:1.3.1
- kubeadm join 172.16.2.201:6443 --token jx82lw.8ephcufcot5j06v7 \
- --discovery-token-ca-cert-hash sha256:180a8dfb45398cc6c3addd84a61c1
- #kubectl 认证
- export KUBECONFIG=/etc/kubernetes/admin.conf
- # 如果是非 root 用户
- $ mkdir -p $HOME/.kube
- $ cp -i /etc/kubernetes/admin.conf
- $HOME/.kube/config$ chown $(id -u):$(id -g) $HOME/.kube/config
- # 配置源
- echo '#k8s
- [kubernetes]
- name=Kubernetes
- baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
- enabled=1
- gpgcheck=0
- '>/etc/yum.repos.d/kubernetes.repo
- #kubeadm 和相关工具包
- yum -y install kubelet kubeadm
- systemctl daemon-reload
- systemctl enable kubelet
- kubeadm join 172.16.2.201:6443 --token jx82lw.8ephcufcot5j06v7 \
- --discovery-token-ca-cert-hash sha256:180a8dfb45398cc6c3addd84a61c1bd4364297da1e91611c8c46a976dc12ff17
- # 复制 admin.conf, 请在主节点服务器上执行此命令
- scp /etc/kubernetes/admin.conf {
- 当前工作节点 IP
- }:/etc/kubernetes/admin.conf
- scp /etc/kubernetes/admin.conf 172.16.2.202:/etc/kubernetes/admin.conf
- scp /etc/kubernetes/admin.conf 172.16.2.203:/etc/kubernetes/admin.conf
- # 设置 kubeconfig 文件
- export KUBECONFIG=/etc/kubernetes/admin.conf
- echo "export KUBECONFIG=/etc/kubernetes/admin.conf">> ~/.bash_profile
- # 如果使用代理或者使用国际网络, 则可跳过此步骤
- docker pull mirrorgooglecontainers/kubernetes-dashboard-amd64:v1.10.1
- docker tag mirrorgooglecontainers/kubernetes-dashboard-amd64:v1.10.1 k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1
- # 安装仪表盘
- kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
- echo '
- ---
- apiVersion: v1
- kind: ServiceAccount
- metadata:
- labels:
- k8s-App: kubernetes-dashboard
- name: kubernetes-dashboard-admin
- namespace: kube-system
- ---
- apiVersion: rbac.authorization.k8s.io/v1beta1
- kind: ClusterRoleBinding
- metadata:
- name: kubernetes-dashboard-admin
- labels:
- k8s-App: kubernetes-dashboard
- roleRef:
- apiGroup: rbac.authorization.k8s.io
- kind: ClusterRole
- name: cluster-admin
- subjects:
- - kind: ServiceAccount
- name: kubernetes-dashboard-admin
- namespace: kube-system'>kubernetes-dashboard-admin.rbac.YAML
- kubectl create -f kubernetes-dashboard-admin.rbac.YAML
- # 获取 token 名称
- kubectl -n kube-system get secret | grep kubernetes-dashboard-admin
- # 根据名称拿到 token
- kubectl describe -n kube-system secret/kubernetes-dashboard-admin-token-lphq4
来源: https://www.cnblogs.com/codelove/p/11286812.html