k8s-kubernetes常用命令,服务部署,可视化控制台Kubernetes Dashboard安装及token的生成
上一篇文章介绍了怎么,现在我们来学习下kubernetes的常用命令我们直接通过部署可视化控制台kubernetes-dashboard来顺便学习下kubernetes的常用命令及服务的部署。
上一篇文章介绍了怎么安装kubernetes,现在我们来学习下kubernetes的常用命令
我们直接通过部署可视化控制台kubernetes-dashboard来顺便学习下kubernetes的常用命令及服务的部署
kubernetes dashboard部署
执行下面的命令下载及安装 kubernetes dashboard
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
默认安装完成以后 kubernetes dashboard 服务使用的是 clusterIP 只能在 k8s 的内网访问。
配置服务让外界可以访问
要解决这个问题我们可以创建一个 nodeport 服务对外直接暴露 node IP 和端口,让外界能够直接访问。
输入以下命令完成 nodeport 的创建:
kubectl expose deployment kubernetes-dashboard --type=NodePort --name=kubernetes-dashboard-nodeport -n kubernetes-dashboard
使用下面的命令可以检查 nodeport 服务的状态
kubectl get service kubernetes-dashboard-nodeport -n kubernetes-dashboard
现在在浏览器中输入 https://ip:port 就可以看到登录界面了。这里的 port 就是系统给我们分配的暴露 kubernetes dashboard 的端口。在上面的例子中是 32398
创建用户及角色
root@ictficial:/opt/k8s# vim dashboard-adminuser.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 dashboard-adminuser.yaml
生成 token
kubectl -n kubernetes-dashboard create token admin-user --duration=720h
保存好 token,以后我们需要使用 token 登录 kubernetes dashboard.
完成以上步骤后我们就可以通过 dashboard 访问和控制我们的 k8s 系统了。
常用命令
kubectl get node #查看集群节点状态
kubectl get ns #查看命名空间
kubectl get pods -n kube-system #查看pod状态 -n 指定命名空间
kubectl logs -f -n kubernetes-dashboard kubernetes-dashboard-9f9799597-9w7ml
kubectl describe pods name | grep Failed #可以查看到具体信息
kubectl describe pod kubernetes-dashboard-6c7ccbcf87-bmrrg -n kubernetes-dashboard
kubectl delete pod --field-selector=status.phase=Failed --all-namespaces
kubectl create deployment gateway --image=lexang/dtb-gateway:tagname -o yaml --dry-run=client > gateway-deployment.yaml
#这个命令用于生成一个 Kubernetes Deployment 的 YAML 文件,该文件定义了一个名为 gateway 的 Deployment。这个 Deployment 使用了指定的 Docker 镜像 lexang/dtb-gateway:tagname 文件可能看起来像这样:
apiVersion: apps/v1
kind: Deployment
metadata:
name: gateway
spec:
replicas: 1
selector:
matchLabels:
app: gateway
template:
metadata:
labels:
app: gateway
spec:
containers:
- name: gateway
image: lexang/dtb-gateway:tagname
ports:
- containerPort: 80
kubectl apply -f gateway-deployment.yaml
kubectl expose deployment gateway --port=80 --target-port=48080 --dry-run=client -o yaml --type=NodePort --name=gateway-nodeport > gateway-service.yaml
# 这个命令的作用是生成一个定义 NodePort 类型服务的 YAML 文件。这个服务将名为 gateway 的 Deployment 暴露在端口 80 上,并将流量转发到后端容器的 48080 端口。生成的 YAML 文件内容会被保存到 gateway-service.yaml 文件中,而不会实际创建服务。生成的 gateway-service.yaml 文件可能看起来像这样:
apiVersion: v1
kind: Service
metadata:
name: gateway-nodeport
spec:
ports:
- port: 80
targetPort: 48080
protocol: TCP
selector:
app: gateway
type: NodePort
kubectl apply -f gateway-service.yaml
kubectl create namespace dev #创建namespace
kubectl run pod --image=nginx:latest -n dev
kubectl delete pod nginx -n dev #删除pod后会自动在重启pod 要删除pod 必须删除Pod控制器
kubectl get deploy -n dev #查询一下当前namespace下的Pod控制器
kubectl delete deploy nginx -n dev #删除此PodPod控制器
kubectl get pods --field-selector=status.phase!=Running -o json | kubectl delete -f - #删除集群中所有状态不是 "Running" 的 Pod
kubectl scale deployment prometheus-adapter --replicas=1 -n monitoring # 调整名为 prometheus-adapter 的 Deployment 的副本数量(replicas)
kubectl edit svc grafana -n monitoring #修改grafana service
kubectl get configmap -n monitoring -o wide #获取monitoring 命名空间下的configmap
kubectl get ns --show-labels #--show-labels 查看labels
kubectl version # 查看kubectl 版本
journalctl -f -u kubelet #查看kubelet日志
systemctl status kubelet.service #查看kubelet状态
重启kubelet:
systemctl stop kubelet.service &&
systemctl daemon-reload &&
systemctl start kubelet.service
20240913更新 kubernetes-dashboard 7.x安装
kubernetes-dashboard更新了大版本,3.X直接搞到7.x
从版本 7.0.0 开始,Kubernetes Dashboard 放弃了基于 Manifest 的安装方式,现在只支持基于
Helm 的安装
没有Helm的可以先安装Helm 官方手册:https://helm.sh/zh/docs/intro/install/
这里使用脚本安装:
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh
如果想直接执行安装,一句话搞定,运行
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
安装kubernetes-dashboard
# 添加 kubernetes-dashboard 仓库
helm repo add kubernetes-dashboard https://kubernetes.github.io/dashboard/
# 使用 kubernetes-dashboard Chart 部署名为 `kubernetes-dashboard` 的 Helm Release
helm upgrade --install kubernetes-dashboard kubernetes-dashboard/kubernetes-dashboard --create-namespace --namespace kubernetes-dashboard
验证
kubectl get serviceAccount,svc,deploy,pod -n kubernetes-dashboard
配置访问
修改service 的kubernetes-dashboard-kong-proxy 的type 为LoadBalancer 或者NodePort。此处我们修改为NodePort
kubectl edit svc -n kubernetes-dashboard kubernetes-dashboard-kong-proxy
原来:
修改后:
将 type: ClusterIP 修改为 type: NodePort,然后保存退出
然后获取svc,此时kubernetes-dashboard-kong-proxy是NodePort类型了
然后用NodeIp加NodePort就可以访问了
创建管理员账户
cat > dashboard-adminuser.yaml << EOF
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
---
apiVersion: v1
kind: Secret
metadata:
name: admin-user
namespace: kubernetes-dashboard
annotations:
kubernetes.io/service-account.name: "admin-user"
type: kubernetes.io/service-account-token
EOF
执行:
kubectl apply -f dashboard-adminuser.yaml
查看token:
kubectl get secret admin-user -n kubernetes-dashboard -o jsonpath={".data.token"} | base64 -d
更多推荐
所有评论(0)