kubeadm安装k8s

kubeadm安装k8s

环境

节点IP
master192.168.82.210
node1192.168.82.220
node2192.168.82.221

部署 kubernetes master

添加yum(翻墙机的私有yum)

wget -O /etc/yum.repos.d/k8s.repo http://192.168.82.200/k8s.repo
参考Centos建立私有yum源

安装k8s

yum install kubelet kubeadm kubectl kubernetes-cni

安装docker

curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh -

systemctl enable docker
systemctl start docker

下载镜像 (通过翻墙机)

images=(kube-discovery-amd64:1.0 kube-scheduler-amd64:v1.5.0 kube-proxy-amd64:v1.5.0 kube-controller-manager-amd64:v1.5.0 kube-apiserver-amd64:v1.5.0 etcd-amd64:3.0.14-kubeadm pause-amd64:3.0 exechealthz-amd64:1.2  kubedns-amd64:1.9 kube-dnsmasq-amd64:1.4 dnsmasq-metrics-amd64:1.0)
for imageName in ${images[@]} ; do
  docker pull gcr.io/google_containers/$imageName
  docker tag   gcr.io/google_containers/$imageName 192.168.82.200:8080/tonychen/$imageName
  docker push 192.168.82.200:8080/tonychen/$imageName
done

参考私有docker register (Harbor)

启动 kubernetes

# 在启动kubelet之前我们需要先修改vi /etc/systemd/system/kubelet.service.d/10-kubeadm.conf,为kubelet添加一个额外的参数

// 这样kubelet就不会在启动pod的时候去墙外的k8s仓库拉取pause-amd64:3.0镜像了
--pod-infra-container-image=192.168.82.200:8080/tonychen/pause-amd64:3.0

Environment="KUBELET_INFRA_IMAGE=--pod-infra-container-image=192.168.82.200:8080/tonychen/pause-amd64:3.0"

ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_SYSTEM_PODS_ARGS $KUBELET_NETWORK_ARGS $KUBELET_DNS_ARGS $KUBELET_EXTRA_ARGS $KUBELET_INFRA_IMAGE

systemctl enable kubelet
systemctl start kubelet

创建集群

export KUBE_REPO_PREFIX=192.168.82.200:8080/tonychen \
         KUBE_DISCOVERY_IMAGE=192.168.82.200:8080/tonychen/kube-discovery-amd64:1.0 \
         KUBE_ETCD_IMAGE=192.168.82.200:8080/tonychen/etcd-amd64:3.0.14-kubeadm

kubeadm init --api-advertise-addresses=192.168.82.210 --pod-network-cidr=10.244.0.0/16  --use-kubernetes-version v1.5.0
# --pod-network-cidr=10.244.0.0/16  使用fannel网络必填 

记录 token

Kubernetes master initialised successfully!

You can now join any number of machines by running the following on each node:

kubeadm join --token=87b67c.5a5f0dc807248c75 192.168.82.210

检查 kubelet 状态

systemctl status kubelet

部署 flannel 网络

#下载镜像(翻墙机)
docker pull quay.io/coreos/flannel-git:v0.6.1-28-g5dde68d-amd64
docker tag quay.io/coreos/flannel-git:v0.6.1-28-g5dde68d-amd64 192.168.82.200:8080/tonychen/flannel-git:v0.6.1-28-g5dde68d-amd64
docker push 192.168.82.200:8080/tonychen/flannel-git:v0.6.1-28-g5dde68d-amd64

wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

# 修改yml中的image地址为私有库中地址
# 记得修改kube-flannel.yml中的name值,不然会不通哦
cni-conf.json: |
    {
      "name": "cni0",# 下载来的是cbr0,要改成cni0
      "type": "flannel",
      "delegate": {
        "isDefaultGateway": true
      }
    }


kubectl create -f kube-flannel.yml

部署 kubernetes node

添加yum(翻墙机的私有yum)

wget -O /etc/yum.repos.d/k8s.repo http://192.168.82.200/k8s.repo

安装k8s

yum install kubelet kubeadm kubectl kubernetes-cni

启动kubelet

# 在启动kubelet之前我们需要先修改vi /etc/systemd/system/kubelet.service.d/10-kubeadm.conf,为kubelet添加一个额外的参数

