单机安装新版Kubernetes,并且应用docker。
安装步骤
-
初始化
systemctl stop firewalld systemctl disable firewalld sed -i 's/enforcing/disabled/' /etc/selinux/config setenforce 0 swapoff -a sed -ri 's/.*swap.*/#&/' /etc/fstab cat >> /etc/hosts << EOF 192.168.200.182 master EOF cat > /etc/sysctl.d/k8s.conf << EOF net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF sysctl --system yum install -y ntpdate ntpdate time.windows.com shutdown -r now -
添加基础软件
-
添加阿里云
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=0 repo_gpgcheck=0 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF -
安装docker,如果安装过了,可以跳过
curl -s https://get.docker.com/ | sh mkdir /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "exec-opts": ["native.cgroupdriver=systemd"] } EOF systemctl enable docker systemctl start docker -
安装cri-docker
# 如果下得慢可以到github上先下好 wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.4/cri-dockerd-0.3.4-3.el7.x86_64.rpm rpm -ivh cri-dockerd-0.3.4-3.el7.x86_64.rpm vim /usr/lib/systemd/system/cri-docker.service ExecStart=/usr/bin/cri-dockerd --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.9 --container-runtime-endpoint fd:// systemctl start cri-docker systemctl enable cri-docker
-
-
安装kubernetes
yum install -y kubelet-1.28.2 kubeadm-1.28.2 kubectl-1.28.2 vim /etc/sysconfig/kubelet KUBELET_EXTRA_ARGS="--cgroup-driver=systemd" systemctl enable kubelet -
初始化kubernetes
# 准备所需要的镜像 kubeadm config images list --kubernetes-version=v1.28.2 # 从阿里云拉取镜像 kubeadm config images pull --image-repository registry.aliyuncs.com/google_containers --cri-socket=unix:///var/run/cri-dockerd.sock kubeadm init --apiserver-advertise-address=192.168.200.182 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.28.2 --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16 --cri-socket=unix:///var/run/cri-dockerd.sock mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config -
部署网络插件
# 下载网络插件 wget https://docs.projectcalico.org/v3.18/manifests/calico.yaml # 修改里面定义Pod网络(CALICO_IPV4POOL_CIDR),与前面kubeadm init的 --pod-network-cidr指定的一样。 - name: CALICO_IPV4POOL_CIDR value: "10.244.0.0/16" # 将 docker.io 替换 sed -i 's#docker.io/##g' calico.yaml kubectl apply -f calico.yaml -
如果以后想要将节点接入到master
kubeadm token create --print-join-command
注意最重要的部分
# 1. 先检查节点名称
[root@juejin kubernetes]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
juejin Ready control-plane 4m4s v1.28.2
# 2. 检查该节点污点
[root@juejin kubernetes]# kubectl describe node juejin|grep Taint
Taints: node-role.kubernetes.io/control-plane:NoSchedule
# 3. 去除该节点的污点
[root@juejin kubernetes]# kubectl taint node juejin node-role.kubernetes.io/control-plane-
node/juejin untainted
# 4. 再次检查污点
[root@juejin kubernetes]# kubectl describe node juejin|grep Taint
Taints: <none>
# 5. 查看 pod 状态, 会发现 STATUS 都变为 Running
kubectl get pod -A
# 接下来就可以单机玩kubernetes了
验证
# 创建部署
kubectl create deployment nginx --image=nginx:1.7.9
# 暴露端口
kubectl expose deployment nginx --port=80 --type=NodePort
# 查看pod以及服务信息
kubectl get pod,svc
[root@juejin kubernetes]# kubectl get pod,svc
NAME READY STATUS RESTARTS AGE
pod/nginx-54bbf55b54-dl9p8 1/1 Running 0 46s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 7m37s
service/nginx NodePort 10.110.120.18 <none> 80:32374/TCP 38s
[root@juejin kubernetes]# curl 192.168.200.182:32374
# 32374 为service/nginx的暴露端口