使用kubeadm部署一个K8s集群

1.前言

kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具。
这个工具能通过两条指令完成一个kubernetes集群的部署:

2. 安装要求

一台或多台机器,操作系统 CentOS7.x-86_x64
硬件配置:2GB或更多RAM,2个CPU或更多CPU,硬盘30GB或更多
集群中所有机器之间网络互通
可以访问外网,需要拉取镜像
禁止swap分区

3. 实验安排

角色 IP
k8s-master 192.168.91.134
k8s-node1 192.168.91.135

4. 配置三台服务器的环境

4.1 关闭防火墙:

systemctl stop firewalld
systemctl disable firewalld

4.2 关闭selinux:

sed -i 's/enforcing/disabled/' /etc/selinux/config  
setenforce 0  

4.3 关闭swap

swapoff -a  
sed -i 's/.*swap.*/#&/' /etc/fstab

4.4 设置主机名

hostnamectl set-hostname k8s-master
hostnamectl set-hostname k8s-node1

4.5 在所有主机添加hosts

 cat >> /etc/hosts << EOF
192.168.91.134 k8s-master
192.168.91.135 k8s-node1
EOF

4.6 将桥接的IPv4流量传递到iptables的链:

cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

生效命令

sysctl --system  

4.7 服务器做时间同步

yum install ntpdate -y

同步时间

ntpdate ntp.aliyun.com

5. 所有节点安装Docker/kubeadm/kubelet

Kubernetes默认CRI(容器运行时)为Docker,因此先安装Docker。

5.1 安装docker
获取docker的阿里云源
安装wget命令

yum -y  install wget

获取阿里云的源

wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo

安装docker

yum -y install docker-ce-18.06.1.ce-3.el7

启动docker并设为开机自启

systemctl enable docker && systemctl start docker

查看docker版本

docker --version

配置镜像加速

cat > /etc/docker/daemon.json << EOF
{
  "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]
}
EOF

重启docker服务

systemctl restart docker

5.2 编辑阿里云YUM软件源

cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

5.3 安装kubeadm,kubelet和kubectl
由于版本更新频繁,这里指定版本号部署:

yum install -y kubelet-1.20.0 kubeadm-1.20.0 kubectl-1.20.0

将kubelet设为开机自启,先不启动

systemctl enable kubelet

6. 部署Kubernetes Master

在192.168.91.134 (Master)执行

kubeadm init \
  --apiserver-advertise-address=192.168.91.134 \
  --image-repository registry.aliyuncs.com/google_containers \
  --kubernetes-version v1.20.0 \
  --service-cidr=10.96.0.0/12 \
  --pod-network-cidr=10.244.0.0/16

初始化成功之后出现以下界面
在这里插入图片描述

解释
–apiserver-advertise-address集群通告地址
–image-repository 默认镜像地址无法访问,这里指阿里云镜像仓库地址
–kubernetes-version K8s版本,与上面安装的一致
–service-cidr 集群内部虚拟网络,pod统一访问入口
–pod-network-cidr pod网络

执行命令:
拷贝kubectl所需的配置文件:

  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

6.1在node节点执行后node就会加入集群

[root@node1 ~]# kubeadm join 192.168.91.134:6443 --token o8s41y.8v46mwuf39nmai6q \--discovery-token-ca-cert-hash sha256:e2a7f4f11bb2c630aa8569b287b55224f1f3f3c727200a800672d45b92d47c31

在这里插入图片描述
Kubeadm init工作流程
1.[preflight]环境检查,拉取镜像
2.[certs]证书生成与kubeconfig文件生成
3.[kubeconfig]kubeconfig文件生成
4.[kubelet-start]启动kubelet
5.[control-plane]静态pod启动master组件,包括了etcd
6.[mark-control-plane]给master节点打一个标签
7.[bootstrap-token]引导kubelet生成证书
8.[addons]安装coredns和kubeproxy生成了用于工作节点连接master的命令

7. 安装Pod网络插件(CNI)

Calico是一个纯三层的数据网络中心方案
下载YAML

 wget https://docs.projectcalico.org/manifests/calico.yaml
 kubectl apply -f calico.yaml

等待pods状态全部running

 kubectl get pods -n kube-system
NAME                                       READY   STATUS                  RESTARTS   AGE
calico-kube-controllers-79bc685f4c-28nvb   1/1     Running                 0          8m12s
calico-node-db4dg                          1/1     Running                 0          8m12s
calico-node-wfw2m                          1/1     Running                 0          8m12s
coredns-9d85f5447-k5flv                    1/1     Running                 0          31m
coredns-9d85f5447-mmz2p                    1/1     Running                 0          31m
etcd-k8s-master                            1/1     Running                 0          31m
kube-apiserver-k8s-master                  1/1     Running                 0          31m
kube-controller-manager-k8s-master         1/1     Running                 0          31m
kube-proxy-9gtsv                           1/1     Running                 0          15m
kube-proxy-kvklr                           1/1     Running                 0          31m
kube-scheduler-k8s-master                  1/1     Running                 0          31m

8. 部署 Dashboard

8.1 在master节点上执行命令

Wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.3/aio/deploy/recommended.yaml

8.2 修改recommended.yaml配置文件

vim recommended.yaml

默认dashbord只能访问集群内部网络,修改Service为NodePort类型,暴露到外部

38   namespace: kubernetes-dashboard
 39 spec:
 40   ports:
 41     - port: 443
 42       targetPort: 8443
 43       nodePort: 30001
 44   selector:
 45     k8s-app: kubernetes-dashboard
 46   type: NodePort
 47 ---
 48
 49 apiVersion: v1
 50 kind: Secret

8.3 在master节点上执行以下命令:
创建service account并绑定默认cluster-admin管理员集群角色:

kubectl create serviceaccount dashboard-admin -n kube-system
kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')

8.4 访问地址:https://nodeip:30001 (注意:用的是https)
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值