kubernetes组件:

  • etcd 一个高可用的K/V键值对存储和服务发现系统
  • flannel 实现夸主机的容器网络的通信
  • kube-apiserver 提供kubernetes集群的API调用
  • kube-controller-manager 确保集群服务,控制器群
  • kube-scheduler 调度容器,分配到Node。调度器,大大缓解了APISERVER入口压力
  • kubelet 在Node节点上按照配置文件中定义的容器规格启动容器
  • kube-proxy 提供网络代理服务

master

  • etcd
  • kube-apiserver
  • kube-controller-manage
  • kube-scheduler

node

  • kube-proxy
  • kubelet

节点加入集群

#重新生成新的token
kubeadm token create
kubeadm token list
#获取ca证书sha256编码hash值
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
#节点加入集群
kubeadm reset
kubeadm join 192.168.38.11:6443 --token c9afga.w3fue0yh3gzxczic 
--discovery-token-ca-cert-hash sha256:8b79b6461e58c07333cb2851fe74fd4374af8bbbe0bf7e040b415b86ad4fb89d
#查看节点
kubectl get nodes

新加入master节点

kubeadm join 192.168.0.200:6443 --token 9vr73a.a8uxyaju799qwdjv --discovery-token-ca-cert-hash sha256:7c2e69131a36ae2a042a339b33381c6d0d43887e2de83720eff5359e26aec866 --control-plane --certificate-key f8902e114ef118304e561c3ecd4d0b543adc226b7a07f675f56564185ffe0c07
#-  这个 --control-plane 命令通知 kubeadm join 创建一个新的控制平面。
#-  --certificate-key ... 将导致从集群中的 kubeadm-certs 秘钥下载控制平面证书并使用给定的密钥进行解密。

监控工具 ctop

https://github.com/bcicen/ctop

部署dashboard kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/recommended.yaml 删除dashboard kubectl delete -f https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/recommended.yaml

升级集群 kubeadm upgrade plan 输出格式异常 kubectl get cs -o yaml

镜像拉取策略

  • Always 执行时每次默认拉取
  • IfNotPresent 本地有不拉取
  • Never 从不拉取

常用命令

kubectl api-versions 查看支持的api kubectl api-resources 查看支持的资源 kubectl explain <resources> 查看资源所属apiVersion kubectl edit deployment/xxx kubectl rollout status deployment/xxx kubectl describe deployment xxx

yaml文件格式

  • apiVersion
  • kind
  • metadata
  • spec

常用资源类型

  • events
  • pods (po)
  • nodes(no)
  • deployments (deploy)
  • replicasets(rs)
  • daemonsets(ds)
  • statefulsets(sts)
  • jobs
  • cronjobs(cj)
  • services(svc)
  • persistentvolumes(pv)
  • persistentvolumeclaim (pvc)
  • all

我们可以通过explain命令,列出对象字段,这对编写yaml文件和了解对象有帮助 例如

查看 pod 的模板属性 kubectl explain pod

查看 pod 的 spec 模板中的属性 kubectl explain pod.spec


类别名称
资源对象Pod、ReplicaSet、ReplicationController、Deployment、StatefulSet、DaemonSet、Job、CronJob、HorizontalPodAutoscaling
配置对象Node、Namespace、Service、Secret、ConfigMap、Ingress、Label、ThirdPartyResource、 ServiceAccount
存储对象Volume、Persistent Volume
策略对象SecurityContext、ResourceQuota、LimitRange