k8s-docker方式创建集群

本文详细介绍如何从零开始搭建Kubernetes集群,包括安装Docker、配置阿里云镜像加速、安装cri-dockerd、集群初始化、添加Worker节点及安装网络插件等步骤。

以下操作不明确声明,在三个节点上都要执行。

1.  安装docker:

## 切换镜像源:
[root@master ~]# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker
-ce.repo -O /etc/yum.repos.d/docker-ce.repo

## 查看当前镜像源中支持的docker版本:
[root@master ~]# yum list docker-ce --showduplicates

## 安装最新版docker:
[root@master ~]# yum install docker-ce -y

## 使用阿里云的镜像加速:
[root@master ~]# mkdir /etc/docker

[root@master ~]# vim /etc/docker/daemon.json

{
  "registry-mirrors": ["https://t2alg15i.mirror.aliyuncs.com"]
}

## 启动docker:
[root@master ~]# systemctl restart docker
[root@master ~]# systemctl enable docker

## 检查docker状态和版本:
[root@master ~]# docker version 

2.  cri-dockerd安装:

## 下载cri-dockerd:
[root@master ~]# wget https://github.com/Mirantis/cri-dockerd/releases/
download/v0.2.3/cri-dockerd-0.2.3-3.el7.x86_64.rpm

## 安装cri-dockerd:
[root@master ~]# yum localinstall cri-dockerd-0.2.3-3.el7.x86_64.rpm 

## 修改cri-dockerd启动文件:
[root@master ~]# vim /usr/lib/systemd/system/cri-docker.service 

ExecStart=/usr/bin/cri-dockerd --network-plugin=cni --pod-infra-container-
image=registry.aliyuncs.com/google_containers/pause:3.7

## 启动cri-docker
[root@master ~]# systemctl daemon-reload 
[root@master ~]# systemctl start cri-docker
[root@master ~]# systemctl enable cri-docker
[root@master ~]# systemctl status cri-docker

3.  集群初始化,只在Master执行

[root@master ~]# kubeadm init --kubernetes-version=v1.24.2 --pod-network-cidr
=10.224.0.0/16 --apiserver-advertise-address=192.168.188.113 --cri-socket unix:///var/run/cri-dockerd.sock --image-repository registry.aliyuncs.com/
google_containers

[root@master ~]# mkdir -p $HOME/.kube

[root@master ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

[root@master ~]# sudo chown $(id -u):$(id -g) $HOME/.kube/config

[root@master ~]# export KUBECONFIG=/etc/kubernetes/admin.conf

4.  添加Worker节点,只在Worker执行

[root@slave1 ~]# kubeadm join 192.168.188.113:6443 --token tt1q1q.4k0ixby2h0x9j8sd \
> --discovery-token-ca-cert-hash sha256:14d31a879eea93c88c677a94c4bf3e3f19301b87a2ed4fd74a661eea8f096f1a 
--cri-socket unix:///var/run/cri-dockerd.sock

注意:加入集群是需要添加: " --cri-socket unix:///var/run/cri-dockerd.sock "。

5.  安装网络插件,只在Matser执行

[root@master ~]# wget http://down.i4t.com/k8s1.24/kube-flannel.yml

[root@master ~]# kubectl apply -f kube-flannel.yml

6.  验证集群是否部署成功,也可以只在Matser执行

## 验证,等待状态都是Runing即可:
[root@master ~]# kubectl get pod -n kube-system
NAME                             READY   STATUS     RESTARTS   AGE
coredns-74586cf9b6-2pj9r         0/1     Pending    0          5m14s
coredns-74586cf9b6-thv9n         0/1     Pending    0          5m14s
etcd-master                      1/1     Running    0          5m27s
kube-apiserver-master            1/1     Running    0          5m27s
kube-controller-manager-master   1/1     Running    0          5m27s
kube-flannel-ds-b2jl9            0/1     Init:0/2   0          33s
kube-flannel-ds-hcbrj            0/1     Init:0/2   0          33s
kube-flannel-ds-lngcj            0/1     Init:1/2   0          33s
kube-proxy-hpb49                 1/1     Running    0          4m7s
kube-proxy-lh292                 1/1     Running    0          2m11s
kube-proxy-s6zrt                 1/1     Running    0          5m14s
kube-scheduler-master            1/1     Running    0          5m27s

## 查看指定pod的详细情况:
[root@master ~]# kubectl describe pod kube-flannel-ds-b2jl9 -n kube-system

## 查看集群状态:
[root@master ~]# kubectl get nodes
NAME     STATUS   ROLES           AGE     VERSION
master   Ready    control-plane   7m15s   v1.24.2
slave1   Ready    <none>          5m51s   v1.24.2
slave2   Ready    <none>          3m55s   v1.24.2

### 配置和使用 Docker Desktop 中的 Kubernetes #### 启用 Kubernetes 功能 为了在 Docker Desktop 上启用 Kubernetes 支持,在设置选项中的 Kubernetes 页面勾选 "Enable Kubernetes" 复选框即可[^1]。 #### 创建 Pod 和部署应用 一旦启用了该功能,可以通过命令行工具 `kubectl` 来管理集群资源。例如要启动一个新的 Redis 实例作为 Pod 的一部分,则可以执行如下指令: ```bash kubectl create deployment redis --image=redis ``` 这会创建一个名为 'redis' 的 Deployment 对象来运行指定镜像版本的应用程序实例,并自动将其封装在一个 Pod 内部[^4]。 #### 访问服务 为了让外部能够访问到内部的服务,还需要暴露端口给公网或者其他组件调用。比如下面这条语句就可以把本地机器上的 80 端口映射到目标容器内的相应位置上: ```bash kubectl expose deployment redis --type=LoadBalancer --port=6379 ``` 这里定义了一个 Load Balancer 类型的服务对象关联到了前面提到的那个 Redis 应用之上;同时指定了对外提供服务的具体协议端口号(即默认情况下 Redis 使用的是 TCP/6379)。注意实际环境中可能会涉及到防火墙规则调整等问题。 #### 查看状态信息 最后如果想要获取当前整个系统的概览视图的话,那么不妨试试这个简单的查询操作: ```bash kubectl get all ``` 上述命令将会返回所有正在活动的对象列表,包括但不限于 Pods、Services 或者 Deployments 等等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值