概述
开年第一天,补充下自己的技术栈。
参考文章:
k8s安装 - 知乎
【Kubernetes部署篇】K8s图形化管理工具Dasboard部署及使用_k8s可视化管理工具-CSDN博客
centos7环境下安装k8s 1.18.0版本带dashboard界面全记录(纯命令版)_sysconfig1.18.0版本-CSDN博客
侵删。
步骤
一、安装vmware
略,随手一堆教程
注意避坑windows10+的hype-v和低版本vmware共存的问题,我记得高版本vmware已经没有这个问题了。
二、vmware安装centos
略,随手一堆教程
(这里包含vmware安装centos,桥接网络,开放ssh访问等内容)
需要三个节点(安装好其中一个后,yum install vim, yum install yum-utils),然后关闭虚拟机电源,克隆,完整克隆
分别编辑三个节点的ip信息。
虚拟机设置为桥接模式,使用mobaxterm等进行ssh链接。vmware开放ssh访问等需要自行百度。
三、安装docker
增加docker源,如果2中没有安装yum-utils需要先安装
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo —这里使用的是阿里云的仓库
安装最新版本
yum install docker-ce docker-ce-cli containerd.io
启动docker
systemctl start docker
systemctl enable docker --now --启动docker,并在开机启动中加入
查看状态
systemctl status docker
四、安装k8s
安装k8s前配置修改
----------------------------------------(三个节点都要执行) start --------------------------------------------------
修改主机名:
hostnamectl set-hostname xxxx
关闭selinux
将 SELinux 设置为 permissive 模式(相当于将其禁用)
setenforce 0 --临时关闭
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config --永久关闭
关闭swap
关闭swap
swapoff -a --临时关闭
sed -ri 's/.*swap.*/#&/' /etc/fstab --永久关闭
允许 iptables 检查桥接流量
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system. --重启
关闭防火墙
5.关闭防火墙
为保证后续端口访问方便,这里关闭防火墙
systemctl stop firewalld --临时关闭防火墙
systemctl disable firewalld --永久关闭防火墙
k8s下载地址
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
exclude=kubelet kubeadm kubectl
EOF
安装 kubelet、kubeadm、kubectl
yum install -y kubelet-1.20.9 kubeadm-1.20.9 kubectl-1.20.9 --disableexcludes=kubernetes
默认启动
systemctl enable --now kubelet
下载镜像
tee ./images.sh <<-'EOF'
#!/bin/bash
images=(
kube-apiserver:v1.20.9
kube-proxy:v1.20.9
kube-controller-manager:v1.20.9
kube-scheduler:v1.20.9
coredns:1.7.0
etcd:3.4.13-0
pause:3.2
)
for imageName in ${images[@]} ; do
docker pull registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/$imageName
done
EOF
--执行脚本
chmod +x ./images.sh && ./images.sh
--查看下载的镜像
docker images
初始化主节点:
#所有机器添加master域名映射,以下需要修改为自己的
echo "xxx.xxx.xxx.xxx cluster-endpoint" >> /etc/hosts --xxx.xxx.xxx.xxx 地址为master的ip信息 --cluster-endpoint 可以随便起名
添加上述命令含义:需让所有节点知道master是哪一个
#主节点初始化
kubeadm init \
--apiserver-advertise-address=xxx.xxx.xxx.xxx \ --xxx.xxx.xxx.xxx为master节点的ip
--control-plane-endpoint=cluster-endpoint \ --cluster-endpoint 上面起的名字
--image-repository registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images \ --镜像仓库名字
--kubernetes-version v1.20.9 \ --kubernetes的版本号
--service-cidr=10.96.0.0/16 \
--pod-network-cidr=192.168.0.0/16
note:这里建议service和pod的ip信息不要改,如果要改,service和pod的ip段不能重复,也不能和服务器的ip段重复
如果拉取镜像失败,使用 --image-repository registry.aliyuncs.com/google_containers
出现success之后,记得复制token一类的,如下:
Your Kubernetes control-plane has initialized successfully!
To start using your cluster, you need to run the following as a regular user:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/configAlternatively, if you are the root user, you can run:
export KUBECONFIG=/etc/kubernetes/admin.conf
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
https://kubernetes.io/docs/concepts/cluster-administration/addons/Then you can join any number of worker nodes by running the following on each as root:
kubeadm join 10.9.200.52:6443 --token v4pesl.jc5jz9y8gx495lv8 \
--discovery-token-ca-cert-hash sha256:d27c226ae6d16b5c70638df2d1d40459f73ae4cbdc3f548e088049a97707c1e3
----------------------------------------(三个节点都要执行) end --------------------------------------------------
主节点执行:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
查看节点状态:
kubectl get nodes
查看主节点状态不对,目前是NotReady,这个问题是因为网络组件未配置导致的,在主节点初始化日志中有这一步
kubectl get pods -A
下载 https://docs.projectcalico.org/v3.20/manifests/calico.yaml
上传到主节点,或者直接wget
使用命令加载yaml配置文件
kubectl apply -f calico.yaml
在查看应该就是ready了
kubectl get nodes
从节点加入主节点:
把安装成功后,复制保存下来的话抠出
kubeadm join xxxx
出现如下,即为成功
五、安装k8s-dashboard
wget https://gitee.com/qinziteng/K8S/raw/master/YMAL/recommended.yaml
上传到master,并且编辑vim recommended.yaml 找到Service 8443这条
增加type:NodePort,原本默认是本机访问,增加这个后,可以方便我们浏览器访问
修改完成后
kubectl apply -f recommended.yaml
4、查看状态 默认在 kubernetes-dashboard 名称空间下:
kubectl get pods -n kubernetes-dashboard
5、查看Service暴露端口,我们使用这个端口进行访问:
kubectl get svc -n kubernetes-dashboard
通过Token令牌登入
1、创建一个 ClusterRoleBinding 对象,并赋予cluster-admin权限,即访问整个集群的权限,包括查看和修改所有资源的权限
kubectl create clusterrolebinding dashboard-cluster-admin --clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:kubernetes-dashboard
命令参数解析:
create:创建资源的命令
clusterrolebinding:资源类型,表示创建一个 ClusterRoleBinding 对象
dashboard-cluster-admin:ClusterRoleBinding 对象的名称
clusterrole=cluster-admin:指定要绑定的 ClusterRole,这里是 cluster-admin,即具有完全访问权限的 ClusterRole。
serviceaccount=kubernetes-dashboard:kubernetes-dashboard:指定要绑定的 ServiceAccount,这里是 kubernetes-dashboard 命名空间下的 kubernetes-dashboard ServiceAccount
查看创建的secret
kubectl get secret -n kubernetes-dashboard
2、获取token信息:
kubectl describe secret $(kubectl get secret -n kubernetes-dashboard|grep kubernetes-dashboard-token*|awk '{print $1}') -n kubernetes-dashboard|egrep -w token:
查看token信息如下圈住信息:
3、将token信息复制到浏览器下面即可管理K8S集群了