K8S环境安装

k8s-安装

  • K8S环境
    • 1. docker
    • 基础环境
    • 3. 安装k8s
    • 5. 离线安装k8s
    • 6. 调度策略
    • 7. 节点亲和性满足(affinity)
    • 8. k8s的一些基础名词
      • 8.1 deployment
      • 8.2 service
      • 8.3 StatefulSet

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.111 k8s-master-1 master01.k8s.io
10.1.2.112 k8s-master-2 master02.k8s.io
10.1.2.113 非节点,vip
10.1.2.180 k8s-node-1
10.1.2.181 k8s-node-2
10.1.2.182 k8s-node-3
10.1.2.190 k8s-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 [email protected]:/etc/hosts
scp /etc/hosts [email protected]:/etc/hosts
scp /etc/hosts [email protected]:/etc/hosts
scp /etc/hosts [email protected]:/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 <

3. 安装k8s

cat <

拉取必要的镜像

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)

  • 硬亲和性

  • 软亲和性

K8S环境安装_第1张图片

  1. 污点和污点容忍

可以通过

kubectl describe node k8s-master |grep Taint

K8S环境安装_第2张图片

8. k8s的一些基础名词

8.1 deployment

K8S环境安装_第3张图片

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

  • 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

K8S环境安装_第4张图片

  1. 防止pod失联

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

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

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

service常用的字段

  • ClusterIP:集群内部ip使用

  • NodePort:对外访问应用使用

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

外部怎么访问service呢?

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

8.3 StatefulSet

K8S环境安装_第5张图片

K8S环境安装_第6张图片

你可能感兴趣的:(kubernetes,容器,云原生)