Ubuntu 18.04 环境下 kubernetes v1.16.2 单机部署说明

二次信任 提交于 2019-12-01 22:45:15

一、安装环境

  本次部署使用阿里云ECS  

  操作系统: Ubuntu  18.04 64位 

  实例规格: ecs.c6.large 2U4G

 

二、kubernetes 版本

  k8s.gcr.io/kube-apiserver:v1.16.2

  k8s.gcr.io/kube-controller-manager:v1.16.2

  k8s.gcr.io/kube-scheduler:v1.16.2

  k8s.gcr.io/kube-proxy:v1.16.2

  k8s.gcr.io/pause:3.1

  k8s.gcr.io/etcd:3.3.15-0

  k8s.gcr.io/coredns:1.6.2

三、shell

# 添加镜像源
cat <<EOF >/etc/apt/sources.list.d/docker-k8s.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable
EOF

# 更新并安装
apt update && apt install -y docker-ce kubelet kubeadm kubectl# 关闭 swapswapoff -avim /etc/fstab# 注释掉这一行# /swapfile                                 none            swap    sw              0       0

设置阿里云镜像加速

  进入阿里云;=》容器镜像服务=》镜像中心 =》 镜像加速器

  页面会提供配置文档;当前只给出主要代码,如果没有阿里云账号,此步骤可以忽略;

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://{阿里云分配的地址前缀}.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

安装镜像包

这里需要注意:kubernetes 镜像包是放在 google 容器托管平台,国内下载会出现超时等情况

vi k8s-image-pull.sh# 1、将对应的包从国内镜像上拉下来 # 2、在tag成脚本中需要的image名称# 3、移除多余的imagefor i in `kubeadm config images list`; do  imageName=${i#k8s.gcr.io/}  docker pull registry.aliyuncs.com/google_containers/$imageName  docker tag registry.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName  docker rmi registry.aliyuncs.com/google_containers/$imageNamedone;

初始化

# kubeadm初始化
kubeadm init --pod-network-cidr=10.244.0.0/16 -–apiserver-advertise-address=0.0.0.0 --ignore-preflight-errors=NumCPU# --apiserver-bind-port API server 将绑定的端口。默认为 6443。# --apiserver-advertise-address 这是 API server 用来告知集群中其它成员的地址,这也是在 init 流程的时候用来构建 kubeadm join 命令行的地址。                                如果不设置(或者设置为 0.0.0.0)那么将使用默认接口的 IP 地址。该地址也被添加到 API Server 使用的证书中。# --ignore-preflight-errors=NumCPU 如果只有一个 cpu 请加参数
# kubeadm init 输出的 token 用于 master 和加入节点间的身份认证,token 是机密的,需要保证它的安全,因为拥有此标记的人都可以随意向集群中添加节点。# 设置网络插件 export KUBECONFIG=/etc/kubernetes/admin.conf kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

 

安装 kubernetes-dashboard 
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta5/aio/deploy/recommended.yaml

# 在需要做外网映射的情况下,我们使用nodeport方式访问,此段也可以忽略vi recommended.yaml# spec:下边添加 type: NodePort# targetPort 下边添加 nodePort: 30001

下载kubernetes-dashboard 镜像

# 拉取 kubernetes-dashboard 镜像, 注意版本, 可在 kubernetes-dashboard.yaml 文件中查看
docker pull kubernetesui/dashboard:v2.0.0-beta5# 官方Kubernetes仪表板映像已从k8s.gcr.io注册表移至kubernetesui/dashboard。# 我们仍将尝试从提供图像k8s.gcr.io,但是要推送这些图像,需要Google员工的帮助。# 目前只有从 v2.0.0-beta1 以及以后的版本# 安装 kubernetes-dashboard kubectl create -f kubernetes-dashboard.yaml # 查看安装结果 
kubectl get pod --namespace=kubernetes-dashboardkubectl get pod --namespace=kube-system
# 从 v2.0.0-beta1 以及以后的版本,已将仪表板从kube-system移至kubernetes-dashboard名称空间# 查看端口 kubectl get svc --namespace=kube-system或者kubectl get svc --namespace=kubernetes-dashboard
查看账号 
kubectl get sa --all-namespaces
cat <<EOF > admins.yamlapiVersion: v1 
kind: ServiceAccount 
metadata: 
  labels: 
    k8s-app: kubernetes-dashboard 
  name: admins
  namespace: kubernetes-dashboard 
--- 
apiVersion: rbac.authorization.k8s.io/v1 
kind: ClusterRoleBinding 
metadata: 
  name: admins
roleRef: 
  apiGroup: rbac.authorization.k8s.io 
  kind: ClusterRole 
  name: cluster-admin 
subjects: 
- kind: ServiceAccount 
  name: admins
  namespace: kubernetes-dashboard
EOF# 创建用户kubectl create -f admins.yaml

获取用户token

kubectl describe serviceaccount admins -n kubernetes-dashboard

获取token

kubectl describe secret admins-token-r5thw -n kubernetes-dashboard

copy token 

然后访问外网地址

https://外网ip:30001

选择token 贴入 copy的token信息

 

 

作者:zhangwenjian
出处:http://www.cnblogs.com/zhangwenjian

转移:http://www.cnblogs.com/zhangwenjian

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!