ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Kubernetes集群安装

2020-05-23 09:56:27  阅读:218  来源: 互联网

标签:kubectl kube Kubernetes mirrorgooglecontainers 集群 dashboard docker k8s 安装


概 述

本⽂准备部署⼀个 ⼀主两从 的 三节点 Kubernetes集群,整体节点规划如下表所示:

各个节点的软件版本:

  • 操作系统: CentOS-7.4-64Bit
  • Docker版本: 1.13.1
  • Kubernetes版本: 1.13.1

各节点都需要安装以下组件:

  • Docker :不⽤多说了吧
  • kubelet :运⾏于所有 Node上,负责启动容器和 Pod
  • kubeadm :负责初始化集群
  • kubectl : k8s命令⾏⼯具,通过其可以部署/管理应⽤ 以及CRUD各种资源

准备工作

#所有节点关闭防⽕墙
systemctl disable firewalld.service
systemctl stop firewalld.service

禁⽤SELINUX
setenforce 0
vi /etc/selinux/config
SELINUX=disabled

#所有节点关闭 swap
swapoff -a

#设置所有节点主机名
hostnamectl --static set-hostname k8s-master
hostnamectl --static set-hostname k8s-node-1
hostnamectl --static set-hostname k8s-node-2

#编辑 /etc/hosts ⽂件 加入 主机名/IP加⼊ hosts解析
192.168.39.79 k8s-master
192.168.39.77 k8s-node-1
192.168.39.78 k8s-node-2

组件安装

  1. Docker安装

不赘述了,参考 Docker环境安装

  1. kubelet、kubeadm、kubectl安装(所有节点)
#配置 repo
cat>>/etc/yum.repos.d/kubrenetes.repo<<EOF
[kubernetes]
name=Kubernetes Repo
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-
x86_64/
gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
EOF

执⾏如下指令来进⾏安装

setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX= disabled/' /etc/selinux/config
yum install -y kubelet kubeadm kubectl
systemctl enable kubelet && systemctl start kubelet

Master节点配置

为了应对网络不畅通的问题,我们国内⽹络环境只能提前⼿动下载相关镜像并重新打 tag

docker pull mirrorgooglecontainers/kube-apiserver:v1.13.1
docker pull mirrorgooglecontainers/kube-controller-manager:v1.13.1
docker pull mirrorgooglecontainers/kube-scheduler:v1.13.1
docker pull mirrorgooglecontainers/kube-proxy:v1.13.1
docker pull mirrorgooglecontainers/pause:3.1
docker pull mirrorgooglecontainers/etcd:3.2.24
docker pull coredns/coredns:1.2.6
docker pull registry.cn-shenzhen.aliyuncs.com/cp_m/flannel:v0.10.0-amd64
docker tag mirrorgooglecontainers/kube-apiserver:v1.13.1
k8s.gcr.io/kube-apiserver:v1.13.1
docker tag mirrorgooglecontainers/kube-controller-manager:v1.13.1
k8s.gcr.io/kube-controller-manager:v1.13.1
docker tag mirrorgooglecontainers/kube-scheduler:v1.13.1
k8s.gcr.io/kube-scheduler:v1.13.1
docker tag mirrorgooglecontainers/kube-proxy:v1.13.1 k8s.gcr.io/kubeproxy:v1.13.1
docker tag mirrorgooglecontainers/pause:3.1 k8s.gcr.io/pause:3.1
docker tag mirrorgooglecontainers/etcd:3.2.24 k8s.gcr.io/etcd:3.2.24
docker tag coredns/coredns:1.2.6 k8s.gcr.io/coredns:1.2.6
docker tag registry.cn-shenzhen.aliyuncs.com/cp_m/flannel:v0.10.0-amd64quay.io/coreos/flannel:v0.10.0-amd64
docker rmi mirrorgooglecontainers/kube-apiserver:v1.13.1
docker rmi mirrorgooglecontainers/kube-controller-manager:v1.13.1
docker rmi mirrorgooglecontainers/kube-scheduler:v1.13.1
docker rmi mirrorgooglecontainers/kube-proxy:v1.13.1
docker rmi mirrorgooglecontainers/pause:3.1
docker rmi mirrorgooglecontainers/etcd:3.2.24
docker rmi coredns/coredns:1.2.6
docker rmi registry.cn-shenzhen.aliyuncs.com/cp_m/flannel:v0.10.0-amd64

