k8s基础操作

在这里插入图片描述
kubectl create -f xx.yaml

kubectl expose deployment/nginx --type=“NodePort” --port=80 --name=nginx

kubectl expose rc nginx --port=80 --target-port=8000
–为RC的nginx创建service,并通过Service的80端口转发至容器的8000端口上。

kubectl run nginx --image=nginx --dry-run

kubectl set image deployment/nginx nginx=nginx:1.9.1
–将deployment中的nginx容器镜像设置为“nginx:1.9.1”。

kubectl delete pods,services -l name=myLabel
–删除 Label name = myLabel的pod和Service。

在这里插入图片描述
kubectl rollout undo deployment/abc --回滚到之前的deployment
kubectl rollout status daemonset/foo --查看daemonet的状态
kubectl scale --replicas=3 rs/foo --扩展名称为foo的资源到3个
kubectl autoscale deployment nginx-test --min=10 --max=15 --cpu-percent=80 --集群支持 horizontal pod autoscaling 的话

kubectl cluster-info dump --进一步调试和诊断集群问题
kubectl top用于显示资源(CPU/内存/存储)使用情况。可用资源包括:node、pod。
kubectl top node
kubectl top pod

kubectl cordon 192.168.30.130 --将node标记为不可调度状态
kubectl get node
NAME STATUS ROLES AGE VERSION
192.168.30.130 Ready,SchedulingDisabled node 10d v1.11.6 --该node已经显示为SchedulingDisabled状态
kubectl uncordon将node标记为可调度的状态。

kubectl drain可以让node在维护期间排除节点。drain本意排水,意思是将出问题的node下的pod转移到其它node下运行。

kubectl taint用来更新一个或多个节点上的tain
在这里插入图片描述
类似于docker attach的功能,用于取得实时的类似于kubectl logs的信息

  -c, --container="": 容器名。
  
  -i, --stdin[=false]: 将控制台输入发送到容器。
  
  -t, --tty[=false]: 将标准输入控制台作为容器的控制台输入。
[root@ku8-1 tmp]# kubectl get pods
NAME                         READY     STATUS    RESTARTS   AGE
mysql-478535978-1dnm2        1/1       Running   0          1h
sonarqube-3574384362-m7mdq   1/1       Running   0          1h
[root@ku8-1 tmp]# kubectl attach sonarqube-3574384362-m7mdq
If you don't see a command prompt, try pressing enter.

kubectl port-forward pod/mysql-5fb6c74b86-xg97j 3306:3306
创建连接,将本地的 6379 端口转发到运行在 Pod 中的 Redis 服务器的 6379 端口。有了这个连接您就可以在本地工作站中调试运行在 Pod 中的数据库

kubectl proxy运行一个到Kubernetes API服务器的代理。建立一条通往API服务器的隧道,可以方便查看API服务器上的资源。该命令不常用。

API Server 代理

kubectl proxy 命令提供了一个 Kubernetes API 服务的 HTTP 代理。

$ kubectl proxy --port=8080
Starting to serve on 127.0.0.1:8080

可以通过代理地址 http://localhost:8080/api/ 来直接访问 Kubernetes API,比如查询 Pod 列表

curl http://localhost:8080/api/v1/namespaces/default/pods

注意,如果通过 --address 指定了非 localhost 的地址,则访问 8080 端口时会报未授权的错误,可以设置 --accept-hosts 来避免这个问题( 不推荐生产环境这么设置 ):

kubectl proxy --address=‘0.0.0.0’ --port=8080 --accept-hosts=’^*$’

kubectl cp将文件和目录复制到容器或从容器复制到容器。

# kubectl exec -it mysql-5fb6c74b86-xg97j bash

root@mysql-5fb6c74b86-xg97j:/# echo "111222" > 1.txt

root@mysql-5fb6c74b86-xg97j:/# pwd      
/
root@mysql-5fb6c74b86-xg97j:/# exit

