K8S环境安装

K8S环境

1. docker

移出docker相关的包:

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

配置yum源:

sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装docker:

# yum install -y docker-ce docker-ce-cli  containerd.io
yum install -y docker

基础环境

IP节点名称域名
10.1.2.111k8s-master-1master01.k8s.io
10.1.2.112k8s-master-2master02.k8s.io
10.1.2.113非节点,vip
10.1.2.180k8s-node-1
10.1.2.181k8s-node-2
10.1.2.182k8s-node-3
10.1.2.190k8s-harbor

修改节点名称

#各个机器设置自己的域名
hostnamectl set-hostname xxxx

//例如,在master机子中: hostnamectl set-hostname k8s-master
在node节点机子中:hostnamectl set-hostname k8s-node1

#并且在master上写虚拟机/etc/hosts文件

增加/etc/hosts

cat >> /etc/hosts << EOF
10.1.2.111 k8s-master-1 master01.k8s.io
10.1.2.112 k8s-master-2 master02.k8s.io
10.1.2.113 k8s-cluster-endpoint
10.1.2.180 k8s-node-1
10.1.2.181 k8s-node-2
10.1.2.182 k8s-node-3

EOF

复制到其他机器上

scp /etc/hosts root@10.1.2.112:/etc/hosts
scp /etc/hosts root@10.1.2.180:/etc/hosts
scp /etc/hosts root@10.1.2.181:/etc/hosts
scp /etc/hosts root@10.1.2.182:/etc/hosts

关闭selinux,swap(集群必须关闭),允许iptables检查桥接流量,必要的话还需要关闭防火墙

# 将 SELinux 设置为 permissive 模式(相当于将其禁用)
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

#关闭swap
swapoff -a  
sed -ri 's/.*swap.*/#&/' /etc/fstab

#允许 iptables 检查桥接流量
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF

cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sudo sysctl --system  # 生效


systemctl stop firewalld
systemctl disable firewalld

# 时间NTP同步

3. 安装k8s

cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
   http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
exclude=kubelet kubeadm kubectl
EOF


sudo yum install -y kubelet-1.20.9 kubeadm-1.20.9 kubectl-1.20.9 --disableexcludes=kubernetes

sudo systemctl enable --now kubelet

拉取必要的镜像

sudo tee ./images.sh <<-'EOF'
#!/bin/bash
images=(
kube-apiserver:v1.20.9
kube-proxy:v1.20.9
kube-controller-manager:v1.20.9
kube-scheduler:v1.20.9
coredns:1.7.0
etcd:3.4.13-0
pause:3.2
)
for imageName in ${images[@]} ; do
docker pull registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/$imageName
done
EOF
   

至此,k8s环境已经准备就绪,可以开始搭建集群。

5. 离线安装k8s

流程:

  1. 有多台虚拟机

  2. 操作系统初始化

  3. 为etcd和apiserver安装自签证书

  4. 部署ETCD存储集群

  5. 部署master组件
    docker,kube-apiserver,kube-controller-manager,kube-scheduler,etcd

  6. 部署node组件
    kube-proxy,kubelet,docker,etcd

  7. 部署集群网络

相对来说比较复杂,这里就不写了。

6. 调度策略

  1. 资源调度对节点调度的影像

  2. 节点选择器nodeSelector对pod的调度

通过节点选择器能够进行分组发布pod,实现灰度发布,这个过程需要给节点起一个label:

kubectl label node k8s-node1 env_role=dev

7. 节点亲和性满足(affinity)

  • 硬亲和性

  • 软亲和性

在这里插入图片描述

  1. 污点和污点容忍

可以通过

kubectl describe node k8s-master |grep Taint

在这里插入图片描述

8. k8s的一些基础名词

8.1 deployment

在这里插入图片描述

  • 在集群上管理和运行容器的对象

  • Pod通过controller实现应用的运维比如伸缩滚动升级等

  • Pod和Controller是通过label来维持关系的

deployment应用场景:

  1. 部署无状态应用
  2. 管理Pod和ReplicaSet
  3. 部署,滚动升级等功能
  4. 应用场景:web服务,微服务

可以通过命令生成yaml文件:

kubectl create deployment web --image=nginx --dry-run -o yaml > web.yaml

使用deployment部署应用

kubectl apply -f web.yaml

当然也有对外暴露的端口号,生成yaml:

kubectl expose deployment web --port=80 --type=NodePort --target-port=80 --name=web -o yaml > web.yaml  # 对外暴露端口,80到80

升级回滚:

# 从1.14.升级到1.15
kubectl set image deployment web nginx=nginx:1.15

# 查看升级版本
kubectl rollout status deployment web

# 查看历史版本
kubectl rollout history deployment web

# 回滚版本
kubectl rollout undo deployment web
kubectl rollout undo deployment web --to-reversion=2

弹性伸缩

kubectl scale deployment web --replicas=10  # 增加十个副本

8.2 service

在这里插入图片描述

  1. 防止pod失联

  2. 定义一组Pod的访问策略,就是负载均衡

  3. service是通过label和selector,进行与Pod的关系的

  4. service本身也会对外暴露一个VIP

service常用的字段

  • ClusterIP:集群内部ip使用

  • NodePort:对外访问应用使用

  • LoadBalancer:对外访问应用使用,主要是公有云的

外部怎么访问service呢?

一般可以用NodePort,当然也可以用LoadBalancer

8.3 StatefulSet

在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值