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
部署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 |