# kubectl cp mysql-5fb6c74b86-xg97j:/1.txt 1.txt
tar: Removing leading `/' from member names

# ls
1.txt  

# cat 1.txt 
111222

kubectl patch 使用(patch)补丁修改、更新资源的字段。

kubectl patch node k8s-node-1 -p '{"spec":{"unschedulable":true}}'

kubectl replace -f nginx_forreplace.yaml

kubectl convert 该命令将文件名,目录或 URL 作为输入,并将其转换为由 --output-version 标志指定的版本格式. 如果目标版本未指定或不支持,请转换为最新版本.
kubectl convert -f pod.yaml --将 “pod.yaml” 转换为最新版本并打印到 stdout.

在这里插入图片描述
kubectl label --overwrite pods foo status=unhealthy

annotate

kubectl annotate用来更新一个或多个资源的注释信息。

  • Annotations由key/value组成。目的是存储辅助数据,特别是通过工具和系统扩展操作的数据,更多介绍在这里。

  • 如果–overwrite为true,现有的annotations可以被覆盖,否则试图覆盖annotations将会报错。

  • 如果设置了–resource-version,则更新将使用此resource version,否则将使用原有的resource
    version。

用法和label有点类似。增加注释:

# kubectl annotate pod nginx-c9bd9bc4-8hnbx description="running nginx"
pod/nginx-c9bd9bc4-8hnbx annotated

# kubectl describe pod nginx-c9bd9bc4-8hnbx
Name:           nginx-c9bd9bc4-8hnbx
Namespace:      default
Node:           192.168.1.233/192.168.1.233
Start Time:     Wed, 06 Mar 2019 11:16:02 +0800
Labels:         app=nginx
                pod-template-hash=75685670
Annotations:    description=running nginx

删除注释:

# kubectl annotate pod nginx-c9bd9bc4-8hnbx description-
pod/nginx-c9bd9bc4-8hnbx annotated

# kubectl describe pod nginx-c9bd9bc4-8hnbx
Name:           nginx-c9bd9bc4-8hnbx
Namespace:      default
Node:           192.168.1.233/192.168.1.233
Start Time:     Wed, 06 Mar 2019 11:16:02 +0800
Labels:         app=nginx
                pod-template-hash=75685670
Annotations:    <none>

在注释名后跟“-”即可删除对应注释名的注释。

kubectl completion
配置别名

# vim ~/.bashrc
添加 alias k='kubectl'
# source ~/.bashrc

在这里插入图片描述
配置命令行补齐

# yum install -y bash-completion -y
# chmod +x /usr/share/bash-completion/bash_completion
# /usr/share/bash-completion/bash_completion
# source /usr/share/bash-completion/bash_completion
# source <(kubectl completion bash)
# kubectl desc<TAB> no<TAB> node<TAB>

kubectl config用来修改kubeconfig文件。
子命令:

current-context     显示当前上下文
delete-cluster      从kubeconfig中删除指定的集群
delete-context      从kubeconfig中删除指定的上下文
get-clusters        显示kubeconfig中定义的集群
get-context         描述一个或多个上下文
rename-context      从kubeconfig文件重命名上下文。
set                 在kubeconfig文件中设置一个单独的值
set-cluster         在kubeconfig中设置一个集群条目
set-context         在kubeconfig中设置一个上下文条目
set-credentials     在kubeconfig中设置一个用户条目
unset               取消设置kubeconfig文件中的单个值
use-context         在kubeconfig文件中设置当前上下文
view                显示合并的kubeconfig设置或指定的kubeconfig文件
# kubectl config view

apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: REDACTED
    server: https://192.168.1.52:8443
  name: kubernetes
contexts:
- context:
    cluster: kubernetes
    user: admin
  name: kubernetes
current-context: kubernetes
kind: Config
preferences: {}
users:
- name: admin
  user:
    client-certificate-data: REDACTED
    client-key-data: REDACTED
    
# kubectl config current-context 
kubernetes

# kubectl config get-clusters 
NAME
kubernetes

在这里插入图片描述
在这里插入图片描述
kubectl cluster-info --查看集群信息

kubectl get cs或
kubectl get comonentstatus --查看集群组件的状态信息

kubectl describe回车–查看命令的简称

kubectl get pod --查看pod

kubectl run nginx --image nginx --port 80
kubectl get pod --watch --实时看pod创建过程
kubectl get deployment --查看deployment

kubectl get deployment nginx
或kubectl get deployment/nginx --查看某一个deployment

kubectl get deployment/nginx -owide --查看某一个deployment更多信息

kubectl get pod -owide

kubectl describe pod xxx

kubectl scale deployment --replicas=2

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值