Docker和K8S安装

Docker简介

	Docker是一个开源的容器引擎,它有助于更快地交付应用。 Docker可将应用程序和基础设施层隔离,并且能将基础设施当作程序一样进行管理。使用 Docker可更快地打包、测试以及部署应用程序,并可以缩短从编写到部署运行代码的周期。
	Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,便可以实现虚拟化。Docker改变了虚拟化的方式,使开发者可以直接将自己的成果放入Docker中进行管理。方便快捷已经是 Docker的最大优势,过去需要用数天乃至数周的 任务,在Docker容器的处理下,只需要数秒就能完成。

docker 安装

ubuntu 安装 docker

	  apt-get update && apt-get install -y apt-transport-https curl
	 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
	 apt-get install docker.io -y 
	 docker version

Docker常用命令

查看可用的镜像(以java为例)

		docker search java

下载镜像

		docker pull java:8

列出镜像

	docker images 
	即可列出已下载的镜像 

删除本地镜像

	docker rmi java

新建并启动容器

	使用以下docker run命令即可新建并启动一个容器,该命令是最常用的命令,它有很多选项,下面将列举一些常用的选项。
-d选项:表示后台运行
-P选项:随机端口映射
-p选项:指定端口映射,有以下四种格式。
-- ip:hostPort:containerPort
-- ip::containerPort
-- hostPort:containerPort
-- containerPort
--net选项:指定网络模式,该选项有以下可选参数:
--net=bridge:默认选项,表示连接到默认的网桥。
--net=host:容器使用宿主机的网络。
--net=container:NAME-or-ID:告诉 Docker让新建的容器使用已有容器的网络配置。
--net=none:不配置该容器的网络,用户可自定义网络配置。
 docker run -d -p 91:80 nginx
这样就能启动一个 Nginx容器。在本例中,为 docker run添加了两个参数,含义如下:
-d 后台运行
-p 宿主机端口:容器端口 #开放容器端口到宿主机端口
访问 http://Docker宿主机 IP:91/

列出容器

		docker ps -a

停止容器

	docker stop f0b1c8ab3633(容器ID)

强制停止容器

	docker kill f0b1c8ab3633

启动已停止的容器

		docker start f0b1c8ab3633

查看容器所有信息

		docker inspect f0b1c8ab3633

查看容器日志

	docker container logs f0b1c8ab3633

查看容器里的进程

		docker top f0b1c8ab3633

进入容器

	使用docker container exec命令用于进入一个正在运行的docker容器。如果docker run命令运行容器的时候,没有使用-it参数,就要用这个命令进入容器。一旦进入了容器,就可以在容器的 Shell 执行命令了
docker container exec -it f0b1c8ab3633 /bin/bash

删除容器

		docker rm f0b1c8ab3633

使用docker部署nginx

	docker pull nginx:latest
	 1.docker images
	 2. mkdir -p /root/docker/my-dinner/nginx/config/
	3.  配置nginx http代理 nginx-lb.conf
		docker run --name nginx-lb -d -p 80:80 -v /root/docker/my-dinner/nginx/config/nginx-lb.conf:/etc/nginx/nginx.conf  nginx:latest
	4. 使用ngix 作为http server服务器,启动两个 http server实例。 nginx.conf
		docker run --name nginx-test -d -p 8081:80 -v /root/docker/my-dinner/nginx/config/nginx.conf:/etc/nginx/nginx.conf -v /root/docker/my-dinner/nginx/www:/usr/share/nginx/html:/usr/share/nginx/html -v /root/docker/my-dinner/nginx/logs/:/var/log/nginx nginx:txy
		docker run --name nginx-test2 -d -p 8082:80 -v /root/docker/my-dinner/nginx/config/nginx.conf:/etc/nginx/nginx.conf -v /root/docker/my-dinner/nginx/www2:/usr/share/nginx/html -v /root/docker/my-dinner/nginx/logs2/:/var/log/nginx nginx:txy
**3 volume**
volume也是绕过container的文件系统,直接将数据写到host机器上,只是volume是被docker管理的,docker下所有的volume都在host机器上的指定目录下/var/lib/docker/volumes。
docker run -d -p 8081:80 -v /root/docker/nginx:/mydata nginx:txy
将  /root/docker/nginx 挂载到 容器里 的 /mydata 目录
如果volume是空的则container中的目录也会是空,但是如果volume中已经有内容,则会将其拷贝到container中的目录。
***要使在宿主机上做的修改能在docker里马上生效,则需要设置 文件的权限为777

