kubernetes bible section 1

chapter1 kubernetes fundamentals

kubernetes解决了什么问题

        保障高可用性,自动健康检查并重新起来一个被销毁的容器

        处理版本发布以及容器部署 

        

 kubectl set image <deployment_name> <container_name>=<docker_image>:<docker_tag>

        自动扩容

chapter2 kubernetes architecture from docker images to running pods

项目

master node 和workerNode

        一般来说,windows可以启动windows的docker,linux可以搞linux的docker,反之则不一定成功。k8s由一系列的小project组成。因此你需要一个个的部署。分开部署有助于高可用以及对生命周期的各自规划

        control plan

                用于维护cluster的状态,一般在master节点上。但也可以在worker node上

        worker nodes

                用于和docker daemon交互。处理包括如创建容器,网络管理,扩缩容容器

重要概念

  • Pod
  • ReplicaSet
  • PersistentVolume
  • NetworkPolicy
  • Deployment

kubeadm实际安装, minikube 用作测试 ,Kubernetes the Hard Way, 时实际从裸机上如何安装k8s,不推荐

kube-apiServer 

        apiServer实际负责了与外部的交互,虽然看起来api-server就是k8s的全部,但实际上不是。

        apiServer接收的时http请求,利用rest风格

        默认端口6443(https)

        systemd自动启动

vim /etc/systemd/system/kube-apiserver.service
systemctl daemon-reload
systemctl enable kube-apiserver
systemctl start kube-apiserver

                完成后检查 /etc/systemd/system/kube-apiserver.service

kubectl command line tool

#版本号
$ curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.14.10/bin/linux/amd64/kubectl

$ chmod +x ./kubectl

$ sudo mv ./kubectl /usr/local/bin/kubectl

$ kubectl version # Should output kubectl version

minikube拉取镜像失败问题

sudo vim /etc/docker/daemon.json
#添加下面到daemon.json文件中
{
  "registry-mirrors": ["https://registry.docker-cn.com","https://docker.mirrors.ustc.edu.cn","https://hub-mirror.c.163.com","http://f1361db2.m.daocloud.io"]
}

kubectl 和http本质上时一样的。

kubectl run nginx --restart Never --image nginx
kubectl remove pods nginx

yaml格式

kubectl run my-pod --restart Never --image busybox:latest
kubectl get rs -n my-namespace
kubectl delete pods my-pod

yaml格式具备可重复使用的特点 

vim pod.yaml

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
  -  name: busybox-container
     image: busybox:latest

        apiVersion 描述了当前资源声明的api版本号

        kind 描述了希望创建的资源类型

        metadata 主要是一些元信息,但是这个时给k8s用的,而非docker使用的

        spec描述了物理的一些资源。如containers有几个container,名字,image是什么 

 创建与删除pod

#创建
kubectl create -f pod.yaml
# 删除
kubectl delete -f pod.yaml

etcd

        etcd为第三方组件

        kubeapi-service目前只能依赖etcd,不能依赖如mysql等

        etcd最好能部署在专门的机器上,但如果条件不允许,也可以与control plan内的其他机器部署在一起。

kubelet and worker node componentes

        The container engine 如docker daemon

        kubelet agent kubelet的代理

                k8s启动时,会读取/etc/kubernetes/kubelet.conf文件

                一旦接入k8s集群,kubelet就会作为k8s 和docker daemon的桥梁,每20s 或者监听api kubelet上报给k8s一个消息(GET),然后k8s发送一些对应的需要创建的消息返回给kubelet,kubelet就能实际的告诉docker daemon取创建(利用socket) 注意master为6443端口,必须要能够联通

                kubelet实际上与api-server通信,而非直接与etcd通信。

        kube-proxy

                service实际上由kube-proxy组件来执行,就想kubelet一样,它同样与kube-apiserver做实际的交互。

        other 如 cAdvisor or Container Network Interface

kube-scheduler

        需要在master上运行,需要高可用,实际过程与kube-apiserver交互,找到没有被规划的pod ,如果pod包括了nodeName,就意味着已经被规划了,否则就是在pending,kube-scheduler就是找到这个nodeName,(定期,事件)

        如何筛选

                node selector

                Node affinity 以及 anti-affinity

                taint and toleration

        注意要高可用

kube-controller-manager

        需要在master上运行,用于做reconciliation loop,试图去维持etcd中的状态与实际集群中状态的差异到最小值

        具体举例如

  • NodeController
  • NamespaceController
  • EndpointsController
  • ServiceaccountController

如何使得kubenetes高可用

k8s组件

搭建k8s

Chapter 3: Installing Your First Kubernetes Cluster - The Kubernetes Bible [Book]

  minikube

curl -LO https://dl.k8s.io/release/v1.23.8/bin/linux/amd64/kubectl


sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl


curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube

sudo usermod -aG docker $USER && newgrp docker
kubectl get componentstatuses
minikube status

minikube start --driver=docker --image-mirror-country='cn' --image-repository='registry.cn-hangzhou.aliyuncs.com/google_containers' --kubernetes-version=1.23.8

kind

curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.8.1/kind-$(uname)-amd64
chmod +x ./kind
mv ./kind /usr/local/bin/kind

#创建
kind create cluster

kind delete cluster

#文件创建
vim ~/.kube/kind_cluster
#文件内容
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
- role: worker
#创建
kind create cluster --config ~/.kube/kind_cluster

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值