// 这样kubelet就不会在启动pod的时候去墙外的k8s仓库拉取pause-amd64:3.0镜像了
--pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/google-containers/pause-amd64:3.0

Environment="KUBELET_INFRA_IMAGE=--pod-infra-container-image=192.168.82.200:8080/tonychen/pause-amd64:3.0"

ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_SYSTEM_PODS_ARGS $KUBELET_NETWORK_ARGS $KUBELET_DNS_ARGS $KUBELET_EXTRA_ARGS $KUBELET_INFRA_IMAGE

systemctl enable kubelet
systemctl start kubelet

安装docker

阿里云加速安装

curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh -

systemctl enable docker
systemctl start docker

加入集群

# 要等master的 kube-dns 是running状态再执行
kubeadm join --token=c8c211.1f5ecf51c2e676c0 192.168.82.210


Running pre-flight checks
WARNING: kubelet service is not enabled, please run 'systemctl enable kubelet.service'
<util/tokens> validating provided token
<node/discovery> created cluster info discovery client, requesting info from "http://192.168.82.210:9898/cluster-info/v1/?token-id=c8c211"
<node/discovery> cluster info object received, verifying signature using given token
<node/discovery> cluster info signature and contents are valid, will use API endpoints [https://192.168.82.210:6443]
<node/bootstrap> trying to connect to endpoint https://192.168.82.210:6443
<node/bootstrap> detected server version v1.5.0
<node/bootstrap> successfully established connection with endpoint https://192.168.82.210:6443
<node/csr> created API client to obtain unique certificate for this node, generating keys and certificate signing request
<node/csr> received signed certificate from the API server:
Issuer: CN=kubernetes | Subject: CN=system:node:node1.k8s | CA: false
Not before: 2016-12-14 06:20:00 +0000 UTC Not After: 2017-12-14 06:20:00 +0000 UTC
<node/csr> generating kubelet configuration
<util/kubeconfig> created "/etc/kubernetes/kubelet.conf"

Node join complete:
* Certificate signing request sent to master and response
  received.
* Kubelet informed of new secure connection details.

Run 'kubectl get nodes' on the master to see this machine join.

查看集群状态

# master上执行
[root@master ~]# kubectl get nodes
NAME         STATUS    AGE
master.k8s   Ready     1h
node1.k8s    Ready     1m

设置 kubernetes(master中执行)

其他主机控制集群

# 备份master节点的 配置文件

/etc/kubernetes/admin.conf

# 保存至 其他电脑, 通过执行配置文件控制集群

kubectl --kubeconfig ./admin.conf get nodes

配置dashboard

# 翻墙机下载image
docker pull gcr.io/google_containers/kubernetes-dashboard-amd64:v1.5.0
docker tag gcr.io/google_containers/kubernetes-dashboard-amd64:v1.5.0 192.168.82.200:8080/tonychen/kubernetes-dashboard-amd64:v1.5.0
docker push 192.168.82.200:8080/tonychen/kubernetes-dashboard-amd64:v1.5.0

#下载 yaml 文件, 直接导入会去官方拉取images
curl -O https://rawgit.com/kubernetes/dashboard/master/src/deploy/kubernetes-dashboard.yaml

#编辑 yaml 改一下 imagePullPolicy,把 Always 改成 IfNotPresent(本地没有再去拉取) 或者 Never(从不去拉取) 即可

# 修改image为私有库地址

kubectl create -f ./kubernetes-dashboard.yaml

deployment "kubernetes-dashboard" created
service "kubernetes-dashboard" created

# 查看 NodePort ,既外网访问端口

kubectl describe svc kubernetes-dashboard --namespace=kube-system

NodePort:               <unset> 30609/TCP

# 访问 dashboard

http://192.168.82.210:30609/

参考资料:

  1. https://mritd.me/2016/10/29/set-up-kubernetes-cluster-by-kubeadm/
  2. http://www.xf80.com/2016/10/31/kubernetes-update-1.4.5/#hostname
### 回答1: 在CentOS系统中使用kubeadm安装Kubernetes 1.24版本的全部命令如下: 1. 安装必需的包和软件: ``` sudo yum install -y yum-utils device-mapper-persistent-data lvm2 ``` 2. 添加Kubernetes存储库: ``` sudo yum-config-manager --add-repo https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ ``` 3. 安装kubeadm、kubelet和kubectl: ``` sudo yum install -y kubeadm-1.24.0 kubelet-1.24.0 kubectl-1.24.0 ``` 4. 启动并启用kubelet服务: ``` sudo systemctl start kubelet && sudo systemctl enable kubelet ``` 5. 初始化集群: ``` sudo kubeadm init --kubernetes-version=1.24.0 --pod-network-cidr=10.244.0.0/16 ``` 6. 配置kubectl: ``` mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config ``` 7. 安装网络插件: ``` kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/2140ac876ef134e0ed5af15c65e414cf26827915/Documentation/kube-flannel.yml ``` 8. 加入节点: ``` kubeadm join <control-plane-host>:<control-plane-port> --token <token> --discovery-token-ca-cert-hash sha256:<hash> ``` 请注意,在实际使用时,您需要替换`<control-plane-host>`、`<control-plane-port>`、`<token>`和`<hash>`的值。 ### 回答2: 在CentOS系统中使用kubeadm安装Kubernetes 1.24版本需要执行以下步骤: 1. 确保系统已经安装CentOS操作系统并更新到最新版本。 2. 安装Docker,首先安装Docker的相关依赖: ``` sudo yum install -y yum-utils device-mapper-persistent-data lvm2 ``` 接下来,添加Docker的yum源并安装Docker: ``` sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo yum install -y docker-ce docker-ce-cli containerd.io ``` 启动Docker并设置为开机自启动: ``` sudo systemctl start docker sudo systemctl enable docker ``` 3. 安装kubeadm、kubelet和kubectl,添加Kubernetes的yum源: ``` sudo tee /etc/yum.repos.d/kubernetes.repo <<EOF [kubernetes] name=Kubernetes baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg exclude=kube* EOF ``` 安装kubeadm、kubelet和kubectl: ``` sudo yum install -y kubeadm-1.24.0 kubelet-1.24.0 kubectl-1.24.0 --disableexcludes=kubernetes ``` 启动kubelet并设置为开机自启动: ``` sudo systemctl start kubelet sudo systemctl enable kubelet ``` 4. 创建Kubernetes集群,首先选择一个主节点,执行以下命令初始化主节点: ``` sudo kubeadm init --pod-network-cidr=10.244.0.0/16 ``` 初始化完成后,根据输出的提示执行以下命令设置kubeconfig: ``` mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config ``` 安装网络插件(这里以Flannel为例): ``` kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml ``` 接下来,将其他节点加入集群,运行输出的`kubeadm join`命令即可。 通过以上步骤,在CentOS系统中使用kubeadm成功安装Kubernetes 1.24版本。 ### 回答3: 在CentOS系统上使用kubeadm安装Kubernetes 1.24版本,可以按照以下步骤操作: 1. 确保系统已经预先安装Docker,并且启动Docker服务。 ``` systemctl start docker systemctl enable docker ``` 2. 更新系统的软件包,并安装所需的依赖项。 ``` yum update yum install -y curl wget kubelet kubeadm kubectl ``` 3. 配置kubeadm使用国内镜像源,以提高下载速度。 ``` echo "KUBELET_EXTRA_ARGS=--image-repository=registry.aliyuncs.com/google_containers" > /etc/sysconfig/kubelet ``` 4. 初始化kubeadm并指定使用的版本。 ``` kubeadm init --kubernetes-version=1.24.0 ``` 5. 完成初始化后,根据kubeadm提供的输出信息执行以下命令,将kubectl与集群进行连接。 ``` mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config ``` 6. 部署Pod网络插件,以便集群中的Pod可以相互通信。 这里以Calico网络插件为例: ``` kubectl apply -f https://docs.projectcalico.org/v3.14/manifests/calico.yaml ``` 7. 等待一段时间,直到所有的节点状态都变为Ready。 ``` kubectl get nodes ``` 8. 完成上述步骤后,Kubernetes集群已经成功安装。 请注意,以上步骤仅适用于CentOS系统上使用kubeadm安装Kubernetes 1.24版本。具体版本号和网络插件可以根据需要进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值