第6周 作业 k8s部署

1 部署1master 3node四节点kubernetes集群。

1.1 环境准备

环境和软件版本
OS : ubuntu 20.04
container runtime: docker CE 20.10.22
kubernetes 1.24.17
CRI:cri-dockerd v0.3.3

修改hosts和主机名
192.168.1.180 k8s-master01.luohw.com k8s-master01 kubeapi.luohw.com
192.168.1.181 k8s-node01.luohw.com k8s-node01
192.168.1.183 k8s-node02.luohw.com k8s-node02
192.168.1.185 k8s-node03.luohw.com k8s-node03

关闭swap
注意:不修改主机名,后面部署网络插件后,节点pod通信会有问题

2.2 安装docker

所有节点使用阿里源安装docker

# step 1: 安装必要的一些系统工具
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
# step 2: 安装GPG证书
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
# Step 3: 写入软件源信息
sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
# Step 4: 更新并安装Docker-CE
sudo apt-get -y update
sudo apt-get -y install docker-ce

# 安装指定版本的Docker-CE:
# Step 1: 查找Docker-CE的版本:
# apt-cache madison docker-ce
#   docker-ce | 17.03.1~ce-0~ubuntu-xenial | https://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages
#   docker-ce | 17.03.0~ce-0~ubuntu-xenial | https://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages
# Step 2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.1~ce-0~ubuntu-xenial)
# sudo apt-get -y install docker-ce=[VERSION]

配置docker

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://2abfrd78.mirror.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
  "max-size": "200m"
},
"storage-driver": "overlay2"  
}
EOF
sudo systemctl daemon-reload
systemctl restart docker 

1.3 部署cri-docker

所有节点安装cri-docker

wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.3/cri-dockerd_0.3.3.3-0.ubuntu-focal_amd64.deb
dpkg -i  cri-dockerd_0.3.3.3-0.ubuntu-focal_amd64.deb

修改cri-docker service文件中pause镜像为阿里云镜像

vi /lib/systemd/system/cri-docker.service
ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint fd:// --network-plugin=cni  --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.7   --cni-bin-dir=/opt/cni/bin --cni-cache-dir=/var/lib/cni/cache --cni-conf-dir=/etc/cni/net.

1.4 安装kubeadm等

所有节点安装配置

apt-get update && apt-get install -y apt-transport-https
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add - 
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
apt-get update
apt install  kubelet=1.24.17-00 kubeadm=1.24.17-00  kubelet=1.24.17-00

配置kubelet

mkdir  /etc/sysconfig
cat > /etc/sysconfig/kubelet <<EOF
KUBELET_KUBEADM_ARGS="--container-runtime=remote --container-runtime-endpoint=/run/cri-dockerd.sock"
EOF

1.5 初始化master节点

查看所需要的镜像

 kubeadm config images list --kubernetes-version v1.24.17
registry.k8s.io/kube-apiserver:v1.24.17
registry.k8s.io/kube-controller-manager:v1.24.17
registry.k8s.io/kube-scheduler:v1.24.17
registry.k8s.io/kube-proxy:v1.24.17
registry.k8s.io/pause:3.6
registry.k8s.io/etcd:3.5.6-0
registry.k8s.io/coredns/coredns:v1.8.6

拉取镜像,指定阿里云镜像仓库
kubeadm config images pull --kubernetes-version v1.24.17 --cri-socket unix:///run/cri-dockerd.sock --image-repository=registry.aliyuncs.com/google_containers

初始化集群

kubeadm init \
        --control-plane-endpoint="kubeapi.luohw.com" \
        --kubernetes-version=v1.24.17 \
        --pod-network-cidr=10.244.0.0/16 \
        --service-cidr=10.96.0.0/12 \
        --token-ttl=0 \
        --cri-socket unix:///run/cri-dockerd.sock \
        --upload-certs

按照就提示拷贝config文件

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

1.6 部署网络插件flannel

https://github.com/flannel-io/flannel/

每个节点下载flanneld-amd64最新版放到/opt/bin 把-amd64去掉,并添加执行权限

https://github.com/flannel-io/flannel/releases/download/v0.22.2/flanneld-amd64
 mkdir /opt/bin/
 root@k8s-master01:~# cd /opt/bin/
root@k8s-master01:/opt/bin# ls
flanneld-amd64
root@k8s-master01:/opt/bin# mv flanneld-amd64  flannel
chmod  +x /opt/bin/flanneld 
 scp /opt/bin/flanneld  192.168.1.183:/opt/bin/

应用flannel,容器运行成功后,节点变为ready状态
kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml

1.7 添加node节点

kubeadm join kubeapi.luohw.com:6443 --token zeto9q.3f1tfb4v6hj8378w --discovery-token-ca-cert-hash sha256:7f635cd82075f0de5eb62280c1dcf36c436fa7f871fa186d398ee9bf81fd2f11 --cri-socket unix:///run/cri-dockerd.sock

添加node节点成功后查看所有节点都是ready状态
在这里插入图片描述

2 使用NFS做pod持久化存储。

2.1 部署nfs服务

apt install nfs-kernel-server -y
mkdir /data/test01  -p 
vi /etc/exports
/data/test01  192.168.1.0/24(rw,no_subtree_check,no_root_squash)

rw 表示挂载为可读写权限,客户端可以读取和写入到该目录。
no_subtree_check 表示不进行子目录检查,这允许客户端可以访问目录下的所有子目录而不进行额外的检查。
no_root_squash 表示以 root 身份运行的进程在客户端上享有与服务器上相同的权限,而不是被映射到匿名用户。

k8s node 节点验证nfs 列表
root@k8s-node01:~# showmount -e 192.168.1.180
Export list for 192.168.1.180:
/data/test01 192.168.1.0/24

2.2 部署pod使用nfs

编写yaml文件

root@k8s-master01:~/yaml# vi nginx-nfs-test.yaml
 cat nginx-nfs-test.yaml 
apiVersion: v1
kind: Pod
metadata: 
  name:  nginx-nfs-test
spec:
  containers:
  - name: nginx2
    image: nginx:1.22
    imagePullPolicy: IfNotPresent
    volumeMounts:
    - name: nfs-test
      mountPath: /data2
  volumes:
  - name: nfs-test
    nfs:
      server: 192.168.1.180
      path: /data/test01

应用yaml文件
root@k8s-master01:~/yaml# kubectl apply -f nginx-nfs-test.yaml
pod/nginx-nfs-test created

查看pod运行正常

kubectl get pods
nginx-nfs-test            1/1     Running   0             6m17s

进入容器看到挂载nfs成功

root@k8s-master01:~/yaml# kubectl exec  -it  nginx-nfs-test -- bash 
root@nginx-nfs-test:/# df -h 
Filesystem                  Size  Used Avail Use% Mounted on
overlay                     120G   11G  110G   9% /
tmpfs                        64M     0   64M   0% /dev
tmpfs                       971M     0  971M   0% /sys/fs/cgroup
192.168.1.180:/data/test01  120G   11G  110G   9% /data2
/dev/sda2                   120G   11G  110G   9% /etc/hosts
shm                          64M     0   64M   0% /dev/shm
tmpfs                       1.8G   12K  1.8G   1% /run/secrets/kubernetes.io/serviceaccount
tmpfs                       971M     0  971M   0% /proc/acpi
tmpfs                       971M     0  971M   0% /proc/scsi

在pod挂载点写入数据,nfs服务器可以查看到,nfs服务器写入数据,pod也能查看到
root@nginx-nfs-test:/data2# echo 222 > index.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值