k8s部署环境(代码片段)

ededdgg ededdgg     2023-05-03     420

关键词:

k8s部署环境

  • 公有云环境:AWS、腾讯云、阿里云等等
  • 私有云:OpenStack、vSphere等
  • Baremetal环境:物理服务器或独立虚拟机(底层没有云环境)。

  

k8s部署方式

  • Minikube:Kubernetes官网提供的微型分布式环境,适合学习、初次体验,不过应该需要梯子才能用。
  • Kubeadm:由于二进制部署方式过于复杂,所以后来出现了Kubeadm的部署方式,这种方式其实是将k8s的各组件容器化了。注意,使用容器方式部署Master节点各组件时,需要安装kubelet和docker组件去实例化容器。这种方式有些缺点:

    • 这些运行容器所需要的部分镜像在gcr.io(谷歌的镜像站)上,你懂得,架梯子才能访问。
    • k8s集群内部通信采用的是TLS认证机制,但是内部都内网通信,所以一般采用自建CA,此种方式部署,其中的证书不是自己签的,所以搞不好啥时候就过期了,所以生产环境不适用
    • 不支持Master节点高可用,一旦Master节点挂了,容器管理怎么办?监控、故障恢复谁处理?
  • 二进制部署:相对复杂,生产环境适用。将重要组件以守护进程的方式部署
  • 还有一些云厂商专有的部署方式,如kops,这里就不一一介绍了。
  • 二次封装的k8s发行版

    • Rancher:Rancher Labs基于k8s的二次封装发行版。
    • Tectonic:CoreOS公司基于k8s的二次封装发行版。
    • Openshift:Redhat基于k8s的二次封装发行版,只留下k8s的成熟功能,部署更加便捷,需要有ansible基础。相比较知名的发行版就是Rancher和Openshift

  

k8s部署要点

  • 测试环境

    • 单Master,单etcd
    • Node节点随意。
    • NFS存储
  • 生产环境

    • 高可用Master,高可用etcd,至少三个。

      • kube-apiserver是无状态的,可以配置多实例。利用nginx或者haproxy做反代,并借助keepalived实现冗余。
      • kube-scheduler和kube-controller-manager各自只能有一个活动实例(同时几个scheduler去掉都同一个Pod,听谁的。),但是可以建多个实例备用。他们自带leader选举功能,且默认开启此功能。
    • 多Node主机,数量越多,冗余能力越强。
    • ceph或glusterfs等分布式存储

  • 主机环境预设

    • 如果有条件,最好搭建一个内网ntp服务,用来同步时间
    • 配置好各节点间的hosts解析
    • 禁用防火墙和Selinux,防止混淆
    • 各节点禁用swap,使用swap虽然暂时能节省一些物理内存,但也会造成性能下降。安装时会自动检查此项,不禁用会导致安装出错,不过也有参数可以忽略。。。

  

kubeadm部署k8s

  • 主机规划
主机名IP角色环境
k8s-m1 192.168.2.124 控住节点 Centos 7.6,配置最少2核CPU,2G内存
k8s-n1 192.168.2.244 数据节点 Centos 7.6

  • 准备工作(所有节点)

 1. 我没有搭建自己的ntp,就用个定时任务替代了吧。

[root@k8s-m1 ~]# crontab -l 
# time sync
*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com &>/dev/null

 2. 配置主机名解析

[root@k8s-m1 ~]# tail -3 /etc/hosts
192.168.2.124 k8s-m1
192.168.2.244 k8s-n1

 3. 关闭防火墙和selinux

[root@k8s-m1 ~]# systemctl stop firewalld.service
[root@k8s-m1 ~]# systemctl disable firewalld.service
[root@k8s-m1 ~]# sed -i.bak ‘s#SELINUX=enforcing#SELINUX=disabled#g‘ /etc/selinux/config
[root@k8s-m1 ~]# setenforce 0

 4. 禁用swap,默认情况下系统的swap都是打开的。

# 我在自己电脑上创建的虚拟机做的实验,资源有限,这里就不禁用swap了。emmmm....禁用命令如下:
[root@k8s-m1 ~]# swapoff -a
# 上面只是临时生效,永久生效把fstab文件中所有的swap条目注释掉。
[root@k8s-m1 ~]# cat /etc/fstab | grep swap
#UUID=0226cdc9-a352-4779-bffb-13e6b794e98b swap                    swap    defaults        0 0

 5. 设置开机自动启用ipvs内核模块
  Node节点中的kube-proxy支持iptables和ipvs两种模式。从v1.2版本开始,iptables就作为kube-proxy的默认操作模式,v1.8引入了ipvs模式,v1.11可以正式使用。iptables和ipvs都是基于netfilter安全框架,相比iptables来说,ipvs能够为大型集群提供了更好的扩展性和性能,并且可以支持更加复杂的负载均衡算法。ipvs依赖于iptables,咱先把准备工作做好,用不用再说。

