k8s基操
文章目录环境配置Linux安装Docker安装kubectl安装minikubemacOS常用操作环境配置Linux安装DockerDocker学习笔记安装kubectlcurl -LO “https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl”sudo
环境配置
Linux
安装Docker
安装kubectl
- 下载安装
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
- sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
- 验证安装是否成功:
$ kubectl version --client
ref: Install and Set Up kubectl on Linux
安装minikube
- 根据官方的Manual安装即可。
minikube startcurl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 sudo install minikube-linux-amd64 /usr/local/bin/minikube
- 执行minikube start
在进行一系列必要的下载安装后,即可正常启动。
注意: 默认下载的是国外的镜像,如果有被墙的话,可以使用国内阿里云的镜像minikube start --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers
macOS
- 安装docker:brew install --cask docker
- 安装kubectl:brew install kubectl
- 安装minikube:brew install minikube
常用操作
-
启动k8s:
minikube start -
查看状态
minikube status -
获取集群名字
$ kubectl config view apiVersion: v1 clusters: - cluster: certificate-authority-data: DATA+OMITTED server: https://kubernetes.docker.internal:6443 name: docker-desktop contexts: - context: cluster: docker-desktop user: docker-desktop name: docker-desktop current-context: docker-desktop kind: Config preferences: {} users: - name: docker-desktop user: client-certificate-data: REDACTED client-key-data: REDACTED
或者
$ kubectl config view --minify -o jsonpath='{.clusters[].name}' docker-desktop $ kubectl config get-contexts CURRENT NAME CLUSTER AUTHINFO NAMESPACE * docker-desktop docker-desktop docker-desktop
-
查看命令空间(namespace):
kubectl get namespace -
kubectl get cs:查看组件健康状态
-
查看节点状态
$ kubectl get nodes -o wide NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME docker-desktop Ready control-plane,master 58d v1.21.5 192.168.65.4 <none> Docker Desktop 5.10.47-linuxkit docker://20.10.10
⚠️下述很多指令都可以在最后加上 -n [namespace] ,指定命令空间
-
获取节点node描述信息
$ kubectl describe node --v=9 // 使用--v=9参数可以看到CLI访问的RESTAPI
-
通过配置文件名或stdin创建一个集群资源对象
kubectl create -f [yaml/json] -
获取所有服务信息:
kubectl get svc -
获取集群pods信息:
kubectl get pods -A
-A: 表示所有的namespace -
获取pod更加详细信息:
kubectl get pods -o wide -
查看k8s资源状态:
资源包括(不区分大小写): pod(po),service(svc),replication controller(rc),deployment(deploy),replica set(rs), DaemonSet(ds),endpoint(ep),PersistentVolumeClaim(pvc)PersistentVolume(pv)$ kubectl get rs,deployment,pod,job --all-namespaces
-
创建一个pod实例
kubectl apply -f *.yml/json
一份简单的pod yaml配置:apiVersion: v1 kind: Pod metadata: name: test spec: containers: - name: test image: library/busybox command: ["/bin/sh"] args: ["-c", "while true; do echo hello; sleep 10;done"]
-
删除pod:
kubectl delete pod [pod name] -
删除pod的任务,避免pod重试:
kubectl delete job [pod name的前缀] -
进入pod容器内部(这个pod得在runing状态):
kubectl exec -it [pod name] -- /bin/bash kubectl exec -it [pod name] /bin/bash
-
进入一个正在运行包含多容器的pod
kubectl exec -it [pod] -c [container-name] /bin/bash
-
获取一个pod的日志输出
kubectl logs [pod] -
实时获取pod日志
kubectl logs -f pod/pod-name --tail=1
-
描述一个pod的状态
kubectl describe [pod] -
查看pods的label信息
kubectl get pods --show-labels -
查看一个pod的配置信息yaml
kubectl get pods [pod name] -o yaml -
kubectl expose
将资源暴露为新的Kubernetes Service。
示例:为RC的nginx创建service,并通过Service的80端口转发至容器的8000端口上。$ kubectl expose rc nginx --port=80 --target-port=8000
-
kubectl port-forward
ref 端口转发
可以将本地端口转发到指定的 Pod 端口上。
也可以将本地端口转发到服务(svc)、复制控制器(rs)或者部署(deploy)的端口。示例1: 将本地工作站上的 6379 端口转发到 redis-master pod 的 6379 端口:
$ kubectl port-forward redis-master 6379:6379
示例2:
# Forward to deployment kubectl port-forward deployment/redis-master 6379:6379 # Forward to replicaSet kubectl port-forward rs/redis-master 6379:6379 # Forward to service kubectl port-forward svc/redis-master 6379:6379
-
打上标签label
# 示例是给node打上标签 # kubectl label nodes <node_name> key1=val1 key2=val2 # kubectl label nodes 10.2.2.123 key1=val1 # kubectl label nodes 10.2.2.123 key2=val2 # kubectl label nodes 10.2.2.123 key1=val1 key2=val2
-
修改pod的label信息
kubectl label pods [pod name] [k=v] --overwrite
-
删除标签
kubectl label pods [pod name] [key]-
删除多个标签: kubectl label node/docker-desktop label1- label2-
-
查看label
查看所有pod的lablel: kubectl get pods --show-labels -l [筛选条件]
查看指定node label: kubectl get node/docker-desktop --show-labels
查看指定pod label: kubectl get pod/docker-desktop --show-labels
MEMO
修改更新运行中的资源
- 修改运行中的pod某个资源的配置并更新:
kubectl -n kube-system edit pod testpod -o yaml --save-config 或者 kubectl edit pod kube-controller-manager-docker-desktop -o yaml --save-config -n kube-system
- 如果自动升级失败,会备份一份修改后的yaml文件,用备份的yaml文件替换更新即可;
kubectl replace --force -f /tmp/kubectl-edit-26wwg.yaml
会先delete之前的,然后重新生成新的pod
获取controler
在yaml文件中会有:
Controlled By: DaemonSet/test
在pod中注入的环境变量均为字符串类型
env:
- name: PORT
value: "1234"
更多推荐
所有评论(0)