Centos 7 安装部署 Kubernets环境 「版本V1.18.6」
文档参考:
https://blog.csdn.net/sehn_/article/details/107823058 部署Kubernetes集群-1.18.6版本
https://kubernetes.io/zh/docs/home/ kubernetes官网说明(中文)
https://www.kubernetes.org.cn/ kubernetes中文社区
效果
相关pod运行正常

dashboard正常

环境说明
注意:官方建议每台机器至少双核2G内存,同时需确保MAC和product_uuid唯一(参考下面的命令查看)
ip link
cat /sys/class/dmi/id/product_uuid
安装步骤
注意⚠️ 没有特殊说明,以下步骤三台节点都需要
0.前期准备
查阅很多博客,也有说需要关闭selinux的,但是需要重启机器使配置生效,公司的服务器无法随意重启,也问了其他同学,说不是必须的,就没有关闭,这个根据自己需求关闭,目前在安装过程中,没有出现问题。
(0)配置hosts
修改/etc/hosts
| 主机名 | 角色 |
| kerberos01 | master |
|
kerberos03 |
node |
|
kerberos03 |
node |
(1)三台节点配置免密登陆
这部分内容比较简单,可自行百度操作,这里不做叙述;
(2)关闭防火墙
Centos 7 关闭防火墙的命令
systemctl stop firewalld && systemctl disable firewalld
(3)关闭swap分区
这个不是一定要关闭,但是处于对集群性能的考虑,还是建议关闭
swapoff -a
sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
(4)设置内核参数
cat << EOF | tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
net.ipv4.ip_forward=1
net.ipv4.tcp_tw_recycle=0
vm.swappiness=0
vm.overcommit_memory=1
vm.panic_on_oom=0
fs.inotify.max_user_watches=89100
fs.file-max=52706963
fs.nr_open=52706963
net.ipv6.conf.all.disable_ipv6=1
net.netfilter.nf_conntrack_max=2310720
EOF
sysctl -p /etc/sysctl.d/k8s.conf
1. 更新yum源,添加kubernetes相关源
# 更新yum源
yum update
# 安装相关依赖
yum install -y epel-release conntrack ipvsadm ipset jq sysstat curl iptables libseccomp
# 配置kubernetes源
vim kubernetes.repo
# 内容如下
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
# 将kubernetes.repo 放入 /etc/yum.repos.d 路径
# 然后执行下面命令
yum clean all
yum -y makecache
2.安装docker
(1)卸载原始docker,确保三台节点docker版本一致
# 查看当前docker版本
yum list installed | grep docker
# 如果有,可以使用下面指令进行删除
yum -y remove xxxx(这里替换为对应的名称)
# 删除干净之后就可以安装docker,可以使用以下命令安装
yum install -y docker-ce docker-ce-cli containerd.io
(2)检查安装的docker 版本
docker version

(3)docker 配置阿里加速
https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors (我是在杭州,所以链接是这个,不同地方的同学请根据阿里云官网设置)
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://xxxxxx.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
(4)docker 开启开机自启
# 开启docker
systemctl start docker
# 开机自启动docker
systemctl enable docker
至此,docker的安装就完成了。
3.安装kubernetes相关
(1)安装相关内容
yum install -y kubelet kubeadm kubectl
systemctl enable --now kubelet
(2)安装命令自动补全工具
#安装bash自动补全插件
yum install bash-completion -y
#设置kubectl与kubeadm命令补全,下次login生效
kubectl completion bash > /etc/bash_completion.d/kubectl
kubeadm completion bash > /etc/bash_completion.d/kubeadm
(3)拉取相关docker镜像
因为一个一个拉比较繁琐,而且容易出错,所以写个自动化脚本 get_k8s_images.sh
同时,别忘了拉取 kubernetes-dashboard-amd64 镜像
# 先看看有哪些dashboard镜像可用
docker search dashboard

最后选择了kubernetes-dashboard-amd64(别问我为啥,我也不知道,可能名字比较吸引我)
最后相关镜像如下:

4.配置kubernetes相关
如无特殊说明,以下步骤均在master节点操作
(1)kuberadm init 初始化集群
kubeadm init --kubernetes-version=v1.18.6 --apiserver-advertise-address=(这里填你的master对应的host IP) --pod-network-cidr=10.244.0.0/16 --service-cidr=10.1.0.0/16
初始化之后会有相关提示,然后注意最后的输出,记录下<kubeadm join>相关内容
(2)配置kubectl
#把密钥配置加载到自己的环境变量里
export KUBECONFIG=/etc/kubernetes/admin.conf
#每次启动自动加载$HOME/.kube/config下的密钥配置文件(K8S自动加载)
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
(3)配置集群网络环境
这个有多种选择方案,我这里选择的是使用calico网络
# 下载相关配置文件
wget https://docs.projectcalico.org/v3.15/manifests/calico.yaml
# 修改相关内容:CALICO_IPV4POOL_CIDR,改成上面👆 初始化时配置的pod-network-cidr
vim calico.yaml
# 修改完之后使配置文件生效
kubectl apply -f calico.yaml
# 查看所有的pod是否都处于running状态
kubectl get pod --all-namespaces -o wide
注意⚠️ 修改完之后一定要检查格式!因为yaml文件对格式非常严谨
(4)集群添加node
注意⚠️ 在node节点上运行之前记录的<kubeadm join>相关内容
# 如果没有记录,可以通过下面👇 的命令重新获取
kubeadm token create --print-join-command --ttl=0
# 在master节点查看集群节点状态,等待所有节点都为running状态
kubectl get nodes