vim /etc/sysconfig/modules/ipvs.modules
#!/bin/bash

ipvs_dir=‘/usr/lib/modules/`uname -r`/kernel/net/netfilter/ipvs‘
for m in `ls $ipvs_dir | grep -o ^[^.]*`
do
  /sbin/modinfo -F filename $m &>/dev/null
  if [ $? -eq 0 ];then
    /sbin/modprobe $m
  fi
done
# 加载模块的脚本先写好,放在开机自动加载的modules目录中,但是先不要给执行权限,咱现在还用不到。

 6. 配置免密传输文件。此步骤可选,我为了拷贝东西方便。

[root@k8s-m1 ~]# cd /server/scripts/
[root@k8s-m1 scripts]# yum -y install sshpass
[root@k8s-m1 scripts]# vim batch.sh
#!/bin/bash

rm -rf /root/.ssh/id_dsa*
ssh-keygen -t dsa -f /root/.ssh/id_dsa -P ‘‘ -q

for ip in $*
do
  sshpass -p 123456 ssh-copy-id -i /root/.ssh/id_dsa.pub -o StrictHostKeyChecking=no 10.0.0.$ip &>/dev/null
  echo -e "
33[32m-----主机10.0.0.$ip公钥分发完成-----33[0m
"
done
[root@k8s-m1 scripts]# sh batch.sh 20 21 22
[root@k8s-m1 scripts]# cd
  • 安装程序(所有节点)

 1. 安装docker

[root@k8s-m1 ~]# wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@k8s-m1 ~]# yum -y install docker-ce
# docker自1.13版本起,启动后会默认会把防火墙的FORWARD策略改为DROP,这可能会影响k8s集群的报文转发功能,所以我们需要将FORWARD链的默认策略改为ACCEPT。
[root@k8s-m1 ~]# vim /usr/lib/systemd/system/docker.service。
ExecStartPost=/usr/sbin/iptables -P FORWARD ACCEPT  # 当docker启动后额外执行此条命令。此行加到ExecStart行下面。
[root@k8s-m1 ~]# systemctl daemon-reload
[root@k8s-m1 ~]# systemctl start docker
[root@k8s-m1 ~]# systemctl enable docker
# 使用docker info命令有报告警信息,这里如若放任不管,后面集群初始化和node节点加入集群都会报错。
[root@k8s-m1 ~]# docker info
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled
# 使用下面命令可以看到这俩个参数我们确实没有开启
[root@k8s-m1 ~]# sysctl -a | grep bridge
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
[root@k8s-m1 ~]# vim /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
[root@k8s-m1 ~]# sysctl -p /etc/sysctl.d/k8s.conf 
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1

 2. 配置k8s的yum仓库,并安装相关程序。仓库的配置方法可以在阿里云镜像仓库上的kubernetes目录的帮助中查看。

# 阿里云镜像站的Kubernetes项目下el7目录中只有一个repodata,这种方式表明里面的程序包是按照当前状态构建生成的,不能够直接下载,只能本地配置yum仓库。
[root@k8s-m1 ~]# vim /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
[root@k8s-m1 ~]# yum makecache
[root@k8s-m1 ~]# yum -y install kubeadm-1.15.2 kubectl-1.15.2 kubelet-1.15.2
[root@k8s-m1 ~]# systemctl start kubelet.service
[root@k8s-m1 ~]# systemctl enable kubelet.service
  • 修改配置并初始化集群(master节点)

 1. 修改配置文件,即便检测到swap没有禁用,也不报错。

root@k8s-m1 ~]# vim /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--fail-swap-on=false"

 2. kubeadm命令使用

[root@k8s-m1 ~]# kubeadm --help
Usage:
  kubeadm [command]
Available Commands:
  alpha            # 处于测试中不太完善的命令
  config            # 显示当前配置
  init                 # 初始化集群
  join                # 各Node节点加入集群中时使用
  reset              # 每个节点都可以用,把配置还原到最初始的状态。
  upgrade         # 升级集群的版本。
# print参数也是有子命令的,使用下面命令可以查看集群初始化时的预设配置,其中一些与我们真实环境不匹配,可以在初始化时手动指定修改。
[root@k8s-m1 ~]# kubeadm config print init-defaults     # 下面只截取部分配置
imageRepository: k8s.gcr.io         # 默认加载镜像的仓库,需要梯子才能访问,如果知道国内别的仓库有需要的镜像,初始化时可以手动指定仓库地址。
kind: ClusterConfiguration
kubernetesVersion: v1.15.2          # k8s版本,这是初始化会加载的配置,如果与你预期的版本不符,自行修改。
networking:
  dnsDomain: cluster.local
  serviceSubnet: 10.96.0.0/12       # Service网络默认地址。
scheduler: 
# 至于Pod网络,k8s只提供了CNI,真正实现网络通信,需要借助第三方插件,如flannel、calico,两者都蛮火的,不过它们的默认网络地址不同。flannel的默认地址是10.244.0.0/16,calico的默认地址是192.168.0.0/16。如果不使用默认地址,则在部署网路插件时指定的网络地址要与k8s部署时指定的Pod网络地址一致。

 3. 拉取镜像,并进行k8s集群初始化

# 使用命令行参数。指定kubernetes版本与前面下载kubeadm等程序版本一致;使用flannel插件,所以先指定网络地址;指定忽略Swap的错误检查,注意大小写;最后使用--dry-run参数测试能否执行成功
[root@k8s-m1 ~]# kubeadm init --kubernetes-version="v1.15.2" --pod-network-cidr="10.244.0.0/16" --ignore-preflight-errors=Swap --dry-run
[root@k8s-m1 ~]# echo $?
0
# 测试是没有问题的,因为还么有开始拉镜像,如果去掉--dry-runde参数执行,就会报如下错误:访问不了gcr.io。
[ERROR ImagePull]: failed to pull image k8s.gcr.io/kube-apiserver:v1.15.2: output: Error response from daemon: Get https://k8s.gcr.io/v2/: proxyconnect tcp: dial tcp 218.255.73.143:80: connect: connection refused, error: exit status 1
# 前面说过,kubeadm部署的k8s需要用到的镜像有一部分在k8s.gcr.io上,因为某种不可描述的原因导致我们拉取不到,所以只能找找国内的资源,可以先看看kubeadm需要哪些镜像。
[root@k8s-m1 ~]# kubeadm config images list
W0812 14:25:08.711840    4589 version.go:98] could not fetch a Kubernetes version from the internet: unable to get URL "https://dl.k8s.io/release/stable-1.txt": Get https://dl.k8s.io/release/stable-1.txt: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)   # 访问不到grc.io
W0812 14:25:08.711926    4589 version.go:99] falling back to the local client version: v1.15.2  # 本地客户端版本
k8s.gcr.io/kube-apiserver:v1.15.2
k8s.gcr.io/kube-controller-manager:v1.15.2
k8s.gcr.io/kube-scheduler:v1.15.2
k8s.gcr.io/kube-proxy:v1.15.2
k8s.gcr.io/pause:3.1
k8s.gcr.io/etcd:3.3.10
k8s.gcr.io/coredns:1.3.1
# 手动下载镜像,然后修改tag
[root@k8s-m1 ~]# docker pull mirrorgooglecontainers/kube-apiserver:v1.15.2
[root@k8s-m1 ~]# docker pull mirrorgooglecontainers/kube-controller-manager-amd64:v1.15.2
[root@k8s-m1 ~]# docker pull mirrorgooglecontainers/kube-scheduler-amd64:v1.15.2
[root@k8s-m1 ~]# docker pull mirrorgooglecontainers/kube-proxy:v1.15.2
[root@k8s-m1 ~]# docker pull mirrorgooglecontainers/pause:3.1
[root@k8s-m1 ~]# docker pull mirrorgooglecontainers/etcd:3.3.10
[root@k8s-m1 ~]# docker pull coredns/coredns:1.3.1
[root@k8s-m1 ~]# docker tag mirrorgooglecontainers/kube-apiserver:v1.15.2 k8s.gcr.io/kube-apiserver:v1.15.2
[root@k8s-m1 ~]# docker tag mirrorgooglecontainers/kube-controller-manager-amd64:v1.15.2 k8s.gcr.io/kube-controller-manager:v1.15.2
[root@k8s-m1 ~]# docker tag mirrorgooglecontainers/kube-scheduler-amd64:v1.15.2 k8s.gcr.io/kube-scheduler:v1.15.2
[root@k8s-m1 ~]# docker tag mirrorgooglecontainers/kube-proxy:v1.15.2 k8s.gcr.io/kube-proxy:v1.15.2
[root@k8s-m1 ~]# docker tag mirrorgooglecontainers/pause:3.1 k8s.gcr.io/pause:3.1
[root@k8s-m1 ~]# docker tag mirrorgooglecontainers/etcd:3.3.10  k8s.gcr.io/etcd:3.3.10
[root@k8s-m1 ~]# docker tag coredns/coredns:1.3.1 k8s.gcr.io/coredns:1.3.1
# 删除掉不用的镜像,最终如下:
[root@k8s-m1 ~]# docker images
REPOSITORY                           TAG                 IMAGE ID            CREATED             SIZE
k8s.gcr.io/kube-apiserver            v1.15.2             34a53be6c9a7        6 days ago          207MB
k8s.gcr.io/kube-proxy                v1.15.2             167bbf6c9338        6 days ago          82.4MB
k8s.gcr.io/kube-scheduler            v1.15.2             38d61dd6e105        3 weeks ago         81.1MB
k8s.gcr.io/kube-controller-manager   v1.15.2             575346c7506b        3 weeks ago         159MB
k8s.gcr.io/coredns                   1.3.1               eb516548c180        7 months ago        40.3MB
k8s.gcr.io/etcd                      3.3.10              2c4adeb21b4f        8 months ago        258MB
k8s.gcr.io/pause                     3.1                 da86e6ba6ca1        19 months ago       742kB
# 开始执行初始化操作。如果初始化出错,可以使用kubeadm reset命令删除初始化过程产生的文件,重置到初始状态。
[root@k8s-m1 ~]# kubeadm init --kubernetes-version="v1.15.2" --pod-network-cidr="10.244.0.0/16" --service-cidr="10.96.0.0/12" --apiserver-advertise-address="0.0.0.0" --ignore-preflight-errors=Swap
Your Kubernetes control-plane has initialized successfully!

