Saya mencoba menyiapkan cluster kubernetes node tunggal untuk tujuan demo dan pengujian, dan saya ingin cluster tersebut berperilaku seperti cluster k8s yang 'penuh sesak' (seperti mesin kontainer Google). Klien saya memiliki instalasi k8s sendiri, yang untuk diskusi ini kita dapat mengasumsikan tindakannya mirip dengan instalasi k8s mesin kontainer Google.
Mendapatkan IP Ingress pada K8 Full Blown
Saya membuat pod wordpress dan memaparkannya sebagai layanan, seperti yang dijelaskan dalam tutorial ini: https://cloud.google.com/container-engine/docs/tutorials/hello-wordpress
Jika Anda ingin mereplikasi masalahnya, cukup salin tempel perintah di bawah ini, yang saya ambil dari tutorial: (Ini mengasumsikan Anda memiliki proyek bernama 'stellar-access-117903'.. jika tidak silakan setel ke nama Google Anda proyek Mesin Kontainer.)
# set up the cluster (this will take a while to provision)
#
gcloud config set project stellar-access-117903
gcloud config set compute/zone us-central1-b
gcloud container clusters create hello-world \
--num-nodes 1 \
--machine-type g1-small
# Create the pod, and expose it as a service
#
kubectl run wordpress --image=tutum/wordpress --port=80
kubectl expose rc wordpress --type=LoadBalancer
# Describe the service
kubectl describe services wordpress
Output dari perintah deskripsikan berisi baris 'LoadBalancer Ingress: {some-ip-address}' yang persis seperti yang saya harapkan. Sekarang, ketika saya melakukan hal yang sama dengan pengaturan cluster node tunggal saya tidak mendapatkan baris itu. Saya dapat mengakses layanan wordpress di IP yang muncul di output perintah 'deskripsikan layanan'.. Namun dalam mode 'single node', IP yang dicetak adalah >cluster IP‹ layanan, yang mana biasanya (seperti yang saya pahami) tidak dapat diakses publik. Untuk beberapa alasan, ini dapat diakses publik dalam mode node tunggal. Kita dapat menirunya dengan langkah-langkah berikut.
TIDAK Mendapatkan IP Ingress pada Single Node K8
Penyiapan pertama node tunggal k8s, seperti yang dijelaskan dalam tutorial ini: https://github.com/kubernetes/kubernetes/blob/master/docs/getting-started-guides/docker.md
Agar mudah direproduksi, saya telah menyertakan semua perintah di bawah ini, jadi Anda cukup menyalin/menempel:
K8S_VERSION=1.1.1
sudo docker run --net=host -d gcr.io/google_containers/etcd:2.0.12 /usr/local/bin/etcd --addr=127.0.0.1:4001 --bind-addr=0.0.0.0:4001 --data-dir=/var/etcd/data
sudo docker run \
--volume=/:/rootfs:ro \
--volume=/sys:/sys:ro \
--volume=/dev:/dev \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--volume=/var/lib/kubelet/:/var/lib/kubelet:rw \
--volume=/var/run:/var/run:rw \
--net=host \
--pid=host \
--privileged=true \
-d \
gcr.io/google_containers/hyperkube:v${K8S_VERSION} \
/hyperkube kubelet --containerized --hostname-override="127.0.0.1" --address="0.0.0.0" --api-servers=http://localhost:8080 --config=/etc/kubernetes/manifests
sudo docker run -d --net=host --privileged gcr.io/google_containers/hyperkube:v${K8S_VERSION} /hyperkube proxy --master=http://127.0.0.1:8080 --v=2
# set your context to use the locally running k8s API server
#
kubectl config set-cluster dev --server=http://localhost:8080
kubectl config set-context dev --cluster=dev --namespace=$NS
kubectl config use-context dev
Sekarang, jalankan perintah yang sama seperti yang Anda lakukan pada k8 Google Container Engine
# Create the pod, and expose it as a service
#
kubectl run wordpress --image=tutum/wordpress --port=80
kubectl expose rc wordpress --type=LoadBalancer
# Describe the service
kubectl describe services wordpress
Output dari perintah terakhir (yang akan Anda lihat tidak memiliki informasi 'Ingress') adalah:
Name: wordpress
Namespace: default
Labels: run=wordpress
Selector: run=wordpress
Type: LoadBalancer
IP: 10.0.0.61
Port: <unnamed> 80/TCP
NodePort: <unnamed> 31795/TCP
Endpoints: 172.17.0.30:80
Session Affinity: None
No events.
Di k8s mesin kontainer Google, saya melihat peristiwa seperti 'Membuat penyeimbang beban', 'Penyeimbang beban dibuat'. Tapi hal seperti itu tidak terjadi dalam contoh node tunggal.
Saya bertanya-tanya ... apakah ada konfigurasi yang perlu saya lakukan agar mereka berfungsi secara identik? Sangat penting bahwa mereka bekerja secara identik... hanya berbeda dalam skalabilitasnya, karena kami ingin menjalankan pengujian terhadap versi node tunggal, dan akan sangat membingungkan jika berperilaku berbeda.
Terima kasih sebelumnya atas bantuan Anda -chris