k8s docker 运维

kubectl常用命令:

1、 kubectl get po -o wide
    kubectl get pods -o wide -n=appserver(带命名空间)
    获取pods
2、 kubectl get svc
    获取service
3、 kubectl get no
    获取nodes
4、 kubectl get ep
    获取service负载pod ip
5、 kubectl delete pods [pod]
    kubectl delete service [service]
    删除单个pod/service
6、 kubectl logs [pods]
    查看pod日志
7、 kubectl exec -it [pod] bash
    进入pod
8、kubectl describe pods [pod]
    查看pod的详情
9、kubectl get cs
     查看k8s各组件状态
10、kubectl label nodes kube-node node=ttscarweb   kubectl get node -a -l "node=ttscarweb"
master重启命令
systemctl restart etcd kube-apiserver kube-scheduler kube-controller-manager
slave重启命令
systemctl restart flanneld kubelet kube-proxy docker

yaml文件

主要是用于定义pods、service等的配置文件
命令:
kubectl create -f *.yaml
kubectl delete -f *.yaml
kubectl apply -f *.yaml
创建/删除/更新 用yaml定义的各种资源

docker常用命令

1、docker run -itd -v /etc/localtime:/etc/localtime:ro -p 8080:8080 [dockerimages] bash
运行一个docker (开放端口8080)
2、docker exec -it [dockercontainer] bash
进入指定的docker

kubernetes中,如果docker镜像需要登录,则需创建secret,创建见
kubectl create secret docker-registry dockerlogin --namespace=appserver --docker-server=*** --docker-username=*** --docker-password=*** --docker-email=***

执行docker命令
docker exec -d export /bin/sh /start/start.sh

重要命令

  1. 删除版本为null的镜像
    docker images|grep none|awk '{print $3 }'|xargs docker rmi
  2. flanneld错误日志
    flanneld -alsologtostderr
    systemctl status flanneld
    route -n
    tcpdump -i flannel0 -nn host 172.17.62.0(docker0)
    iptables -t nat -L KUBE-SERVICES -n
  3. etcdctl get /atomic.io/network/subnets/172.17.23.0-24
  4. ifconfig flannel.1 down
  5. docker rm -f docker ps -a -q(删除所有docker);docker rmi -f docker images -a -q(删除所有镜像)
  6. etcdctl get /atomic.io/network/config
  7. traceroute

注意

  1. node节点是可以拼通其他节点容器ip的!
  2. http://192.168.24.52:2379/v2/keys
  3. etcdctl -C http://10.253.44.231:2379 set /atomic.io/network/config '{"Network":"172.17.0.0/16","Backend":{"Type":"vxlan"} }'
    etcdctl -C http://10.253.44.231:2379 set /atomic.io/network/config '{"Network":"172.17.0.0/16","SubnetLen":25,"Backend":{"Type":"vxlan"} }' --加上vxlan模式,
    etcdctl -C http://10.250.250.7:2379 set /atomic.io/network/config '{"Network":"172.17.0.0/16","SubnetLen":25,"Backend":{"Type":"host-gw"} }'--加上host-gw模式,默认是udp模式,另还有hostgw模式,好像比vxlan还要好,另calico和weave可以替代flannel,比flannel稳定。
  4. 修改host-gw网络和vxlan的区别,就是把type改成相应值就行了,其他不用另外配
  5. vim /etc/sysconfig/flanneld
    FLANNEL_OPTIONS="-iface=eth0 -public-ip=10.139.52.91 -ip-masq=true"
    (非常重要,如果金融云不指定的话,挂载网卡就是公网网卡了。应该用内网。这个配置加上后,用vxlan就没什么问题了,这个问题花费了一个周末)
  6. 如果flannel网络不通,重点检查service docker status和service flannel status,不能有错误。
  7. registry.access.redhat.com/rhel7/pod-infrastructure 这个镜像不能删除,是k8s需要的。如果不小心删除了,需要把这个镜像从其他node上push到阿里云上,然后pull下来,改/etc/kubernetes/kubelet 的KUBELET_POD_INFRA_CONTAINER值就行了 【这个问题其实是docker版本问题导致的,新版本会有问题,应该沿用老版本】
  8. 除了service的cluster-ip外,其他172.17网段的ip在node上都是能ping通的
  9. VxLan使用8472端口,8285端口作为UDP
  10. /run/flannel/subnet.env 是flannel写的环境变量; source /run/flannel/subnet.env
  11. 重启flannel或其他原因导致flannel和docker不在同一个网段的,需要reboot才能解决问题
  12. vim /etc/docker/daemon.json 设置"bip":"172.17.10.1/24"可以自定义docker网段

问题解决:

  1. 要初始化k8s,最好etcd储存文件也删掉
  2. docker保留客户端ip,service.spec.externalTrafficPolicy: Cluster(默认)和"Local",local值可能导致负载不平衡

参考:

  1. https://www.kubernetes.org.cn/3682.html(flannel介绍的最详细的文章)
  2. http://www.mamicode.com/info-detail-2121290.html、 http://dockone.io/question/1393(flannel网络不通定位排查)
  3. https://blog.csdn.net/ganpuzhong42/article/details/77853131(flannel和其他组件性能对比)
  4. https://segmentfault.com/a/1190000006594822、 http://www.dockone.io/article/1115(比较好的解决docker网络比较文章)

你可能感兴趣的:(k8s docker 运维)