To start using your cluster, you need to run the following as a regular user:        # 以普通用户执行下面命令

  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

You should now deploy a pod network to the cluster.            # 提示需要安装网络插件
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join 192.168.2.124:6443 --token a6o1sb.30kajnbrq83qnr8r     --discovery-token-ca-cert-hash sha256:f46d7a79ec6e939c44a4c0425c892fa9ee816012ef2f675ac36002b2473210e3        # Node节点加入集群的命令,注意保存。
# 此处为了方便就直接用root用户进行操作了。
[root@k8s-m1 ~]# mkdir -p $HOME/.kube
[root@k8s-m1 ~]# cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@k8s-m1 ~]# chown $(id -u):$(id -g) $HOME/.kube/config     # 管理员下此步骤可省略
# 查看集群当前的状态
[root@k8s-m1 ~]# kubectl get cs
NAME                 STATUS    MESSAGE             ERROR
controller-manager   Healthy   ok                  
scheduler            Healthy   ok                  
etcd-0               Healthy   "health":"true"
# 查看集群版本
[root@k8s-m1 ~]# kubectl version --short=true
Client Version: v1.15.2
Server Version: v1.15.2
# 查看集群信息
[root@k8s-m1 ~]# kubectl cluster-info
Kubernetes master is running at https://192.168.2.124:6443
KubeDNS is running at https://192.168.2.124:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