K8S 安装

	  DNS 设置 
		/etc/resolvconf/resolv.conf.d/base 	
		nameserver 192.168.1.1
		resolvconf -u
	**2)安装 k8s**
		https://blog.csdn.net/wangchunfa122/article/details/86529406 //Ubuntu16.04安装K8s步骤和踩坑记录
		https://www.jianshu.com/p/67083a454fcc
		https://www.jianshu.com/p/f2d4dd4d1fb1 ubuntu 安装 k8s
		https://www.cnblogs.com/ericnie/p/7749588.html ******
		https://blog.csdn.net/u012570862/article/details/80150988 ****
		https://blog.csdn.net/zhonglinzhang/article/details/85279788 k8s启动参数
		
		2.1) 关闭 swap
			swapoff -a
			同时把/etc/fstab包含swap那行记录删掉。
		
		2.2) 更新源并安装 kubeadm, kubectl, kubelet 软件包
			apt-get update -y 
			apt-get install -y apt-transport-https
			设置源
				在 /etc/apt/sources.list 和 /etc/apt/sources.list.d/kubernetes.list 增加
				deb https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial main
			添加秘钥(master 和 node)
				curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add - 
		 2.3) 安装 k8s组件
			apt-get update
			apt-get install -y kubelet kubeadm kubectl
			systemctl enable kubelet
	   2.4) 使用 kubeadmin 初始化 master 节点
		docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.13.2
		docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.13.2
		docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.13.2
		docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1
		docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.2.24
		docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.2.6
		docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.13.2
		把这些images重新tag一下
		docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.13.2 k8s.gcr.io/kube-controller-manager:v1.13.2
		docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.13.2 k8s.gcr.io/kube-scheduler:v1.13.2
		docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.13.2 k8s.gcr.io/kube-proxy:v1.13.2
		docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1 k8s.gcr.io/pause:3.1
		docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.2.24 k8s.gcr.io/etcd:3.2.24
		docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.2.6 k8s.gcr.io/coredns:1.2.6
		docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.13.2 k8s.gcr.io/kube-apiserver:v1.13.2

		#设置 docker 和 kubelet 的 cgroupdriver 为 cgroupfs 不然启动kubelet要失败
		vim /etc/docker/daemon.json		
			{
			  "registry-mirrors": [
				"https://dockerhub.azk8s.cn",
				"https://reg-mirror.qiniu.com",
				"https://quay-mirror.qiniu.com"
			  ],
			  "exec-opts": [ "native.cgroupdriver=cgroupfs" ],
			  "live-restore": true
			}
		#接着执行
		systemctl daemon-reload && systemctl restart docker
		
		vim /etc/systemd/system/kubelet.service.d/10-kubeadm.conf(或者/lib/systemd/system/kubelet.service)
		[Service]
			ExecStart=
			ExecStart=/usr/bin/kubelet --kubeconfig=/etc/kubernetes/kubelet.conf  --pod-manifest-path=/etc/kubernetes/manifests  --cgroup-driver=cgroupfs --feature-gates SupportPodPidsLimit=false --feature-gates SupportNodePidsLimit=false
		#接着执行
		systemctl daemon-reload && systemctl restart kubelet (或者 systemctl start  kubelet)
		
		kubeadm reset 

		2.5) 初始化 master 节点
			kubeadm init --apiserver-advertise-address=192.168.1.5 --pod-network-cidr=10.244.0.0/16 --kubernetes-version=v1.17.0 --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers --ignore-preflight-errors=all
			--apiserver-advertise-address: k8s 中的主要服务apiserver的部署地址,填自己的管理节点 ip
			--pod-network-cidr: 这个是 k8s 采用的节点网络,因为我们将要使用flannel作为 k8s 的网络,所以这里填10.244.0.0/16就好
			--image-repository: 拉取的 docker 镜像源,因为初始化的时候kubeadm会去拉 k8s 的很多组件来进行部署,所以需要指定国内镜像源,下不然会拉取不到镜像。
			--kubernetes-version: 这个是用来指定你要部署的 k8s 版本的,一般不用填,不过如果初始化过程中出现了因为版本不对导致的安装错误的话,可以用这个参数手动指定。
			--ignore-preflight-errors: 忽略初始化时遇到的错误,比如说我想忽略 cpu 数量不够 2 核引起的错误,就可以用--ignore-preflight-errors=CpuNum。错误名称在初始化错误时会给出来。
			
		#查看 kubelet 日志
			journalctl -xefu kubelet
		# 查看已加入的节点
			kubectl get nodes
		# 查看集群状态
			kubectl get cs
			get pod --all-namespaces
			
	**4) 部署 flannel 网络**
		kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

	**5) 配置Node**
		5.1) 在node 节点上执行 2.1-2.4
		5.2) kubeadm join 192.168.1.5:6443 --token h7u22o.nk23ias5f1ft8hj9 --discovery-token-ca-cert-hash sha256:9f93785608c9a9de3e5d74e9ed30b8302691abfee7efd946a8c1b80d8582fe92
		
6)****使用 helm****
		wget https://storage.googleapis.com/kubernetes-helm/helm-v2.12.3-linux-amd64.tar.gz
		tar zxvf helm-v2.12.3-linux-amd64.tar.gz 
		cd linux-amd64/
		mv helm /usr/bin/
		helm version
	helm install --name nls --set nls.version=1.0 k8s.tar.gz
	ln -sf /var/run/resolvconf/resolv.conf /etc/resolv.conf
	apt-get  -y install upstart
	https://www.runoob.com/docker/docker-install-nginx.html
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值