docker+k8s
Docker是一个开源的应用容器引擎,使用Go语言开发,
基于Linux内核的cgroup,namespace,Union FS等技术,对应用进程进行封装隔离,并且独立于宿主机与其他进程。Docker理念是将应用及依赖包打包到一个可移植的容器中,可发布到任意Linux发行版Docker引擎上。
使用沙箱机制运行程序,程序之间相互隔离。
Docker技术已经成为开发、运维职位必备的专业技能之一,非常有必要深入学习下,我这里整理了一下我搭建docker和k8s思路供大家参考一下。
首先说一下我们的实验环境:
docker 私有仓库主机 192.168.1.100
k8s 管理主机 192.168.1.10
docker node节点1 192.168.1.11
docker node节点2 192.168.1.12
docker node节点3 192.168.1.13
部署docker私有仓库和docker
[root@register ~] # yum -y install docker-distribution //部署仓库
[root@register ~] # yum -y install docker
[root@node1 ~] # yum -y install docker //部署node节点
[root@node2 ~] # yum -y install docker //部署node节点
[root@node3 ~] # yum -y install docker //部署node节点
修改三台node节点的配置文件(三台都需要做,我只举例一台)
vim /etc/sysconfig/docker
13 ADD_REGISTRY=’–add-registry registry:5000’ //指定私有仓库主机
24 INSECURE_REGISTRY=’–insecure-registry registry:5000’
systemctl enable --now docker //启动docker 并设置开机自起
上传镜像
[root@register ~] # docker load -i centos.tar
[root@register ~] # docker load -i kubernetes-dashboard.tar
[root@register ~] # docker load -i pod-infrastructure.tar
验证结果
curl http://192.168.1.100:5000/v2/_catalog
配置 k8s主机
yum -y install kubernetes-master.x86_64 kubernetes-client.x86_64 etcd //安装软件包
修改配置文件
vim /etc/etcd/etcd.conf
6: ETCD_LISTEN_CLIENT_URLS=“http://192.168.1.10:2379”
vim /etc/kubernetes/config
22: KUBE_MASTER="–master=http://192.168.1.10:8080"
vim /etc/kubernetes/apiserver
8: KUBE_API_ADDRESS="–insecure-bind-address=0.0.0.0"
17: KUBE_ETCD_SERVERS="–etcd-servers=http://192.168.1.10:2379"
23: 删除 ServiceAccount 参数
启动服务
systemctl start etcd kube-apiserver.service kube-scheduler.service kube-controller-manager.service
开机自启
systemctl enable etcd kube-apiserver.service kube-scheduler.service kube-controller-manager.service
查看服务启动状态
systemctl status etcd kube-apiserver.service kube-scheduler.service kube-controller-manager.service
在三台node主机上部署配置 k8s - minion
yum -y install kubernetes-node.x86_64 //安装软件包
修改配置文件
vim /etc/sysconfig/docker
4: 添加参数 --insecure-registry=192.168.1.100:5000 --add-registry 192.168.1.100:5000
vim /etc/kubernetes/config
22: KUBE_MASTER="–master=http://192.168.1.10:8080"
vim /etc/kubernetes/kubelet
5: KUBELET_ADDRESS="–address=0.0.0.0"
11: KUBELET_HOSTNAME="–hostname-override=本机名称"
14: 添加 --kubeconfig=/etc/kubernetes/kubelet.kubeconfig
–pod-infra-container-image=pod-infrastructure:latest
编写yaml文件
vim /etc/kubernetes/kubelet.kubeconfig
apiVersion: v1
kind: Config
clusters:
- cluster:
server: http://192.168.1.10:8080 ###Master的IP,即自身IP
name: local
contexts: - context:
cluster: local
name: local
current-context: local
启动k8s
systemctl start kubelet.service kube-proxy.service
开机自启
systemctl enable kubelet.service kube-proxy.service