To further debug and diagnose cluster problems, use ‘kubectl cluster-info dump‘.
# config的配置文件是一定要有的,没有的话,kubectl get nodes命令就执行不了,注意配置文件一定不能泄露。node上也有此命令,但是不能执行get的操作,因为apiserver监听在master的6443的端口,除非你master节点的配置文件拷贝到node上,否则node执行kubectl get nodes就只会找本机的8080,这是没有结果的。
[root@k8s-m1 ~]# netstat -lntp | grep -i apiserve
tcp6       0      0 :::6443                 :::*                    LISTEN      16341/kube-apiserve
[root@k8s-m1 ~]# kubectl config view | grep server
    server: https://192.168.2.124:6443
[root@k8s-n1 ~]# kubectl get nodes
The connection to the server localhost:8080 was refused - did you specify the right host or port?
# 现在只有一个master节点,状态是未就绪,需要部署网络插件。
[root@k8s-m1 ~]# kubectl get nodes
NAME       STATUS     ROLES    AGE   VERSION
k8s-m1   NotReady   master   18m   v1.15.2

 4. 部署flannel网络插件,部署的命令在GitHub页面搜索"Deploying flannel manually"就可以找到。

[root@k8s-m1 ~]# kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
# 安装完看下Pod的运行状态
[root@k8s-m1 ~]# kubectl get pods
No resources found.
# 没有找到是因为集群本身是被划分为多个名称空间的, kubectl get pods命令默认查的是default名称空间
[root@k8s-m1 ~]# kubectl get ns
NAME              STATUS   AGE
default           Active   14m
kube-node-lease   Active   15m
kube-public       Active   15m
kube-system       Active   15m
# 使用-n的参数指定查找名称空间下的Pod。flannel插件到running的状态取决于网速
[root@k8s-m1 ~]# kubectl get pods -n kube-system
NAME                             READY   STATUS    RESTARTS   AGE
coredns-5c98db65d4-mzw28         1/1     Running   0          14m
coredns-5c98db65d4-zl5cs         1/1     Running   0          14m
etcd-k8s-m1                      1/1     Running   0          13m
kube-apiserver-k8s-m1            1/1     Running   0          13m
kube-controller-manager-k8s-m1   1/1     Running   0          13m
kube-flannel-ds-amd64-qd5js      1/1     Running   0          112s
kube-proxy-9p5qd                 1/1     Running   0          14m
kube-scheduler-k8s-m1            1/1     Running   0          13m
[root@k8s-m1 ~]# kubectl get nodes
NAME     STATUS   ROLES    AGE   VERSION
k8s-m1   Ready    master   15m   v1.15.2
# 这些组件都是以Pod的方式启动,可以查看本机启动的容器,名字都是以Pod开头的。
[root@k8s-m1 ~]# docker ps -a
  • 配置Node节点加入到k8s集群(所有Node节点)

 1. 修改配置文件。

