这篇文章主要讲解了“Kubernetes知识点有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Kubernetes知识点有哪些”吧!
k8s对象组件

Node工作节点
负责应用运行(生产环境至少需要三个工作节点)
单Node上可工作数个Pod
运行三项关键服务
Kubelet:节点上的集群客户端,负责节点管理及对master通信的代理
Kube Proxy:维护网络以支持Service服务层
Container Runtime:容器运行时交互
Master管理节点
ReplicaSet
Pod容器组
Deployment
Service服务
Service对象类型
ClusterIP:默认方式,服务仅开放到集群内网IP(通过kube-proxy调用iptables创建规则将流量转发到pod中,直接ping不通,因为不存在绑定的实际网络设备)
NodePort:在集群所有woker node静态端口NAT映射到ClusterIP服务(可对外暴露服务,端口范围30000~32767)
LoadBalancer:在支持的云厂商上自动创建L4 LBS节点并路由到NodePort服务(可对外暴露服务)
ExternalName:基于CNAME机制使用字符串来开放服务
端口类别:
从简单到复杂可以分成三类
StatefullSet
DaemonSet
Ingress
作为公网访问集群后端服务的入口,是Service Nodeport等之外更高级的服务暴露模型
功能包括:集群外部的L7负载均衡+服务发现、反向代理,SSL截断,虚拟主机头访问
仅能在标准80/443口上暴露服务,可配置http访问规则,包括:host、path
驻留在control plane节点上,不占用work node的主机端口资源
IngressController
Volume
基于插件形式实现,扩展性强
Minikube - 轻量级K8S架设方案
docker准备
Docker Daemon
Docker Machine
安装
curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/
curl -Lo kubectl https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl && chmod +x kubectl && sudo mv kubectl /usr/local/bin/
以下内容写入/init_minikube.sh并赋予可执行权限
#!/bin/bash
export MINIKUBE_WANTUPDATENOTIFICATION=false
export MINIKUBE_WANTREPORTERRORPROMPT=false
export MINIKUBE_HOME=$HOME
export CHANGE_MINIKUBE_NONE_USER=true
export KUBECONFIG=$HOME/.kube/config
mkdir -p $HOME/.kube && touch $HOME/.kube/config
minikube start --vm-driver=none #将k8s集群通过none驱动模式直接装入宿主机
使用
sudo su - #none驱动模式安装minkube要求使用root账号去管理操作
/init_minikube.sh
minikube dashboard --url #默认在30000端口开放k8s管理界面
minikube service frontend --url #指定服务的地址
#插件管理
minikube addons list
minikube addons enable 插件名
安装排错
K8S集群管理
#管理命令(资源类型:nodes、pods、deployments、events、service、ing、all)
kubectl version
kubectl cluster-info #显示集群信息
kubectl get 资源类型 [-l label键=label值] [-n 名字空间 / --all-namespaces] #罗列工作节点
kubectl config view #查看配置
kubectl describe 资源类型 #资源详情
kubectl logs 资源名 #容器打印日志
kubectl label 资源类型 资源名 label键=label值 #打标签
#常用命令
kubectl get pod -o wide/yaml #检查pod所在节点
kubectl get services 服务名 -o yaml #检查服务详情
kubectl delete pod --grace-period=0 --force pod名 #立即强制删除pod
#容器执行命令
kubectl exec -ti Pod名 [-c 容器名] -- 命令
kubectl exec Pod名 [-c 容器名] -- 命令
#configmap管理
kubectl create configmap 配置名 --from-file=配置文件路径
kubectl get configmap 配置名 -o yaml
#创建deployment部署一个应用到Pod
kubectl create secret docker-registry regcred --docker-server=<your-registry-server> --docker-username=<your-name> --docker-password=<your-pword> --docker-email=<your-email> #安装registry凭据
方法1:kubectl run 部署名 --image=镜像地址 --port=8080 --replicas=副本数 --labels="key=value"
方法2:kubectl create|apply -f deployment.yaml
kubectl get deployments
kubectl get pods
#更新应用
kubectl set image deployments/部署名 部署名=镜像地址
kubectl rollout status deployments/部署名 #查看更新状态
#回滚应用
kubectl rollout undo deployments/部署名
#应用伸缩
kubectl scale deployments/部署名 --replicas=副本数
#开放pod服务为service
kubectl expose deployment/部署名 --name=服务名 --type=NodePort|LoadBalancer--port 端口号
kubectl get services #可查看服务开放地址
#下线服务
kubectl delete service -l label键=label值
kubectl delete deployment -l label键=label值
#禁止非worker节点调度运行POD
kubectl taint node 节点名 node-role.kubernetes.io/节点名="":NoSchedule
健康检查
Rancher
安装
防火墙开放端口
SSH:22/tcp
RancherServer:8443/tcp、8080/tcp
K8S :6443(tcp ApiServer)、10250(tcp KubeletApi)、10251(tcp Schedule)、10252(tcp Control)、10255(tcp Control)、10256(tcp Kubeproxy)、30000/32767(tcp NodePort)
VXLAN:4789/udp
IPSec:500/udp、4500/udp
Etcd:2379/tcp、2380/tcp
Canal:80/tcp、443/tcp
Flannel:8285/udp、8472/udp、2375/udp
开启IPV4路由转发(CentOS 7.4+不必此操作)
#/etc/sysctl.conf追加一行
net.ipv4.ip_forward = 1
Docker准备
HTTPS证书准备
docker run -it --rm -p 443:443 -p 80:80 --name certbot \
-v "/etc/letsencrypt:/etc/letsencrypt" \
-v "/var/lib/letsencrypt:/var/lib/letsencrypt" \
certbot/certbot certonly -n -v --standalone --agree-tos --email=admin@rancher.example.com -d rancher.example.com
cd /etc/letsencrypt
sudo ln -s live/rancher.example.com/fullchain.pem cert.pem
sudo ln -s live/rancher.example.com/privkey.pem key.pem
节点机调整
# hostname要求符合如下正则 `'[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*'`
sudo hostnamectl set-hostname k8s-worker-1.cluster-a
sudo hostnamectl status
Compose编排服务
version: '2'
services:
Rancher:
image: rancher/server:preview
container_name: rancher
hostname: rancher
restart: always
ports:
- '8443:8443'
- '8080:8080'
volumes:
- /srv/rancher:/var/lib/rancher
- /etc/letsencrypt:/etc/rancher/ssl
entrypoint: rancher --http-listen-port=8080 --https-listen-port=8443
command: --acme-domain rancher.example.com
启动服务
docker pull rancher/server:preview
docker-compose up -d Rancher
docker logs -f rancher #跟进rancher初始化状态
配置
默认账号密码admin:admin
登录系统并修改密码
创建集群
调试
####
#RancherServer调试
docker logs -f rancher
#K8sNode调试
journalctl -xf -u docker
docker logs kubelet
感谢各位的阅读,以上就是“Kubernetes知识点有哪些”的内容了,经过本文的学习后,相信大家对Kubernetes知识点有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是天达云,小编将为大家推送更多相关知识点的文章,欢迎关注!