然后再在 Master节点上执⾏如下命令初始化 k8s集群:

kubeadm init --kubernetes-version=v1.13.1 --apiserver-advertise-address 192.168.39.79 --pod-network-cidr=10.244.0.0/16
  • kubernetes-version : ⽤于指定 k8s版本
  • apiserver-advertise-address :⽤于指定使⽤ Master的哪个network interface进⾏通信,若不指定,则 kubeadm会⾃动选择具有默认⽹关的 interface
  • pod-network-cidr :⽤于指定Pod的⽹络范围。该参数使⽤依赖于使⽤的⽹络⽅案,本⽂
    将使⽤经典的flannel⽹络⽅案。
  1. kubectl
    在 Master上⽤ root⽤户执⾏下列命令来配置 kubectl:
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> /etc/profile
source /etc/profile
echo $KUBECONFIG
  • 安装Pod⽹络
    安装 Pod⽹络是 Pod之间进⾏通信的必要条件,k8s⽀持众多⽹络⽅案,这⾥我们依然选⽤经典的
    flannel⽅案
  • ⾸先设置系统参数:
sysctl net.bridge.bridge-nf-call-iptables=1
  • 然后在 Master节点上执⾏如下命令
kubectl apply -f kube-flannel.yaml

kube-flannel.yaml ⽂件下载地址:

这里下载

检查⼀下 CoreDNS Pod是否正常运⾏

kubectl get pods --all-namespaces -o wide
kubectl get nodes


添加 Slave节点

在两个 Slave节点上分别执⾏如下命令来让其加⼊Master上已经就绪了的 k8s集群:

kubeadm join --token <token> <master-ip>:<master-port> --discoverytoken-ca-cert-hash sha256:<hash>

如果 token忘记,则可以去 Master上执⾏如下命令来获取:

kubeadm token list

检验安装结果

  • 查看节点状态
kubectl get nodes

  • 查看所有 Pod状态
kubectl get pods --all-namespaces -o wide

拆卸集群

⾸先处理各节点:

kubectl drain <node name> --delete-local-data --force --ignoredaemonsets
kubectl delete node <node name>

⼀旦节点移除之后,则可以执⾏如下命令来重置集群:

kubeadm reset

安装 Dashboard (k8s集群可视化工具)

  • ⾸先⼿动下载镜像并重新打标签:(所有节点)
docker pull registry.cn-qingdao.aliyuncs.com/wangxiaoke/kubernetesdashboard-amd64:v1.10.0
docker tag registry.cn-qingdao.aliyuncs.com/wangxiaoke/kubernetesdashboard-amd64:v1.10.0 k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.0
docker image rm registry.cn-qingdao.aliyuncs.com/wangxiaoke/kubernetesdashboard-amd64:v1.10.0
  • 安装 dashboard:
kubectl create -f dashboard.yaml

dashboard.yaml ⽂件下载地址:

这里下载

查看 dashboard的 pod是否正常启动,如果正常说明安装成功:

 kubectl get pods --namespace=kube-system

查看 dashboard的外⽹暴露端口

kubectl get service --namespace=kube-system

⽣成私钥和证书签名

openssl genrsa -des3 -passout pass:x -out dashboard.pass.key 2048
openssl rsa -passin pass:x -in dashboard.pass.key -out dashboard.key
rm dashboard.pass.key
openssl req -new -key dashboard.key -out dashboard.csr
#如遇输⼊,⼀路回⻋ 即可

⽣成SSL证书:

openssl x509 -req -sha256 -days 365 -in dashboard.csr -signkey
dashboard.key -out dashboard.crt

然后将⽣成的 dashboard.keydashboard.crt 置于路径 /home/share/certs
创建 dashboard⽤户

 kubectl create -f dashboard-user-role.yaml

dashboard-user-role.yaml⽂件下载地址:

这里下载

获取登陆token

kubectl describe secret/$(kubectl get secret -nkube-system |grep
admin|awk '{print $1}') -nkube-system

token既然⽣成成功,接下来就可以打开浏览器,输⼊ token来登录进集群管理页面:

标签:kubectl,kube,Kubernetes,mirrorgooglecontainers,集群,dashboard,docker,k8s,安装
来源: https://www.cnblogs.com/aaaak/p/install_k8s.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有