K8S

31 阅读1分钟

修改 StatefulSet 模板,保存后滚动式升级 POD(如改 image)

sudo kubectl edit statefulset odc-server -nprod

滚动式重启 POD (如修改元数据库后需要重启)

sudo kubectl rollout restart statefulset odc-server  -nprod

手动删除一个 Pod 会导致 StatefulSet 控制器创建一个新的 Pod 来替换它。 kubectl delete pod

修改 statefulset 副本个数

sudo kubectl scale statefulset odc-server -nprod --replicas=1

查看集群列表

kubectl config get-contexts
minikube profile list

查看集群配置

kubectl config view

启动一个新的集群

minikube start -p dev --apiserver-ips 11.124.9.79 --apiserver-port 8443

删除一个集群

minikube delete --profile=dev

查看 namespace 列表

kubectl get namespaces

查看 cluster-info

kubectl cluster-info

eg:

$kubectl cluster-info
Kubernetes control plane is running at https://192.168.58.2:8443
CoreDNS is running at https://192.168.58.2:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

查看 config

kubectl config view

开启代理

kubectl proxy --port 8081

开启代理 --address 表示代理端的 ip, accept-hosts 表示可接收所有的IP请求

kubectl proxy --port 8981 --address=11.124.9.79 --accept-hosts=^.*

查看k8s 的openapi

curl localhost:8981/openapi/v2

查看 k8s 版本

 curl 11.124.9.79:8981/version

开启远程访问

默认 minikube 不能远程访问,使用 kubectl 开启远程代理 --address 表示远程服务器的 IP, --accept-hosts='^.*' 表示可接收所有的 ip

kubectl proxy --port 8981 --address='11.124.9.79' --accept-hosts='^.*'

查看 minikube 日志

minikube logs kubelet

您可以根据需要替换组件名称,如api-server、controller-manager、etcd等。

把当前用户加入到 docker 组,退出后重连

stderr:
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/minikube/json": dial unix /var/run/docker.sock: connect: permission denied
sudo usermod -aG docker ${USER}

查看 job 日志

1.先查看 job 所在的 pod

kubectl get pod -l job-name={jobname}

eg:

$kubectl get pods -l job-name=pi
NAME       READY   STATUS      RESTARTS   AGE
pi-s5plx   0/1     Completed   0          4d16h

2.查看 pod 对应的日志

kubectl logs 

eg:

$kubectl logs pi-s5plx
3.141592653589793238462643383279502884197169399375105820974944592307816

通过 curl 创建 job

curl 命令

curl -X POST \
    -H "Content-Type: application/json" \
    -d @nginx-job.json \
    http://11.124.9.79:8981/apis/batch/v1/namespaces/default/jobs

nginx-job.json

{
  "apiVersion": "batch/v1",
  "kind": "Job",
  "metadata": {
    "name": "my-job"
  },
  "spec": {
    "template": {
      "metadata": {},
      "spec": {
        "containers": [
          {
            "name": "my-container",
            "image": "nginx:latest"
          }
        ],
        "restartPolicy": "Never"
      }
    },
    "backoffLimit": 2
  }
}

查询所有可用的镜像

kubectl get pods --all-namespaces -o jsonpath="{..image}" | tr -s '[[:space:]]' '\n' | sort | uniq

查看镜像日志

kubectl exec task-task-1701247955888 -it -- /bin/bash -c "tail -f -n 20 /opt/odc/log/odc.log"

kubectl exec odcsmoke-test -it -- /bin/bash -c "tail -f -n 20 /opt/odc/log/odc.log"

查看镜像

minikube image ls --format table

引用外部变量后启动 pod

envsubst < start-odc.yaml | kubectl apply -f -

查看 node 节点 IP

minikube ip 或者 kubectl get nodes -o wide

公有云进入到 odc 容器中,需要加容器名

sudo kubectl exec -it odc-server-0 -codc -nprod -- bash

批量删除 pod

sudo kubectl get pods -nprod | grep task | awk '{print $1}'| sudo  xargs kubectl delete pod -n prod