k8s基本命令

kubectl run mynginx --image=nginx

# 查看default名称空间的Pod
kubectl get pod 
# 描述
kubectl describe pod 你自己的Pod名字
# 删除
kubectl delete pod Pod名字
# 查看Pod的运行日志
kubectl logs Pod名字

# 每个Pod - k8s都会分配一个ip
kubectl get pod -owide
# 使用Pod的ip+pod里面运行容器的端口
curl 192.168.169.136

进入 pod中的容器
kubectl exec -it mynginx -- /bin/bash

查看执行 名称空间下的pod信息
kubectl describe pod minio-859cb4d777-clnqz -n kubesphere-system


# 集群中的任意一个机器以及任意的应用都能通过Pod分配的ip来访问这个Pod
# 只能在集群内部访问

k8s常用命令

Kubernetes (k8s) 是一个开源的容器编排平台,用于自动化应用程序的部署、扩展和管理。下面是一些常用的 k8s 命令,这些命令通常通过 kubectl 工具来执行。kubectl 是 Kubernetes 的命令行工具,允许用户对集群进行控制。

集群信息
kubectl cluster-info - 显示集群的信息。
kubectl get nodes - 列出集群中的所有节点。
资源操作
kubectl get [resource] - 列出指定资源(如 pod, service, deployment 等)。
例如:kubectl get pods
kubectl describe [resource] [name] - 显示指定资源的详细信息。
例如:kubectl describe pod my-pod
kubectl create -f [filename.yaml] - 根据 YAML 文件创建资源。
kubectl apply -f [filename.yaml] - 应用或更新资源配置。
kubectl delete -f [filename.yaml] - 删除由 YAML 文件定义的资源。
kubectl edit [resource] [name] - 编辑已存在的资源。
Deployment 操作
kubectl rollout status deployment/[deployment-name] - 查看 Deployment 的状态。
kubectl rollout history deployment/[deployment-name] - 查看 Deployment 的历史版本。
kubectl set image deployment/[deployment-name] [container-name]=[image:tag] - 更新 Deployment 中容器的镜像。
kubectl rollout undo deployment/[deployment-name] - 回滚到上一个版本。
kubectl scale --replicas=[number] deployment/[deployment-name] - 扩展或缩减副本数量。
Pod 操作
kubectl exec -it [pod-name] -- /bin/sh - 在指定 Pod 内打开 shell 会话。
kubectl logs [pod-name] - 获取 Pod 的日志输出。
kubectl top pod [pod-name] - 显示指定 Pod 的资源使用情况(需要 Metrics Server)。
Service 操作
kubectl get svc - 列出所有服务。
kubectl expose [resource] [name] --port=[port-number] --target-port=[target-port] - 将后端暴露为一个新的服务。
Namespace 操作
kubectl get namespaces - 列出所有命名空间。
kubectl create namespace [namespace-name] - 创建一个新的命名空间。
kubectl config set-context --current --namespace=[namespace-name] - 设置当前上下文的默认命名空间。
其他
kubectl api-resources - 列出所有可用的 API 资源。
kubectl api-versions - 列出服务器支持的所有 API 版本。
kubectl version - 显示客户端和服务端的版本信息。

k8s组件命令

