Hyper-V + Centos stream 9 搭建K8s集群(二)

一、安装自动补全

主节点安装就可以

复制代码
yum install -y bash-completion
echo 'source <(kubectl completion bash)' >>~/.bashrc
kubectl completion bash >/etc/bash_completion.d/kubectl

二、安装Calico网络插件(主节点)

下载文件

复制代码
wget https://calico-v3-25.netlify.app/archive/v3.25/manifests/calico.yaml

修改配置文件

复制代码
sed -i 's#docker.io#m.daocloud.io/docker.io#g' calico.yaml

如果你没有进行某些自定义安装,可以直接应用

复制代码
kubectl apply -f calico.yaml

然后耐心等待(有可能因为网络问题拉镜像失败),可以不断查看空间kube-system下的所有Pod(最终正常应该都是running)

复制代码
kubectl get pods -n kube-system

查看Calico插件在各节点的部署情况(正常应该都是running)

复制代码
kubectl get po -A -o wide | grep calic

查看集群状态

复制代码
kubectl get nodes -A

正常应该都是Ready的状态了。

三、安装Kubernetes Dashboard

1、安装

Helm 更适合生产环境,kubectl apply 更适合学习和简单部署。

(1)方式1-基于helm安装

我是用这种方式遇到问题,懒得研究,就卸载了直接使用**kubectl安装了。**

复制代码
# 下载helm
wget https://get.helm.sh/helm-v3.16.1-linux-amd64.tar.gz

# 解压
tar zxf helm-v3.16.1-linux-amd64.tar.gz

# 移动到/usr/local
mv linux-amd64/helm /usr/local/bin/helm && rm -rf linux-amd64

# 加一个chart 仓库,这里用的阿里云
helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

# 查看列表
helm search repo aliyun 

Helm 仓库的核心作用​是​集中化管理 Charts,存储预定义的 Kubernetes 应用模板(如 MySQL、Nginx、Redis 的部署配置)。类似 apt/yum 的软件源,但针对的是 Kubernetes 应用。

通过 helm install 快速部署应用,无需手动编写复杂的 YAML 文件。

比如

复制代码
helm install my-mysql aliyun/mysql

添加仓库

复制代码
helm repo add kubernetes-dashboard https://kubernetes.github.io/dashboard/

使用kubernetes仪表板图表部署名为"kubernetes仪表板"的Helm Release

复制代码
helm upgrade --install kubernetes-dashboard kubernetes-dashboard/kubernetes-dashboard --create-namespace --namespace kubernetes-dashboard

设置访问端口

复制代码
kubectl edit svc kubernetes-dashboard-kong-proxy -n kubernetes-dashboard

修改service的type类型为NodePort,使其可以外部访问,修改之后查看结果

复制代码
kubectl -n kubernetes-dashboard get svc

(2)方式2-直接使用 kubectl安装

下载配置文件

复制代码
https://github.com/kubernetes/dashboard/blob/v2.0.0-beta4/aio/deploy/recommended.yaml

下载完修改这个文件,找到镜像文件修改为国内的源

复制代码
image: registry.cn-hangzhou.aliyuncs.com/google_containers/dashboard:v2.7.0
image: registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-scraper:v1.0.8

然后进行应用

复制代码
kubectl apply -f recommended.yaml

有几种方式可以访问,这里选择NodePort

复制代码
kubectl patch svc kubernetes-dashboard -n kubernetes-dashboard -p '{"spec":{"type":"NodePort"}}'

查看服务状态

复制代码
kubectl -n kubernetes-dashboard get svc kubernetes-dashboard

kubectl get svc -n kubernetes-dashboard

2、创建访问账号

编辑文件添加内容

复制代码
vim /etc/kubernetes/dashadm.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 /etc/kubernetes/dashadm.yaml

获取访问令牌的token的命令

复制代码
kubectl -n kubernetes-dashboard create token admin-user

3、生成token进行登录

生成token

复制代码
kubectl -n kubernetes-dashboard create token admin-user

进行登录

复制代码
https://172.25.116.101:31874/

使用token登录

4、遇到问题可以重新部署

如果是镜像拉取的问题,可以使用这个命令查看

复制代码
kubectl describe pod -n kubernetes-dashboard

首先清理现有的错误 Pod

复制代码
kubectl delete deployment --all -n kubernetes-dashboard

然后删除

复制代码
kubectl delete namespace kubernetes-dashboard

然后重新部署

复制代码
kubectl create namespace kubernetes-dashboard

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml

四、部署测试

我们创建一个nginx.yaml,随便放在哪里。

添加如下内容

复制代码
apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    app.kubernetes.io/name: MyApp
spec:
  containers:
  - name: nginx
    image: ccr.ccs.tencentyun.com/library/nginx:latest
    ports:
      - containerPort: 80
        name: http-web-svc
---
apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  type: NodePort
  selector:
    app.kubernetes.io/name: MyApp
  ports:
    # 默认情况下,为了方便起见,`targetPort` 被设置为与 `port` 字段相同的值。
    - port: 80
      targetPort: 80
      # 可选字段
      # 默认情况下,为了方便起见,Kubernetes 控制平面会从某个范围内分配一个端口号
      #(默认:30000-32767)
      nodePort: 30007

然后应用

复制代码
kubectl apply -f nginx.yaml

查看状态

复制代码
kubectl get pod,svc

访问这个地址

复制代码
http://172.25.116.101:30007/
相关推荐
庸子16 分钟前
kubectl基础操作实战-k8s集群安装
云原生·容器·kubernetes
Neng_Miao40 分钟前
权限管理命令
linux·运维·服务器
shandianchengzi40 分钟前
【笔记】ROS1|5 ARP攻击Turtlebot3汉堡Burger并解析移动报文【旧文转载】
linux·运维·网络安全·机器人·arp·turtlebot
是阿建吖!1 小时前
【Linux | 网络】网络层(IP协议、NAT技术和ICMP协议)
linux·网络·tcp/ip
特种加菲猫1 小时前
从exec到Shell:深度解析Linux进程等待,程序替换与自主Shell实现
linux·笔记
禁默1 小时前
进程生命周期管理:从创建到终止的完整逻辑
linux·运维·服务器
程序员编程指南5 小时前
Qt 嵌入式 Linux 系统定制全指南
linux·c语言·开发语言·c++·qt
皓月盈江6 小时前
Linux Deepin深度操作系统应用商店加载失败,安装星火应用商店
linux·debian·deepin·国产操作系统·深度操作系统·星火应用商店·deepin应用商店加载失败
Linux技术芯8 小时前
#Linux内存管理# 详细介绍madvise函数的工作原理
linux