k8s系列(1)-腾讯云CVM手动部署K8S_Dashboard安装1

2022-10-20 10:16:14 浏览数 (1)

一. 核心思路与基本概念

image.pngimage.png

我们申请完机器后,修改主机名,master上注册集群,获得命令后,然后将node节点加入

Header

Header

常用命令

kubectl

集群命令行交互工具

kubectl get node(查看集群有多少节点) kubectl proxy(开启本地代理)

kubeadm

集群初始化工具

kubeadm init(初始化集群) kubeadm join(node加入集群)

kubelet

工作节点上的管理 Pod 和容器,确保他们健康稳定运行

kube-proxy

网络代理,负责网络相关的工作,

kube-proxy:

image.pngimage.png

二. 腾讯云申请CVM机器

1. 要注意的点

  1. CVM机器需要同一个子网
  2. 申请按量计费,搞demo的话里面充值2块钱就行,不需要多充
  3. 要至少2核,否则k8s会申请不通过

2. 申请的机器

image.pngimage.png
image.pngimage.png

申请完了之后修改一下机器名称,比如我的是master,node1,node2

三. 步骤

1. 设置主机名(所有节点分别设置)

代码语言:txt复制
hostnamectl set-hostname master
hostnamectl set-hostname node1
hostnamectl set-hostname node2

完了之后用hostname查看

image.pngimage.png

2. 设置hosts,并ping一下看看是否互通(所有节点)

代码语言:txt复制
vim /etc/hosts
10.206.0.17 node1
10.206.0.4 node2
10.206.0.2 master
image.pngimage.png

3.关闭SELinux和防火墙(所有节点)

所有节点关闭 SELinux

代码语言:txt复制
setenforce 0
sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux

关闭防火墙

代码语言:txt复制
systemctl stop firewalld
systemctl disable firewalld

4. 添加安装源

  1. 添加 k8s 安装源
代码语言:txt复制
cat <<EOF > kubernetes.repo
[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
mv kubernetes.repo /etc/yum.repos.d/

2.添加 Docker 安装源

代码语言:txt复制
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

5.安装组件(所有节点)

这里要注意版本1.22,其他版本可能会报错

代码语言:txt复制
yum install -y kubelet-1.22.4 kubectl-1.22.4 kubeadm-1.22.4 docker-ce

6. 启动 kubelet、docker,并设置开机启动(所有节点)

代码语言:txt复制
systemctl enable kubelet
systemctl start kubelet
systemctl enable docker
systemctl start docker

7.修改 docker 配置(所有节点)

1.kubernetes 官方推荐 docker 等使用 systemd 作为 cgroupdriver,否则 kubelet 启动不了

代码语言:txt复制
cat <<EOF > daemon.json
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "registry-mirrors": ["https://ud6340vz.mirror.aliyuncs.com"]
}
EOF
mv daemon.json /etc/docker/

2.重启生效

代码语言:txt复制
systemctl daemon-reload
systemctl restart docker

8. 用 kubeadm 初始化集群(仅在主节点跑)

初始化集群控制台 Control plane,失 败了可以用 kubeadm reset 重置

代码语言:txt复制
kubeadm init --image-repository=registry.aliyuncs.com/google_containers

完了会生成kebeadm join命令, 记得把 kubeadm join xxx 保存起来

,忘记了重新获取:kubeadm token create --print-join-command, 复制授权文件,以便 kubectl 可以有权限访问集群, 如果你其他节点需要访问集群,需要从主节点复制这个文件过去其他节点

主节点上执行

代码语言:txt复制
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

在其他机器上创建 ~/.kube/config 文件也能通过 kubectl 访问到集群

9. 在node节点上加入集群(只在工作节点跑)

代码语言:txt复制
kubeadm join 172.16.32.10:6443 --token xxx --discovery-token-ca-cert-hash xxx

用kubectl get pod查看,发现都是

image.pngimage.png

Not Ready,安装网络插件,否则 node 是 NotReady 状态(主节点跑)

很有可能国内网络访问不到这个资源,你可以网上找找国内的源安装 flannel

代码语言:txt复制
kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d 'n')"

OK, 现在就会是ready状态。这里推荐weave插件,flannel插件不知道为啥会造成dashboard无法安装的情况

fiannel插件不推荐,过几分钟一定要查看一下都是running状态才继续执行

image.pngimage.png

四. 重置节点

Master 节点和Work节点都需要执行:kubeadm reset

代码语言:txt复制
[root@k8s-master ~]# kubeadm reset
[reset] Reading configuration from the cluster...
[reset] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -o yaml'
[reset] WARNING: Changes made to this host by 'kubeadm init' or 'kubeadm join' will be reverted.
[reset] Are you sure you want to proceed? [y/N]:
注意:
kubeadm reset 执行后不会删除$HOME/.kube文件,执行rm -rf $HOME/.kube
子节点 ->
systemctl daemon-reload;
systemctl restart kubelet;

重置后可能遇到的问题

The connection to the server localhost:8080 was refused - did you specify the right host or port?

只要输入

代码语言:txt复制
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

即可,完整解决如下:

代码语言:txt复制
[root@master work]# kubectl get nodes
The connection to the server localhost:8080 was refused - did you specify the right host or port?
[root@master work]# mkdir -p $HOME/.kube
[root@master work]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@master work]# sudo chown $(id -u):$(id -g) $HOME/.kube/config
[root@master work]# kubectl get nodes
NAME     STATUS   ROLES                  AGE     VERSION
master   Ready    control-plane,master   4m6s    v1.22.4
node1    Ready    <none>                 3m55s   v1.22.4
node2    Ready    <none>                 2m      v1.22.4

参考文档

  1. 安装 Kubernetes 集群
  2. Kubernetes (K8S) 3 小时快速上手 实践,无废话纯干货
  3. kubeadm reset 重置

0 人点赞