K8s(Kubernetes)虚拟机安装
K8s(Kubernetes) 虚拟机安装系统设置1.关闭防火墙2.关闭Selinux3.关闭Swap分区服务器架构1.服务器架构图2.设置主机名3.桥接设置4.Master设置节点IP安装Docker-ce1.参考阿里云教程2.开启Docker-ce系统设置1.关闭防火墙临时关闭防火墙:# systemctl stop firewalld永久关闭防火墙:# systemctl disable f
·
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.服务器架构图
服务器IP | HostName | 类型 |
---|---|---|
192.168.241.101 | master-1 | master |
192.168.241.102 | node-1 | node |
192.168.241.103 | node-2 | node |
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 (一定要查询版本安装, Kubernetes 对 Docker-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
开启 Docker 和 Docker.service (两个都需要开启)
# systemctl start docker
# systemctl start docker.service
修改配置后需要重启.
关闭 Docker 和 Docker.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.101 为 Master主机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-1、Node-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.节点分布
服务器IP | HostName | 类型 | 节点分布 |
---|---|---|---|
192.168.241.101 | master-1 | master | NFS 主节点 |
192.168.241.102 | node-1 | node | NFS 子节点 |
192.168.241.103 | node-2 | node | NFS 子节点 |
更多推荐
已为社区贡献1条内容
所有评论(0)