如果节点的ROLES为<none>,可以使用下面👇 的命令添加
kubectl label nodes kerberos02 node-role.kubernetes.io/node=node
kubectl label nodes kerberos03 node-role.kubernetes.io/node=node
(5)kube-proxy 开启 ipvs
kubectl get configmap kube-proxy -n kube-system -o yaml > kube-proxy-configmap.yaml
sed -i 's/mode: ""/mode: "ipvs"/' kube-proxy-configmap.yaml
kubectl apply -f kube-proxy-configmap.yaml
rm -f kube-proxy-configmap.yaml
kubectl get pod -n kube-system | grep kube-proxy | awk '{system("kubectl delete pod "$1" -n kube-system")}'
5.部署kubernetes-dashboard
(1)配置 recommended.yaml 配置文件
# 首先获取官方配置
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta5/aio/deploy/recommended.yaml
# 因为需要修改一些配置,所以没有使用官方的 kubectl create -f 命令
# 修改 k8s-app: kubernetes-dashboard 的内容
---
#增加直接访问端口
kind: Service
apiVersion: v1
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kubernetes-dashboard
spec:
type: NodePort # 增加,通过外部端口访问页面
ports:
- port: 443
targetPort: 8443
nodePort: 30008 # 增加,在 Kubernetes 集群中,NodePort 默认范围是 30000-32767
selector:
k8s-app: kubernetes-dashboard
---
注意⚠️ 修改完之后一定要检查格式!因为yaml文件对格式非常严谨
(2)配置证书
mkdir dashboard-certs
cd dashboard-certs/
#创建命名空间
kubectl create namespace kubernetes-dashboard
## 删除命名空间kubectl delete namespace kubernetes-dashboard
# 创建私钥key文件
openssl genrsa -out dashboard.key 2048
#证书请求
openssl req -days 36000 -new -out dashboard.csr -key dashboard.key -subj '/CN=dashboard-cert'
#自签证书
openssl x509 -req -in dashboard.csr -signkey dashboard.key -out dashboard.crt
#创建kubernetes-dashboard-certs对象
kubectl create secret generic kubernetes-dashboard-certs --from-file=dashboard.key --from-file=dashboard.crt -n kubernetes-dashboard
(3)创建dashboard管理员
# 创建账户
vim dashboard-admin.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
k8s-app: kubernetes-dashboard
name: dashboard-admin
namespace: kubernetes-dashboard
#保存退出后执行
kubectl create -f dashboard-admin.yaml
# 给用户分配相关权限
vim dashboard-admin-bind-cluster-role.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: dashboard-admin-bind-cluster-role
labels:
k8s-app: kubernetes-dashboard
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: dashboard-admin
namespace: kubernetes-dashboard
#保存退出后执行
kubectl create -f dashboard-admin-bind-cluster-role.yaml
(4)安装dashboard
# 安装
kubectl create -f ~/recommended.yaml
# 检查结果
kubectl get pods -A -o wide
![]()
(5)访问dashboard
# 查看并且复制用户的token
kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep dashboard-admin | awk '{print $1}')
# 登陆https://kerberos01:30008,选择token登陆,粘贴上面👆复制的token即可
注意⚠️ 一定是 https,直接访问会出现 kubernetes dashboard Client sent an HTTP request to an HTTPS server. 问题
至此,kubernetes 集群部署完成!
其他说明<建议先看>
这里记录在安装过程中有需要的文章内容
1.修改NodePort的端口范围
在 Kubernetes 集群中,NodePort 默认范围是 30000-32767,某些情况下,因为您所在公司的网络策略限制,您可能需要修改 NodePort 的端口范围
可参考文档 https://kuboard.cn/install/install-node-port-range.html
2.chrome浏览器访问 https 网址出现 “连接不是私密连接” 问题
在chrome 该页面上直接通过键盘⌨️ 敲 "thisisunsafe" ,然后就可以访问了
3.重置 kubernetes 集群
在安装过程中难免会出现问题,需要对kubernetes集群进行重置,重新安装,可以使用 kubeadm reset 命令,然后根据命令提示删除并重置相关配置。
4.关于yaml
注意⚠️ 每次修改完yaml文件之后一定要检查格式!因为yaml文件对格式非常严谨!!!


浙公网安备 33010602011771号