Kubernetes系列02:Kubernetes配置及参数说明

2.1 kubernetes安装与配置
2.1.1安装kubernetes

CPU和内存:
Master至少1core和2G内存
Node至少1core和2G内存

Linix操作系统:
基于X86_64架构的各种Linux发行版本,Red Hat、CentOS、Fedora、Ubuntu等,
Kernel版本要求在3.10及以上
推荐:CentOS7、Red Hat Linux7

Docker 1.9版本以上
etcd 2.0版本及以上

kubernetes官方下载地址:
https://github.com/kubernetes/kubernetes/releases

Kubernetes Master节点安装部署etcd、kube-apiserver、kube-controller-manager、kube-scheduler服务进程。工作节点Node上仅需要部署kubelet和kube-proxy服务进程。
Kubernetes还提供了一个“all-in-one”的hyperkube程序来完成对以上服务进程的启动。

2.1.2配置和启动Kubernetes服务
Kubernetes的Master和Node之间有大量的网络通信,安全的做法是在防火墙上配置个组件需要相互通信的端口,在一个安全的内部网络环境中可以关闭防火墙服务。

系统CentOS7.3

关闭防火墙
systemctl status firewalld
systemctl disable firewalld
systemctl stop firewalld

1、安装etcd、kubernetes
yum install etcd kubernetes

默认版本:
docker 1.12.6
etcd-3.1.0
kubernetes-1.5.2-0.2
kubernetes-client 1.5.2
kubernetes-master 1.5.2
kubernetes-node   1.5.2

1)etcd服务
安装后配置文件位置:
cat /usr/lib/systemd/system/etcd.service
cat /etc/etcd/etcd.conf

验证etcd是否正常启动
[root@cent7-2 docker]# etcdctl cluster-health
member 9f3258a917a82a2a is healthy: got healthy result from http://localhost:2379
cluster is healthy

2)kube-apiserver服务
cat /usr/lib/systemd/system/kube-apiserver.service
cat /etc/kubernetes/apiserver

3)kube-controller-manager服务
cat /usr/lib/systemd/system/kube-controller-manager.service
cat /etc/kubernetes/controller-manager

4)kube-scheduler服务
cat /usr/lib/systemd/system/kube-scheduler.service
cat /etc/kubernetes/scheduler

将服务加入开机启动
systemctl enable kube-apiserver.service
systemctl start kube-apiserver.service
systemctl enable kube-controller-manager
systemctl start kube-controller-manager
systemctl enable kube-scheduler
systemctl start kube-scheduler

通过systemctl status <serice_name>查看状态,“running”表示启动成功
到此Master服务启动完成。

2、Node上的kubelet、kube-proxy服务

1)kubelet服务
cat /usr/lib/systemd/system/kubelet.service
cat /etc/kubernetes/kubelet

2)kube-proxy服务
cat /usr/lib/systemd/system/kube-proxy.service
cat /etc/kubernetes/proxy

systemctl enable kubelet.service
systemctl start kubelet.service
systemctl enable kube-proxy
systemctl start kube-proxy

kubelet默认采用想Master自动注册本Node的机制,在Master上查看各Node的状态,状态为Ready表示Node已经成功注册并且状态可用。

[root@cent7-2 log]# kubectl get nodes
NAME        STATUS    AGE
127.0.0.1   Ready     23h

等所有的Node状态都是Ready后,一个Kubernetes集群就启动完成了,接下来可以创建Pod、RC、Service等资源对象来不是Docker容器应用了。

2.1.3Kubernetes集群安全设置(有兴趣的朋友网上搜索下,这里不做介绍)
1、基于CA签名的双向数字证书认证方式
2、基于HTTP BASE或TOKEN的简单认证方式

2.1.4Kubernetes版本升级
Kubernetes版本升级应考虑正在运行的容器不受影响,应对集群中的各Node逐个进行隔离,然后等待在其上运行的容器全部执行完成,再更新该Node上的kubelet和kube-proxy服务,将全部Node都更新完成后,最后更新Master的服务。
  通过官网获取最新版本的二进制kubernetes.tar.gz,解压提取文件;
  逐个隔离Node,等待在其上运行的全部容器工作完成,更新kubelet和kube-proxy服务文件,然后重启这两个服务;
  更新Master的kube-apiserver、kube-controller-manager、kube-scheduler服务文件并启动;

2.1.5内网中的Kubernetes相关配置(无法访问Internet)
企业内部无法访问Internet,对于这样的企业,通过创建一个内部的私有Docker Registry,并修改一些Kubernetes配置,来启动内网中的Kubernetes集群。

1)Docker Private Registry(私有Docker镜像库)
安装参考:https://docs.docker.com/registry/deploying/

2)kubelet配置
cat /etc/kubernetes/kubelet
# pod infrastructure container
KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure:latest"
修改为:
KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=kubeguide/google_containers/pause-amd64:3.0"
#systemctl restart kubelet
不能访问Internet的情况还是很少的

2.1.6Kubernetes核心服务配置详解
每个服务可以通过运行“cmd --help”命令进行查看,其中cmd为具体的服务,kube-apiserver、kube-controller-manager、kube-scheduler、kubelet、kube-proxy等,在对应的配置文件中添加“--参数名=参数取值”的语句完成参数设置。

参考官网 或 Kubernetes权威指南:从Docker到Kubernetes实践全接触(第2版)



2.1.7Kubernetes集群网络配置方案
Kubernetes本身并不会对跨主机容器网络进行设置,这需要额外的工具,除谷歌公有云GCE平台提供网络设置,开源工具包括flannel、Open vSwitch、Weave、Calico等

1)flannel(覆盖网络)
2)Open vSwitch(虚拟交换机)
3)直接路由
参考:http://blog.csdn.net/carter115/article/details/50986701

2.2 kubectl命令行工具用法详解
kubectl作为客户端CLI工具,可以让用户通过命令行的方式对Kubernetes集群进行操作。
2.2.1 kubectl用法概括
#kubectl [command] [TYPE] [NAME] [flags]
(1)command:子命令,用于操作kubernetes集群资源对象的命令,如create、delete、describe、get、apply
(2)TYPE:资源对象的类型,区分大小写,能以单数形式、复数形式或者简写形式表示。
例如以下3种TYPE是等价的
#kubectl get pod pod1
#kubectl get pods pod1
#kubectl get po pod1
(3)NAME:资源对象的名称,区分大小写。如果不指定名称,则系统将返回属于TYPE的全部对象列表,例如kubectl get pods将返回所有pod的列表
(4)flags:可选参数,例如使用“-s”指定apiserver的URL地址而不用默认值
可操作的资源对象:

获取多个pod信息:
#kubectl get pods pod1 pod2
获取多种对象信息:
#kubectl get pod/pod1 rc/rc1
同时应用多个yaml文件:
#kubectl get pod -f pod1.yaml -f pod2.yaml
#kubectl create -f pod1.yaml -f rc1.yaml -f service1.yaml

2.2.2 kubectl子命令详解


2.2.3 kubectl参数列表


2.2.4 kubectl输出格式


2.2.5 kubectl操作示例



下一博文将使用Guestbook实现Hello World


参考:

Kubernetes网络配置方案

http://blog.csdn.net/carter115/article/details/50986701

CentOS7.3.1611部署k8s1.5.2集群

http://jerrymin.blog.51cto.com/3002256/1898243

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值