root@k8s-n1 ~]# vim /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--fail-swap-on=false"

 2. node节点加入集群时,也是需要容器方式启动一些组件的,这里你就直接从k8s-m1导出再导入到node节点。

 

技术图片技术图片技术图片技术图片技术图片技术图片技术图片技术图片技术图片技术图片技术图片技术图片

k8s部署环境(代码片段)

k8s部署环境公有云环境:AWS、腾讯云、阿里云等等私有云:OpenStack、vSphere等Baremetal环境:物理服务器或独立虚拟机(底层没有云环境)。  k8s部署方式Minikube:Kubernetes官网提供的微型分布式环境,适合学习、初次体验,... 查看详情

k8s环境之cicd部署+远程触发(代码片段)

一、jenkinsci构建defcreateVersion()returnnewDate().format('yyyyMMddHHmmss')pipelineagentanyenvironment_version=createVersion()parametersgitParameterbranchFilter:'origin/(.*)',defaultVa 查看详情

k8s环境快速部署kafka(k8s外部可访问)(代码片段)

欢迎访问我的GitHub如何快速部署借助Helm,只需少量操作即可部署kafka;kafka和zookeeper对存储都有需求,若提前准备了StorageClass,存储一事则变得十分简单环境信息本次实战的操作系统和软件的版本信息如下:Kubernetes:1.15Kubernetes... 查看详情

k8s集群中部署jenkins(代码片段)

本文介绍在k8s环境中进行jenkinsserver的部署和配置。Jenkins是一个开源的、功能强大的持续集成和持续构建工具,采用master和salve架构,我们通过将jenkins集成环境部署在k8s集群中,可以实现jenkinsslave按需创建、动态的伸缩。同时也... 查看详情

微服务架构-离线部署k8s平台并部署测试实例(代码片段)

一般在公司部署或者真实环境部署k8s平台,很有可能是内网环境,也即意味着是无法连接互联网的环境,这时就需要离线部署k8s平台。在此整理离线部署k8s的步骤,分享给大家,有什么不足之处,欢迎指正。1、准备环境这次离... 查看详情

k8s高可用环境部署-1.17.3版本(代码片段)

准备在开始部署k8s高可用集群时,请先参考k8s高可用环境部署系统准备操作系统兼容性环境说明集群部署前系统环境装备,请参考k8s高可用环境部署系统准备.md本次高可用集群基本参照官网步骤进行部署,官网给出了两种拓扑结... 查看详情

k8s的项目部署(代码片段)

k8s的项目部署k8s的项目部署开发阶段持续集成应用部署运维k8s中部署Java项目的流程k8s中部署Java项目制作镜像推送镜像部署镜像暴露应用k8s的项目部署开发阶段●编写代码。●测试。●编写Dockerfile。持续集成●代码编译、打包。... 查看详情

