使用kubeadm安装k8s集群及k8s使用

使用kubeadm安装k8s集群及k8s使用

目录
1概述 2
1.1 清单 2
1.2 角色组件 2
2.安装前准备 2
2.1设置系统主机名以及hosts文件 2
2.2修改hosts文件,master和node节点上都需要改 2
2.3 ssh互信 3
2.3设置防火墙为iptables并清空规则 3
2.4调整内核参数 3
3 安装k8s 4
3.1安装Docker 4
3.2安装k8s(每个节点都需要做) 7
3.2.1导入阿里云kubeadm镜像仓库 7
3.2.2 安装 7
3.2.3设置开机自启动 7
3.2.4初始化master节点 7
3.2.5成功安装之后的操作 8
3.2.6 node节点加入集群方法 9
3.2.7 验证k8s是否安装成功 9
4 K8s简单使用 9
4.1配置清单: 9
4.2 创建、查看pod 10
4.3 实战 10

1概述
1.1 清单

主机名IP地址
master.lab.example.com192.168.20.146
node.lab.example.com192.168.20.147

1.2 角色组件
Master:k8s集群的管理节点,负责管理集群,提供集群的资源数据访问入口。拥有Etcd存储服务(可选),运行Api Server进程,Controller Manager服务进程及Scheduler服务进程,关联工作节点Node。Kubernetes API server提供HTTP Rest接口的关键服务进程,是Kubernetes里所有资源的增、删、改、查等操作的唯一入口。也是集群控制的入口进程;Kubernetes Controller Manager是Kubernetes所有资源对象的自动化控制中心;Kubernetes Schedule是负责资源调度(Pod调度)的进程

Node:Node是Kubernetes集群架构中运行Pod的服务节点(亦叫agent或minion)。Node是Kubernetes集群操作的单元,用来承载被分配Pod的运行,是Pod运行的宿主机。关联Master管理节点,拥有名称和IP、系统资源信息。运行docker eninge服务,守护进程kunelet及负载均衡器kube-proxy.

每个Node节点都运行着以下一组关键进程
kubelet:负责对Pod对于的容器的创建、启停等任务
kube-proxy:实现Kubernetes Service的通信与负载均衡机制的重要组件
Docker Engine(Docker):Docker引擎,负责本机容器的创建和管理工作
2.安装前准备
2.1设置系统主机名以及hosts文件

master:	hostnamectl set-hostname master  
node: 		hostnamectl set-hostname node

2.2修改hosts文件,master和node节点上都需要改

192.168.20.146 master.lab.example.com 
192.168.20.147 node.lab.example.com

2.3 ssh互信
在master节点上操作

ssh-keygen   一路回车
ssh-copy-id  root@master.lab.example.com
ssh-copy-id  root@node.lab.example.com 

2.3设置防火墙为iptables并清空规则
以下操作master和node节点都要做

systemctl stop firewalld && systemctl disable firewalld && yum -y install iptables-services && \\  systemctl start iptables && systemctl enable iptables && iptables -F && service iptables save 

关闭SELINUX、SWAP

swapoff -a && sed  -i '/swap/d' /etc/fstab && setenforce 0 && sed -i 's/enforcing/SELINUX=disabled/g' /etc/selinux/config

2.4调整内核参数
以下操作master和node节点都要做

net.bridge.bridge-nf-call-ip6tables = 1  
net.bridge.bridge-nf-call-iptables = 1  
net.ipv4.ip_forward = 1  
net.ipv4.tcp_tw_recycle=0 
#禁止使用swap空间,只有当系统OOM时才允许使用它  
vm.swappiness = 0  
#不检查物理内存是否够用  
vm.overcommit_memory=1   
fs.inotify.max_user_instances=8192  
fs.inotify.max_user_watches=1048576  
fs.file-max=52706963  
fs.nr_open=52706963  
net.ipv6.conf.all.disable_ipv6=1

刷新修改内核参数

sysctl  -p

设置rsyslogd和systemd journald

mkdir /var/log/journal  
mkdir /etc/systemd/jorunald.conf.d  
cat > /etc/systemd/jorunald.conf.d/99-prophet.conf << EOF  
[Journal]  
Storage=persistent  
Compress=yes  
SyncIntervalSec=5m  
RateLimitInterval=30s  
RateLimitBurst=1000  
#最大占用空间  
SystemMaxUse=10G  
#单日志文件最大大小 
SystemMaxFileSize=200M  
#日志保存时间2周  
MaxRetentionSec=2week  
#不将日志转发到syslog  
ForwardToSyslog=no  
EOF 
systemctl restart systemd-journald 

kube-rpoxy开启ipvs的前置条件
modprobe br_netfilter

cat > /etc/sysconfig/modules/ipvs.modules << EOF  
#!/bin/bash  
modprobe --ip_vs  
modprobe --ip_vs_rr  
modprobe --ip_vs_wrr  
modprobe --ip_vs_sh  
modprobe --nf_conntrack_ipv4  
EOF
  chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules  && lsmod | grep -e ip_vs -e nf_conntrack_ipv4

