概述

    开年第一天,补充下自己的技术栈。

参考文章:

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/config

Alternatively, 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集群了

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