K8s(Kubernetes) 虚拟机安装

系统设置
服务器架构
安装Docker-ce
安装Kubernetes
安装Dashboard
安装NFS文件系统

系统设置
1.关闭防火墙
临时关闭防火墙:
# systemctl stop firewalld
永久关闭防火墙:
# systemctl disable firewalld
2.关闭Selinux
临时关闭selinux
# setenforce 0
永久关闭selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config
或者
# vim /etc/selinux/config
第七行改为:
# SELINUX=disabled
3.关闭Swap分区
临时关闭 SWAP 分区
swapoff -a
永久关闭 SWAP 分区
sed -ri 's/.*swap.*/#&/' /etc/fstab
或者
# vim /etc/fstab
注释第11: 
# /dev/mapper/centos-swap swap
4.时间同步
安装时间同步工具
# yum install ntpdate -y
执行时间同步
# ntpdate time.windows.com

服务器架构
1.服务器架构图
服务器IPHostName类型
192.168.241.101master-1master
192.168.241.102node-1node
192.168.241.103node-2node
2. 设置主机名
登录 master-1 (192.168.241.101) 执行
# hostnamectl set-hostname master-1

登录 node-1 (192.168.241.102)执行
# hostnamectl set-hostname node-1

登录 node-2 (192.168.241.103)执行
# hostnamectl set-hostname node-2

查看主机名是否更改成功
# hostname
3.桥接设置
所有节点都需要执行(master-1, node-1, node-2)
# 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.Master设置节点IP
只在 Master-1 (192.168.241.101) 中执行
# cat >> /etc/hosts << EOF
192.168.241.101 master-1
192.168.241.102 node-1
192.168.241.103 node-2
EOF

或者
# vim /etc/hosts
在末尾加入:
192.168.241.101 master-1
192.168.241.102 node-1
192.168.241.103 node-2

安装Docker-ce
1.参考阿里云教程
1: 安装必要的一些系统工具
# yum install -y yum-utils device-mapper-persistent-data lvm2

2: 添加软件源信息
# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3: 
# sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo

4: 更新并安装Docker-CE
# yum makecache fast

5 安装指定版本的Docker-CE (一定要查询版本安装, KubernetesDocker-CE 版本有要求):
# 1: 查找Docker-CE的版本:
# yum list docker-ce.x86_64 --showduplicates | sort -r
查询结果
docker-ce.x86_64            3:20.10.1-3.el7                    docker-ce-stable 
docker-ce.x86_64            3:20.10.11-3.el7                   docker-ce-stable 
docker-ce.x86_64            3:20.10.10-3.el7                   docker-ce-stable 
docker-ce.x86_64            3:20.10.0-3.el7                    docker-ce-stable 
docker-ce.x86_64            3:19.03.9-3.el7                    docker-ce-stable 
docker-ce.x86_64            3:19.03.8-3.el7                    docker-ce-stable 

选择 3:19.03.9-3.el7 版本安装:
docker-ce.x86_64            3:19.03.9-3.el7                    docker-ce-stable

安装命令
# yum -y install docker-ce-19.03.9-3.el7
2.配置Docker
新建 Docker 配置文件
# vim /etc/docker/daemon.json
录入
{
	//配置镜像加速.
	"registry-mirrors": ["https://xxxxxx.mirror.aliyuncs.com"],
	//Docker-ce安装k8s时需配置此选项.
	"exec-opts": ["native.cgroupdriver=systemd"]
}

https://xxxxxx.mirror.aliyuncs.com

地址在阿里云官网查看:
https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
3.开启Docker-ce
开启 DockerDocker.service (两个都需要开启)
# systemctl start docker
# systemctl start docker.service

修改配置后需要重启.
关闭 DockerDocker.service (两个都需要关闭)
# systemctl stop docker.socket
# systemctl stop docker.service

卸载 Docker-ec
# yum remove -y docker-ce*

注意: 所有节点全部需要安装
安装Kubernetes
1.配置阿里云仓库
yum设置Kubernetes阿里云仓库
# 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
EOF

注意: 所有节点全部需要配置
2.选择版本
查询版本
# yum list kubeadm --showduplicates | sort -r

版本列表
kubeadm.x86_64                       1.20.8-0                        kubernetes 
kubeadm.x86_64                       1.20.4-0                        kubernetes 
kubeadm.x86_64                       1.20.2-0                        kubernetes 
kubeadm.x86_64                       1.20.13-0                       kubernetes 
kubeadm.x86_64                       1.20.13-0                       @kubernetes
kubeadm.x86_64                       1.20.12-0                       kubernetes 
这里选择 1.20.13-0
3.安装
这里我们需要安装三个组件 kubeadm、kubelet、kubectl, 每个组件版本都是 1.20.13-0
# yum install -y kubelet-1.20.13-0 kubeadm-1.20.13-0 kubectl-1.20.13-0
设置开机启动
# systemctl enable kubelet

注意: 所有节点全部需要安装
4.Master初始化
此命令只能在 Master (192.168.241.101) 上执行, 
apiserver-advertise-address=192.168.241.101Master主机IP

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