3 安装k8s
以下步骤master和node节点都要做
3.1安装Docker

vim /etc/yum.repo.d/docker.repo
[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/$basearch/stable
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-stable-debuginfo]
name=Docker CE Stable - Debuginfo $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/debug-$basearch/stable
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-stable-source]
name=Docker CE Stable - Sources
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/source/stable
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-edge]
name=Docker CE Edge - $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/$basearch/edge
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-edge-debuginfo]
name=Docker CE Edge - Debuginfo $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/debug-$basearch/edge
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-edge-source]
name=Docker CE Edge - Sources
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/source/edge
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-test]
name=Docker CE Test - $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/$basearch/test
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-test-debuginfo]
name=Docker CE Test - Debuginfo $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/debug-$basearch/test
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-test-source]
name=Docker CE Test - Sources
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/source/test
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-nightly]
name=Docker CE Nightly - $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/$basearch/nightly
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-nightly-debuginfo]
name=Docker CE Nightly - Debuginfo $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/debug-$basearch/nightly
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-nightly-source]
name=Docker CE Nightly - Sources
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/source/nightly
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
yum install -y docker-ce

添加阿里镜像加速器,这里使用我自己的账号,如果在内网,镜像都加载到本机,这部可有可无

mkdir /etc/docker  
cat > /etc/docker/daemon.json << EOF  
{  
 "registry-mirrors": ["https://o9ofxrn0.mirror.aliyuncs.com"]  
}  
EOF
systemctl daemon-reload && systemctl start docker && systemctl enable docker  

3.2安装k8s(每个节点都需要做)
3.2.1导入阿里云kubeadm镜像仓库

cat > /etc/yum.repos.d/kubernetes.repo << EOF  
[kubernetes]  
name=Kubernetes  
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/  
enabled=1  
gpgcheck=1  
repo_gpgcheck=1  
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg  
EOF 

3.2.2 安装

yum -y install kubeadm kubectl kubelet

3.2.3设置开机自启动

systemctl enable kubelet.service 

3.2.4初始化master节点

kubeadm init --pod-network-cidr=10.244.0.0/16

这里注意下,如果你没有翻墙软件,那么这些基础镜像是下载不下来的,因此也不能够初始化,正如下图
在这里插入图片描述

如果你的网络现在可以上ins、Facebook这些网站,那你的这一步是没有问题的如下图
在这里插入图片描述

3.2.5成功安装之后的操作

mkdir -p $HOME/.kube # 该目录用于保存kubectl 和kubeapi的连接缓存以及认证文件  
 sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config  
 sudo chown $(id -u):$(id -g) $HOME/.kube/config

上面的成功安装信息已经提示我们需要这些步骤

2.2.6 部署网络

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

3.2.6 node节点加入集群方法

kubeadm join 192.168.20.146:6443 --token o0hp1b.oyl6q5n8zeugwo80 \
--discovery-token-ca-cert-hash sha256:5b207bab6f1091da3b8ae3cba4726b130fa4ea20b884e8e398a108dfce91a5cc 

上图成功安装信息中也有这样的信息,#token和cert hash需要修改为你的配置,可以在kubeadm-init.log 中找到

3.2.7 验证k8s是否安装成功

kubectl get nodes

在这里插入图片描述

kubectl get pods -n kube-system -o wide

在这里插入图片描述

4 K8s简单使用
4.1配置清单:
apiVersion: v1 指定api版本,此值必须在kubectl apiversion中
kind: Pod 类型,这里就没有容器的概念了,k8s是将容器封装成pod,pod里面可以跑多个容器
metadata: 元数据
name: pod-demo 起名
namespace: default 名称空间,这里我们可以使用kubectl get ns来查看我们可用的
labels: 标签
app: myapp
tier: frontend
spec:
containers:

  • name: myapp
    image: ikubernetes/myapp:v1 镜像名称
    4.2 创建、查看pod
kubectl create -f myapp.yml
kubectl get pods -o wide

此时我们就可以看到我们想看到一看网页前端的应用被部署到我的k8s集群中来了,关键还是镜像的制作,如果此时我需要升级应该怎么办?我们只需要更新我们的配置清单,也就是yml文件,将image的镜像修改掉,

这里有个疑问,我们pod的IP一直在改变,这里我们就要使用到calicoctl,open vswitch等知识点,这里就不一一说明了,比较复杂!
4.3 实战

apiVersion: apps/v1
kind: Deploy
metadata:
    name: myapp
spec:
    replicas: 2
    selector:
        matchLabels:
            app: myapp
    template:
        metadata:
            name: myapp-pod
            labels:
                app: myapp
        spec:
            containers:
            - name: myapp-container
              image: ikubernetes/myapp:v1
              ports:
              - name: http
                containerPort: 80
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值