扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
《深入剖析Kubernetes - 09 从容器到容器云 谈谈Kubernetes的本质》
在广南等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供网站制作、网站设计 网站设计制作按需设计,公司网站建设,企业网站建设,成都品牌网站建设,营销型网站,外贸网站建设,广南网站建设费用合理。kubeadm 简化部署操作,仅需要以下2个操作即可创建一个k8s 集群
# 创建一个 Master 节点 $ kubeadm init # 将一个 Node 节点加入到当前集群中 $ kubeadm joink8s 每个组件都是一个独立的二进制文件,部署过程无非就是将二进制跟配置文件分布到指定机器,并通过脚本启停进程,这些工作在物理机时代完全可以通过saltstack 或者ansible 来完成,但后续运维成本会比较高,得自己实现进程监控,健康检查等等。
既然k8s 做服务编排,自然可以解决服务发现,服务注册,健康检查等功能。
具体方法是,master机器上 先手动在机器上安装kubeadm、kubelet、kubectl 这3个二进制文件;
而node 节点上面则只需要安装kubelet / kubeadm 然后通过kubeadm join 添加到集群内部即可
一、kubeadm init 工作流程
(1)检查机器环境是否满足
1、linux内核是否3.10 以上
2、cgroups 模块是否启用
3、hostname 是否符合标准(遵循DNS命名规则)
4、kubeadm 和 kubelet 版本是否匹配
5、是否已安装kubernetes 二进制文件
6、10250/10251/10252 等端口是否被占用
7、ip、mount 等指令是否存在
8、docker 是否安装
... ...
(2)生成kubernetes 对外提供服务所需证书和对应目录
默认放在/etc/kubernetes/pki 目录下
主要有ca.crt / ca.key
apiserver-kubelet-client.crt / apiserver-kubelet-client.key
(3)为master组件生成Pod 配置文件
即api-server、scheduler、controller-manager 以static-pod 方式部署
static-pod 允许将yaml 文件放在指定目录,在kubelet 启动时指定该目录,此时它会自动检查该目录并加载所有pod yaml文件并启动相应pod
为什么要用static pod?
刚创建集群的时候,上面并没有api-server 、kubectl ,无法创建相关的pod,故只能通过这种方式启动pod。
master 组件yaml文件生成目录为:/etc/kubernetes/manifests
ls /etc/kubernetes/manifests/ etcd.yaml kube-apiserver.yaml kube-controller-manager.yaml kube-scheduler.yaml这里有个api-server.yaml 的例子:
apiVersion: v1 kind: Pod metadata: annotations: scheduler.alpha.kubernetes.io/critical-pod: "" creationTimestamp: null labels: component: kube-apiserver tier: control-plane name: kube-apiserver namespace: kube-system spec: containers: - command: - kube-apiserver - --authorization-mode=Node,RBAC - --runtime-config=api/all=true - --advertise-address=10.168.0.2 ... - --tls-cert-file=/etc/kubernetes/pki/apiserver.crt - --tls-private-key-file=/etc/kubernetes/pki/apiserver.key image: k8s.gcr.io/kube-apiserver-amd64:v1.11.1 imagePullPolicy: IfNotPresent livenessProbe: ... name: kube-apiserver resources: requests: cpu: 250m volumeMounts: - mountPath: /usr/share/ca-certificates name: usr-share-ca-certificates readOnly: true ... hostNetwork: true priorityClassName: system-cluster-critical volumes: - hostPath: path: /etc/ca-certificates type: DirectoryOrCreate name: etc-ca-certificates ...通过这么一个yaml配置文件,告诉k8s 创建相应的api object , 这个api对象定义参考上述yaml 文件
(4)为该集群生成bootstrap token
供worknode 节点 通过kubeadm join 加入到该集群
(5)安装默认插件
例如kube-proxy / dns (以容器的方式部署)
二、kubeadm join 工作流程
为了方便部署操作,不需要手动从master 上面拷贝证书到每台worknode , kubeadm 至少需要发起一次"不安全模式" 的访问到api-server,从而拿到保存在configmap中的cluster-info,而bootstrap token 扮演的就是这个过程中安全验证的角色。
三、指定kubeadm 部署参数
$ kubeadm init --config kubeadm.yaml
在kubeadm.yaml 配置文件中定义
PS:kubeadm 的不足之处在于,它并没有解决像etcd 、master 等组件的高可用部署,而是单点部署。
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流