k8s 常用命令
Posted rigidwang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了k8s 常用命令相关的知识,希望对你有一定的参考价值。
# 启动etcd存储服务
service etcd start
# 运行master
cd /opt/kubernetes/bin
./apiserver.sh 192.168.220.135 http://192.168.220.135:2379
./scheduler.sh 192.168.220.135
./controller-manager.sh 192.168.220.135
# 运行node(需要先禁用swap交换缓存,运行命令 swapoff -a)
cd /opt/kubernetes/bin
./kubelet.sh 192.168.220.138 192.168.220.139 10.10.10.2
./proxy.sh 192.168.220.135 192.168.220.136
# node 节点日志
tail -f /var/log/messages
# 查看集群状态
kubectl get node
kubectl get componentstatus
# 查看集群所有信息
kubectl get all
# 查看nginx服务所在docke容器节点,一个服务也是一个负载均衡
kubectl get ep nginx
# 命令行管理对象实例
# 1.基于nginx镜像,创建hello-world pod
kubectl run hello-world --replicas=1 --labels="app=example" --image=nginx:latest --port=80
# 2.以上命令会自动创建rs,查看rs
kubectl get rs
kubectl describe rs rs_name
# 3.以上命令会自动创建deployment,deployment负责管理rs和pod
kubectl describe deploy/hello-world
kubectl edit deploy hello-world
# 4.声明服务
kubectl expose deployment hello-world --port=88 --target-port=80 --name=example-service
kubectl get mvc
# pod扩容
kubectl sacle deployment --replicas=10 hello-world
# pod删除,pod不能直接删除否则还会重新创建,需要删除pod的控制器
kubectl delete deployment hello-world
# pod日志实时查看
kubectl logs -f pod/hello-world-cc85df
# 查看pod里面容器的日志
kubectl logs pod-test -c hello-write
# 查看容pod里面容器的环境变量
exec nginx-deployment-5b4b59b4b8-ktxcx env
# pod中镜像升级
kubectl set image deploy/nginx-deployment nginx=nginx:1.11
#实时观察升级发布状态:滚动升级,杀掉一个pod,升级一个pod然后再启动该pod。接着再杀掉一个pod。。。
kubectl rollout status deployment/nginx-deployment
#查看deployment历史修订版本
kubectl rollout history deployment/nginx-deployment
# docker镜像暴力删除
rm -rf /var/lib/docker
# 镜像加速器(docker17.05 以上版本执行)
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://8ca15b27.m.daocloud.io
# 支持三种策略:
Always:当容器终止退出后,总是重启容器,默认策略。
OnFailure:当容器异常退出(退出状态码非0)时,才重启容器。
Never:当容器终止退出,从不重启容器。
# 进入pod
kubectl exec pod-test -it bash
# 进入pod中的容器运行命令以及排错
kubectl exec pod-test -c hello-world -it bash
# 替换pod
kubectl replace -f pod.yaml --force
# 指定命名空间查看pod
kubectl get pods --namespace=kube-system
# 创建flanneld.service
[Unit]
Description=flanneld overlay address etcd agent
After=network.target
Before=docker.service
[Service]
Type=notify
ExecStart=/usr/bin/flanneld -etcd-endpoints=http://192.168.220.138:2379
[Install]
RequiredBy=docker.service
WantedBy=multi-user.target
# 启动flanneld 【http://time-track.cn/deploy-kubernetes-step-by-step-on-trusty-section-2.html】
systemctl restart flanneld.service
# 查看flanneld使用的网段
cat /run/flannel/subnet.env
# 让docker在自己的docker0上面使用自定义网段
Node? ~ cat /etc/systemd/system/docker.service.d/docker.conf
[Service]
ExecStart=
ExecStart=/usr/bin/docker daemon -H fd:// --bip=10.1.48.1/24 --mtu=1472
# 进入容器测试
docker run -it busybox sh
# 截获本机和其他主机的通信
tcpdump host 192.168.220.138 and 192.168.220.139
# 截获主机80端口发出和接收的http数据包
tcpdump tcp port 80 and host 192.168.220.138
# 查询etcd 数据
etcdctl ls /coreos.com/network/subnets
service etcd start
# 运行master
cd /opt/kubernetes/bin
./apiserver.sh 192.168.220.135 http://192.168.220.135:2379
./scheduler.sh 192.168.220.135
./controller-manager.sh 192.168.220.135
# 运行node(需要先禁用swap交换缓存,运行命令 swapoff -a)
cd /opt/kubernetes/bin
./kubelet.sh 192.168.220.138 192.168.220.139 10.10.10.2
./proxy.sh 192.168.220.135 192.168.220.136
# node 节点日志
tail -f /var/log/messages
# 查看集群状态
kubectl get node
kubectl get componentstatus
# 查看集群所有信息
kubectl get all
# 查看nginx服务所在docke容器节点,一个服务也是一个负载均衡
kubectl get ep nginx
# 命令行管理对象实例
# 1.基于nginx镜像,创建hello-world pod
kubectl run hello-world --replicas=1 --labels="app=example" --image=nginx:latest --port=80
# 2.以上命令会自动创建rs,查看rs
kubectl get rs
kubectl describe rs rs_name
# 3.以上命令会自动创建deployment,deployment负责管理rs和pod
kubectl describe deploy/hello-world
kubectl edit deploy hello-world
# 4.声明服务
kubectl expose deployment hello-world --port=88 --target-port=80 --name=example-service
kubectl get mvc
# pod扩容
kubectl sacle deployment --replicas=10 hello-world
# pod删除,pod不能直接删除否则还会重新创建,需要删除pod的控制器
kubectl delete deployment hello-world
# pod日志实时查看
kubectl logs -f pod/hello-world-cc85df
# 查看pod里面容器的日志
kubectl logs pod-test -c hello-write
# 查看容pod里面容器的环境变量
exec nginx-deployment-5b4b59b4b8-ktxcx env
# pod中镜像升级
kubectl set image deploy/nginx-deployment nginx=nginx:1.11
#实时观察升级发布状态:滚动升级,杀掉一个pod,升级一个pod然后再启动该pod。接着再杀掉一个pod。。。
kubectl rollout status deployment/nginx-deployment
#查看deployment历史修订版本
kubectl rollout history deployment/nginx-deployment
# docker镜像暴力删除
rm -rf /var/lib/docker
# 镜像加速器(docker17.05 以上版本执行)
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://8ca15b27.m.daocloud.io
# 支持三种策略:
Always:当容器终止退出后,总是重启容器,默认策略。
OnFailure:当容器异常退出(退出状态码非0)时,才重启容器。
Never:当容器终止退出,从不重启容器。
# 进入pod
kubectl exec pod-test -it bash
# 进入pod中的容器运行命令以及排错
kubectl exec pod-test -c hello-world -it bash
# 替换pod
kubectl replace -f pod.yaml --force
# 指定命名空间查看pod
kubectl get pods --namespace=kube-system
# 创建flanneld.service
[Unit]
Description=flanneld overlay address etcd agent
After=network.target
Before=docker.service
[Service]
Type=notify
ExecStart=/usr/bin/flanneld -etcd-endpoints=http://192.168.220.138:2379
[Install]
RequiredBy=docker.service
WantedBy=multi-user.target
# 启动flanneld 【http://time-track.cn/deploy-kubernetes-step-by-step-on-trusty-section-2.html】
systemctl restart flanneld.service
# 查看flanneld使用的网段
cat /run/flannel/subnet.env
# 让docker在自己的docker0上面使用自定义网段
Node? ~ cat /etc/systemd/system/docker.service.d/docker.conf
[Service]
ExecStart=
ExecStart=/usr/bin/docker daemon -H fd:// --bip=10.1.48.1/24 --mtu=1472
# 进入容器测试
docker run -it busybox sh
# 截获本机和其他主机的通信
tcpdump host 192.168.220.138 and 192.168.220.139
# 截获主机80端口发出和接收的http数据包
tcpdump tcp port 80 and host 192.168.220.138
# 查询etcd 数据
etcdctl ls /coreos.com/network/subnets
以上是关于k8s 常用命令的主要内容,如果未能解决你的问题,请参考以下文章