API Server
kubectl get --raw='/healthz' - 检查 API Server 的健康状态。
etcd
通常不直接通过 kubectl 来操作 etcd,但可以通过 etcdctl 工具来管理:
etcdctl --endpoints=[etcd-endpoint] member list - 列出所有 etcd 成员。
etcdctl --endpoints=[etcd-endpoint] endpoint status - 显示 etcd 端点的状态。
Controller Manager
kubectl get componentstatus - 查看包括 controller-manager 在内的控制平面组件的状态。
Scheduler
kubectl get componentstatus - 同样可以查看 scheduler 的状态。
节点组件
Kubelet
kubectl get nodes -o wide - 获取节点信息,其中会包含 Kubelet 的一些基本信息。
ssh [node-ip] "systemctl status kubelet" - 远程登录到节点上检查 Kubelet 服务的状态(需要 SSH 访问权限)。
Kube Proxy
kubectl get pods -n kube-system -l k8s-app=kube-proxy - 查看 kube-proxy Pod 的状态。
kubectl logs -n kube-system -l k8s-app=kube-proxy - 获取 kube-proxy 的日志。
Container Runtime (如 Docker, containerd)
docker ps 或 crictl ps - 列出当前运行的容器(取决于所使用的容器运行时)。
docker info 或 crictl info - 获取容器运行时的信息。
额外工具和服务
DNS (CoreDNS)
kubectl get svc,pods -n kube-system -l k8s-app=kube-dns - 查看 CoreDNS 服务和 Pod 的状态。
kubectl logs -n kube-system -l k8s-app=kube-dns - 获取 CoreDNS 的日志。
Ingress Controller
kubectl get ingress - 列出所有的 Ingress 资源。
kubectl describe ingress [ingress-name] - 描述指定的 Ingress 资源。
kubectl logs -n [namespace] -l app=[ingress-controller-label] - 获取 Ingress Controller 的日志。
Metrics Server
kubectl top nodes - 查看节点资源使用情况。
kubectl top pods - 查看 Pod 资源使用情况。
节点 (Nodes)
kubectl get nodes -o wide - 列出集群中的所有节点,并显示额外的信息如内部 IP、角色等。
Pod
kubectl get pods -o wide - 列出所有的 Pod,并显示额外的信息如所在的节点、内部 IP 等。
kubectl get pod [pod-name] -o wide - 显示特定 Pod 的详细信息,包括节点和内部 IP。
服务 (Services)
kubectl get services -o wide - 列出所有的服务,并显示额外的信息如外部 IP(如果有)和选择器等。
部署 (Deployments)
kubectl get deployments -o wide - 列出所有的部署,并显示额外的信息如可用副本数、更新策略等。
副本集 (ReplicaSets)
kubectl get replicasets -o wide - 列出所有的 ReplicaSet,并显示额外的信息如期望的副本数、当前的副本数等。
守护进程集 (DaemonSets)
kubectl get daemonsets -o wide - 列出所有的 DaemonSet,并显示额外的信息如期望的节点数、当前的节点数等。
状态集 (StatefulSets)
kubectl get statefulsets -o wide - 列出所有的 StatefulSet,并显示额外的信息如期望的副本数、当前的副本数等。
作业 (Jobs) 和定时任务 (CronJobs)
kubectl get jobs -o wide - 列出所有的 Job,并显示额外的信息如完成的状态等。
kubectl get cronjobs -o wide - 列出所有的 CronJob,并显示额外的信息如调度时间等。

depment部署nginx

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80

---
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
  labels:
    app: nginx
spec:
  type: ClusterIP
  ports:
  - port: 80
    targetPort: 80
    protocol: TCP
  selector:
    app: nginx
###
在这个YAML文件中:

Deployment 被用来保证在任何时候都有三个Nginx实例在运行。
selector.matchLabels 指定了Deployment将如何选择要管理的Pod,这里通过标签app: nginx来匹配。
template 定义了Pod的模板,包括容器镜像、端口等信息。
Service 的类型是ClusterIP,这意味着该服务只会在集群内部可用。如果想从集群外部访问Nginx,可以更改type为NodePort或LoadBalancer,具体取决于云提供商和网络配置。
ports 下定义了服务监听的端口和服务转发到的Pod端口。
保存上述内容到一个名为nginx-deployment.yaml的文件中,然后使用kubectl命令行工具来应用配置:

bash

kubectl apply -f nginx-deployment.yaml
这将会创建一个名为nginx-deployment的Deployment和一个名为nginx-service的服务。可以在Kubernetes集群中查看这些资源的状态:

bash

kubectl get deployments
kubectl get pods
kubectl get services
# 清除所有Pod,比较下面两个命令有何不同效果?
kubectl run mynginx --image=nginx

kubectl create deployment mytomcat --image=tomcat:8.5.68
# 自愈能力

想真正删除 deployment部署的应用
kubectl get deploy
NAME      READY   UP-TO-DATE   AVAILABLE   AGE
mynginx   1/1     1            1           6m58s

# kubectl delete deploy mynginx
这样才是彻底把deploy部署的应用删掉



# kubectl taint nodes master node-role.kubernetes.io/master-
node/master untainted

一站式部署kubesphere

安装一下软件包
dnf install -y socat conntrack ebtables ipset vim

执行
export KKZONE=cn

执行,这个地方可能要多试几次
curl -sfL https://get-kk.kubesphere.io | VERSION=v3.0.13 sh -
chmod +x kk

按照网上方式不行 ,换成这个版本
安装总是失败,换成这个版本就好了
./kk create config --with-kubernetes v1.22.17 --with-kubesphere v3.4.1

修改生成的配置文件
修改集群主机配置
 vi config-sample.yaml
主要修改hosts  
rolegroups

 
 执行然后等待
  ./kk create cluster -f config-sample.yaml