单行命令:
# kubeadm init --apiserver-advertise-address=192.168.241.101 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.20.13 --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16

命令详情:
# 为 Pod 分配 IP 地址的范围
--pod-network-cidr=10.244.0.0/16

安装完成后:
指定配置文件 只能在 Master (192.168.241.101) 中执行
# mkdir -p $HOME/.kube
# cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
# chown $(id -u):$(id -g) $HOME/.kube/config

查看 Nodes 节点(Master中执行)
# kubectl get nodes
5.Master生成加入Token
# kubeadm token create --print-join-command

获取命令如下:
kubeadm join 192.168.241.132:6443 --token ga9ghb.7jzggkfp7n9s2sfn \
   --discovery-token-ca-cert-hash \
   sha256:d02e0e17213d530b8ea7ade17f3835c38b0234f32df42f262a4633a6dccf4ac1
   
单行命令:
kubeadm join 192.168.241.132:6443 --token ga9ghb.7jzggkfp7n9s2sfn --discovery-token-ca-cert-hash sha256:d02e0e17213d530b8ea7ade17f3835c38b0234f32df42f262a4633a6dccf4ac1

查看节点状态
# kubectl get nodes
6.Node使用Token加入Master
Master 生成的Token 拿到 Node-1Node-2 中执行
# kubeadm join 192.168.241.132:6443 --token ga9ghb.7jzggkfp7n9s2sfn --discovery-token-ca-cert-hash sha256:d02e0e17213d530b8ea7ade17f3835c38b0234f32df42f262a4633a6dccf4ac1

执行命令后, 未执行成功时, 如需再次执行需reset后重新执行
# kubeadm reset
7.部署CNI网络插件
执行安装插件
# kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

如果无法连接,使用浏览器下载该文件,上传文件到服务器, 使用命令执行
# kubectl apply -f /root/kube-flannel.yml

查看插件运行情况
# kubectl get pods -n kube-system

coredns-7f89b7bc75-gwfgh           1/1     Running   0          43h
coredns-7f89b7bc75-n2f7z           1/1     Running   0          43h
etcd-master-1                      1/1     Running   2          43h
kube-apiserver-master-1            1/1     Running   2          43h
kube-controller-manager-master-1   1/1     Running   2          43h
kube-flannel-ds-cffhq              1/1     Running   0          6m9s
kube-flannel-ds-gwffx              1/1     Running   0          6m9s
kube-flannel-ds-x2w5g              1/1     Running   0          6m9s
kube-proxy-ljfnr                   1/1     Running   1          23h
kube-proxy-x2q4l                   1/1     Running   2          43h
kube-proxy-zwc8m                   1/1     Running   1          23h
kube-scheduler-master-1            1/1     Running   2          43h

运行成功后,在查看节点状态
kubectl get nodes

NAME       STATUS   ROLES                  AGE   VERSION
master-1   Ready    control-plane,master   43h   v1.20.13
node-1     Ready    <none>                 23h   v1.20.13
node-2     Ready    <none>                 23h   v1.20.13

安装Dashboard

1.下载yaml
# 海外服务器直接使用命令安装
# kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.0/aio/deploy/recommended.yaml

# 国内服务器使用科学上网下载到本地再上传至服务器运行
# kubectl apply -f recommended.yaml
2.暴露端口至服务器

修改暴露端口

# 修改 dashboard 配置
# kubectl edit svc kubernetes-dashboard -n kubernetes-dashboard

# 大约在 30 行
将 type: ClusterIP 改为 type: NodePort

查看暴露出来的端口号

# kubectl get svc -A | grep kubernetes-dashboard

#显示结果为:
kubernetes-dashboard   dashboard-metrics-scraper   ClusterIP   10.97.84.108     <none>        8000/TCP                 35m
kubernetes-dashboard   kubernetes-dashboard        NodePort    10.110.129.179   <none>        443:32173/TCP            35m

# 32173 为暴露出来的端口号

3.访问 Dashboard
# 注意必须使用 https 访问!
https://192.168.241.101:32173/

4.创建访问用户
# 可以参考 GitHub 的官方文档
https://github.com/kubernetes/dashboard/blob/master/docs/user/access-control/creating-sample-user.md

配置创建用户 yaml 配置文件

# vim admin-user.yaml

文件内容

apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin-user
  namespace: kubernetes-dashboard

执行

# kubectl apply -f admin-user.yaml

5.查看登录令牌
# 查看命令
# kubectl -n kubernetes-dashboard get secret $(kubectl -n kubernetes-dashboard get sa/admin-user -o jsonpath="{.secrets[0].name}") -o go-template="{{.data.token | base64decode}}"

登录时选择 Token 登录并输入 Token , 成功登录 DashBoard !


安装NFS文件系统

1.节点安装 NFS
# 每个节点安装 nfs-utils, master-1, node-1, node-2 都需要安装.
# yum install -y nfs-utils
2.节点分布
服务器IPHostName类型节点分布
192.168.241.101master-1masterNFS 主节点
192.168.241.102node-1nodeNFS 子节点
192.168.241.103node-2nodeNFS 子节点
Logo

开源、云原生的融合云平台

更多推荐