kubernetes+docker
centos7_x64 内存4G+ cpu2核
k8s_server 192.168.10.16 k8s1
k8s_client 192.168.10.14 k8s2
Master(管理节点)
API Server:供Kubernetes API接口,主要处理 Rest操作以及更新Etcd中的对象。所有资源增删改查的唯一入口。
Scheduler:绑定Pod到Node上,资源调度。
Controller Manager: 所有其他群集级别的功能,目前由控制器Manager执行。资源对象的 自动化控制中心。
Etcd:所有持久化的状态信息存储在Etcd中
Node(计算节点)
Kubelet:管理Pods以及容器、镜像、Volume等,实现对集群 对节点的管理
Kube-proxy:提供网络代理以及负载均衡,实现与Service通讯
kubeadm:引导集群的命令
kubelet:集群中运行任务的代理程序
kubectl:命令行管理工具
实验软件
kube-flannel.yml
recommended.yaml
软件安装
cp -pv /etc/sysctl.conf /etc/sysctl.conf.bak k8s1/k8s2操作
echo net.ipv4.tcp_syncookies = 1 >> /etc/sysctl.conf
echo net.ipv4.tcp_tw_reuse = 1 >> /etc/sysctl.conf
echo net.ipv4.tcp_tw_recycle = 1 >> /etc/sysctl.conf
echo net.ipv4.tcp_fin_timeout = 30 >> /etc/sysctl.conf
echo "vm.max_map_count=262144" >> /etc/sysctl.conf
sysctl -p
hostnamectl set-hostname k8s1/k8s2 操作
echo > /etc/hosts
echo 192.168.10.15 k8s1 > /etc/hosts
echo 192.168.10.14 k8s2 >> /etc/hosts
echo SELINUX=disabled > /etc/sysconfig/selinux k8s1/k8s2操作
systemctl stop firewalld && systemctl disable firewalld
systemctl start ntpd && systemctl enable ntpd
ntpdate ntp.aliyun.com && hwclock -w
swapoff -a && cp -pv /etc/fstab /etc/fstab.bak k8s1/k82操作
sed -i 's/UUID=b34/#UUID=b34/g' /etc/fstab
modprobe br_netfilter k8s1/k8s2操作
sh -c 'echo "br_netfilter" > /etc/modules-load.d/br_netfilter.conf'
lsmod|grep br_netfilter
br_netfilter 22248 0
bridge 107106 1 br_netfilter
touch /etc/sysctl.d/k8s.conf
echo net.bridge.bridge-nf-call-ip6tables = 1 >> /etc/sysctl.d/k8s.conf
echo net.bridge.bridge-nf-call-iptables = 1 >> /etc/sysctl.d/k8s.conf
echo 1 > /proc/sys/net/ipv4/ip_forward k8s1/k8s2操作
scp -pr /etc/yum.repos.d/{docker-ce.repo,kubernetes.repo} root@192.168.10.14:/etc/yum.repos.d/
yum install -y yum-utils net-tools bridge-utils device-mapper-persistent-data docker-ce-18.06.3.ce
yum install -y kubelet-1.15.0 kubectl-1.15.0 kubeadm-1.15.0 k8s1/k8s操作 kubectl-1.15.0指定版本下载
cp -pv /usr/lib/systemd/system/docker.service /usr/lib/systemd/system/docker.service.bak
ExecStart=/usr/bin/dockerd --exec-opt native.cgroupdriver=systemd
docker info | grep systemd
Cgroup Driver: systemd
cp -pv /etc/sysconfig/kubelet /etc/sysconfig/kubelet.bak
echo KUBELET_EXTRA_ARGS="--fail-swap-on=false" > /etc/sysconfig/kubelet k8s1/k8s2操作
systemctl daemon-reload && systemctl enable docker && systemctl start docker k8s1/k8s操作
systemctl daemon-reload && systemctl enable kubelet
docker --version && kubelet --version
Docker version 18.06.1-ce, build e68fc7a
Kubernetes v1.15.0
touch /root/pullk8s.sh && chmod +x /root/pullk8s.sh 拉取镜像 k8s1操作 可选操作
cat /root/pullk8s.sh && sh /root/pullk8s.sh
#!/bin/bash
images=(
kube-apiserver:v1.15.0
kube-controller-manager:v1.15.0
kube-scheduler:v1.15.0
kube-proxy:v1.15.0
etcd:3.3.10
coredns:1.3.1
pause:3.1
)
for imageName in ${images[@]} ; do
docker pull registry.aliyuncs.com/google_containers/$imageName
docker tag registry.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName
docker rmi registry.aliyuncs.com/google_containers/$imageName
done
kubeadm init \
--apiserver-advertise-address=192.168.10.15 \
--image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers \
--kubernetes-version v1.15.0 \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16 k8s1 服务端初始化
kubeadm reset 从新初始化
kubectl get cs 查看群集状态
kubectl get pod
kubeadm join 192.168.10.15:6443 --token fm5nxe.u0sn7lom0fwk65b7 生成群集令牌环
--discovery-token-ca-cert-hash sha256:2e833f2f489a0a6029548566f5155db899944de860c901d4aa6ce792f836af93
kubeadm token create --print-join-command 忘记令牌环可以使用此命令
kubeadm join 192.168.10.15:6443 --token xrhyq0.viahks9tnuufsbfy
--discovery-token-ca-cert-hash sha256:14cae1d7dda1602ea3a8af42b970a6999058b8e1939b8036be71e3533615ebcd
mkdir -p $HOME/.kube && cp -i /etc/kubernetes/admin.conf $HOME/.kube/config k8s1操作
cp -pv /etc/profile /etc/profile.bak k8s1/k8s2操作
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> /etc/profile && source /etc/profile
kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s1 NotReady master 4m26s v1.15.0
k8s2 NotReady worker 39s v1.15.0
k8s配置网络
docker pull lizhenliang/flannel:v0.11.0-amd64 k8s1/k8s2操作
docker save lizhenliang/flannel:v0.11.0-amd64 > /root/flannel.tar.gz 导出flannel镜像
docker load < /root/flannel.tar.gz 导入flannel镜像
kubectl apply -f /etc/kubernetes/kube-flannel.yml
daemonset.apps/kube-flannel-ds-amd64 created
daemonset.apps/kube-flannel-ds-arm64 created
cat /run/flannel/subnet.env
FLANNEL_NETWORK=10.244.0.0/16
FLANNEL_SUBNET=10.11.0.1/24
FLANNEL_MTU=1450
FLANNEL_IPMASQ=true k8s1/k8s2操作
ip addr | grep docker && ip addr | grep flannel
docker0:
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
flannel.1:
inet 10.11.0.0/32 scope global flannel.1 k8s1/k8s2操作
k8s创建pod
kubectl create deployment nginx --image=nginx k8s1操作
kubectl expose deployment nginx --port=80 --target-port=80 --type=NodePort
kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nginx NodePort 10.1.240.181 <none> 80:32418/TCP 19m
kubectl edit svc nginx 修改运行nginx服务
kubectl get pods 查看运行pod
NAME READY STATUS RESTARTS AGE
nginx-554b9c67f9-l78mn 1/1 Runing 0 15h
kubectl delete pods nginx-554b9c67f9-l78mn 删除pod
kubectl get deployments 查看运行控制器
NAME READY UP-TO-DATE AVAILABLE AGE
nginx 0/1 1 0 15h
kubectl logs -f pod-name 查看pod日志
kubectl exec -it nginx-554b9c67f9-l78mn ls / pod外部执行命令
kubectl cp nginx-554b9c67f9-l78mn x:/etc/hosts ./hosts 容器拷贝文件到物理机
kubectl cp hosts nginx-554b9c67f9-l78mn :/tmp/hosts 物理机拷贝文件到容器
http://k8s1ip:32418/
k8s控制台
cp -pv recommended.yaml recommended.yaml.bak
spec:
type: NodePort 添加配置
ports:
- port: 443
targetPort: 8443
kubectl apply -f recommended.yaml
kubectl get svc -n kubernetes-dashboard
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes-dashboard NodePort 10.1.78.212 <none> 443:30988/TCP 11s
kubectl create serviceaccount dashboard-admin -n kube-system 创建管理用户
kubectl create clusterrolebinding dashboard-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin 绑定为群集管理员
kubectl get secrets -n kube-system | grep dashboard-admin 获取Token
dashboard-admin-token-ktz88
kubectl describe secrets -n kube-system dashboard-admin-token-ktz88
https://k8s1ip:30988
ps aux | grep docker
root 10285 1.5 1.7 485556 50916 ? Ssl 23:31 0:00 /usr/bin/dockerd --exec-opt native.cgroupdriver=systemd
root 10292 1.2 0.8 327152 25224 ? Ssl 23:31 0:00 docker-containerd --config /var/run/docker/containerd/containerd.toml
root 10419 0.0 0.0 112808 968 pts/1 S+ 23:31 0:00 grep --color=auto docker
lsof -i:10250
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
kubelet 11055 root 15u IPv6 112547 0t0 TCP *:10250 (LISTEN)
lsof -i:6443
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
kube-apis 41905 root 7u IPv6 259024 0t0 TCP *:sun-sr-https (LISTEN)
kube-apis 41905 root 80u IPv6 260793 0t0 TCP k8s1:sun-sr-https->k8s1:44312 (ESTABLISHED)
转载地址:https://blog.51cto.com/mailfile/2525878
kubernetes+docker相关推荐
- 130 道 Kubernetes + Docker + DevOps 大厂面试题及知识点详解
最近,各大互联网巨头在技术战略层面,都把云原生列为了主要发展方向.以阿里巴巴为例,他们技术老大说,云原生是云计算释放红利的最短路径,是企业数字化的最短路径. 现在云原生工程师.Kubernetes 工 ...
- VituralBox从零搭建基于CentOS 7(64位)的Kubernetes+docker集群
VituralBox从零搭建基于CentOS 7(64位)的Kubernetes+docker集群 1. 下载CentOS 7官方minimal镜像 2. 安装VituralBox(Windows 1 ...
- 如何在CentOS 7上安装Kubernetes Docker群集
如何在CentOS 7上安装Kubernetes Docker群集 Kubernetes是一个开源平台,用于管理由Google开发的容器化应用程序.它允许您在集群环境中管理,扩展和自动部署容器化应用程 ...
- kubernetes+docker安装及部署服务
kubernetes+docker安装及部署服务 参考文章: kubernetes详细介绍 kubernetes官网 1.安装docker(安装过的跳过此步骤) https://blog.csdn.n ...
- Kubernetes Docker 容器网络终极之战(十四)
与 Docker 默认的网络模型不同,Kubernetes 形成了一套自己的网络模型,该网络模型更加适应传统的网络模式,应用能够平滑的从非容器环境迁移到 Kubernetes 环境中. 自从 Dock ...
- NETGEAR拒绝连接请求_破案:Kubernetes/Docker 上无法解释的连接超时
编译:bot(才云) 技术校对:星空下的文仔(才云) 编者按:将应用迁移到 Kubernetes 时,有时候工程师们会发现一些令人费解的连接超时,无论怎么排查都找不到原因.在这篇文章中,软件架构师 M ...
- 【Kubernetes/docker】生成docker镜像推送到hub并在Kubernetes部署应用-20220407
生成docker镜像推送到hub 参考https://blog.csdn.net/boonya/article/details/74906927 在本地登录docker docker login do ...
- Jenkins+Kubernetes+Docker实现微服务持续集成
nfs添加共享目录 cat /etc/exports /opt/nfs/jenkins *(rw,no_root_squash) /opt/nfs/maven *(rw,no_root_squash) ...
- 选择 podman 的理由, 以及它和 Kubernetes , Docker 的区别
一.podman 是什么 官方网站: podman.io 官方自己的介绍: https://podman.io/whatis.html 名称 podman ,官方说明是 Pod Manager , 所 ...
最新文章
- 中国电子学会scratch等级考试四级编程题:找出出现次数最多的数字
- springmvc json 406
- 关于临时表和表变量的差别1
- ora-14400插入的分区关键字未映射到任何分区---oracle数据库表过期问题
- LeetCode 696. Count Binary Substrings
- STM32 - 定时器的设定 - 基础- 02 - Capture/compare channels 和相关设置寄存器 - 和STM32缩写词条解释
- 设置超链接在各种状态改变的样式颜色
- python save保存图片到本地_python爬取网站上的图片并保存到本地
- 此内容不能显示在一个框架中_.NET开发框架(二)框架功能简述
- 集团进口煤炭行业经历“冰火两重天”说明了啥?
- 数据分析案例 |【01】电影数据分析
- mysql routines是什么_MySQL入门:Stored Routines 的变数与流程 - Break易站
- 典型相关分析及相关知识
- VRP远程管理(华为设备telnet登录密码配置与测试环境搭建)——在物理机上创建回环网卡及eNSP模拟器与物理机实现连接通信
- 科普博客:摩尔定律和安迪-比尔定律
- java.lang.NoClassDefFoundError: org/jdom2/JDOMException
- 未来的计算机 展望未来作文,展望未来作文(通用10篇)
- 关于Blurry无法加载的问题
- 对某邮件盗号诈骗团队的追踪分析和研究
- 2019,推荐几个牛逼大佬的公号
热门文章
- jQuey/js 省市县三级下拉框联动的回显(简单易懂)
- vuedraggable嵌套块拖拽_Vue 基于 vuedraggable 实现选中、拖拽、排序效果
- AOP五大通知注解详解
- eclipse拒绝mysql,eclipse连接mysql的有关问题
- python绘制基因结构图_Python调用graphviz绘制结构化图形网络示例
- 《JavaScript高效图形编程(修订版)》——6.7 画布绘制基础
- Mysql ERROR 2002 (HY000) Can't connect to local MySQL server through socket
- Android短信彩信收发流程(应用层)
- C# NameValueCollection
- 学习STP的一些总结