k8s1.8.2部署实践(代码片段)

由于业务需要,近期在研究k8s,故就需要先部署一套。我通过官方文档来部署发现还是有一些坑,故整理了部署中遇到的问题做个记录。本文章主要介绍了在centos7环境下k8s1.8.2+dashboard+metricsserver+ingress的部署。系统环境1,k8s的版... 查看详情

猿创征文|国产数据库之在k8s环境下部署radondbmysql集群(代码片段)

猿创征文|国产数据库之在k8s环境下部署RadonDBMySQL集群一、RadonDBMySQL介绍1.RadonDBMySQL简介2.RadonDBMySQL的应用场景3.RadonDBMySQL核心功能4.RadonDBMySQL架构图二、检查本地k8s环境1.检查k8s节点状态2.检查helm版本三、添加helm仓库1.添加helm仓库... 查看详情

kubeadm部署k8s集群(代码片段)

Kubeadm部署k8s一.环境准备二.所有节点安装docker三.所有节点安装kubeadm,kubelet和kubectl四.部署K8S集群五.安装dashboard六.安装Harbor私有仓库七.内核参数优化方案一.环境准备master(2C/4G,cpu核心数要求大于2) 192.168.116.60... 查看详情

kubeadm部署k8s集群(代码片段)

Kubeadm部署k8s一.环境准备二.所有节点安装docker三.所有节点安装kubeadm,kubelet和kubectl四.部署K8S集群五.安装dashboard六.安装Harbor私有仓库七.内核参数优化方案一.环境准备master(2C/4G,cpu核心数要求大于2) 192.168.116.60... 查看详情

(企业环境部署)k8s多节点部署——负载均衡——ui页面(代码片段)

企业环境部署)K8S多节点部署——负载均衡——UI页面需要准备的环境:6台centos7设备:192.168.136.167master01192.168.136.168node1192.168.136.169node2192.168.136.170master02192.168.136.171lb1192.168.136.172lb2VIP:192.168.1.100实验步骤:1:自签ETCD证书2:ETCD部署3... 查看详情

kubectl源码分析之convert(代码片段)

发布一个k8s部署视频:https://edu.csdn.net/course/detail/26967课程内容:各种k8s部署方式。包括minikube部署,kubeadm部署,kubeasz部署,rancher部署,k3s部署。包括开发测试环境部署k8s,和生产环境部署k8s。腾讯课堂连接地址https://ke.qq.com/cou... 查看详情

持续集成之应用k8s自动部署(代码片段)

原文:持续集成之应用k8s自动部署持续集成之应用k8s自动部署Intro上次我们提到了docker容器化及自动化部署,这仅仅适合个人项目或者开发环境部署,如果要部署到生产环境,必然就需要考虑很多因素,比如访问量大了如何调整部... 查看详情

k8s部署——kubeadm(代码片段)

目录部署环境一.环境准备1.关闭防火墙,SELinux,Swap分区2.加载ip_vs模块3.修改主机名4.修改hosts文件5.调整内核参数二.所有节点安装docker三.所有节点安装kubeadm,kubelet和kubectl四.部署K8S集群1.上传压缩包2.复制镜像和脚本... 查看详情

k8s部署——kubeadm(代码片段)

目录部署环境一.环境准备1.关闭防火墙,SELinux,Swap分区2.加载ip_vs模块3.修改主机名4.修改hosts文件5.调整内核参数二.所有节点安装docker三.所有节点安装kubeadm,kubelet和kubectl四.部署K8S集群1.上传压缩包2.复制镜像和脚本... 查看详情

docker&k8s---通过kubeadm快速部署k8s(代码片段)

文章目录Docker&K8s---通过kubeadm快速部署K8s环境准备环境初始化开始安装安装docker添加kubernetes的yum软件源安装kubeadm,kubelet和kubectl部署KubernetesMaster节点加入集群安装网络插件测试Kubernetes集群在从节点上也可以使用kubectl其他错误... 查看详情

单机版的k8s环境搭建及部署javaweb应用demo(代码片段)

...面书里看到,这里单独拿出整理一下。一般都是集群部署,学习K8s有时候感觉太重了,不知道怎么下手:这里通过博文对希望对K8S有个初步认识。博文内容包括:K8s环境单机版搭建Tomcat+mysql一个简单的JavaWeb... 查看详情